package mux_test

import (
	"testing"

	. "v2ray.com/core/app/proxyman/mux"
	. "v2ray.com/ext/assert"
)

func TestSessionManagerAdd(t *testing.T) {
	assert := With(t)

	m := NewSessionManager()

	s := m.Allocate()
	assert(s.ID, Equals, uint16(1))
	assert(m.Size(), Equals, 1)

	s = m.Allocate()
	assert(s.ID, Equals, uint16(2))
	assert(m.Size(), Equals, 2)

	s = &Session{
		ID: 4,
	}
	m.Add(s)
	assert(s.ID, Equals, uint16(4))
}

func TestSessionManagerClose(t *testing.T) {
	assert := With(t)

	m := NewSessionManager()
	s := m.Allocate()

	assert(m.CloseIfNoSession(), IsFalse)
	m.Remove(s.ID)
	assert(m.CloseIfNoSession(), IsTrue)
}