package server import ( "testing" nnetproto "git.noahlan.cn/noahlan/nnet/v2/internal/protocol/nnet" "github.com/stretchr/testify/assert" ) func TestUnpackerManager_GetOrCreate_CachePerConn(t *testing.T) { m := newUnpackerManager() proto := nnetproto.NewNNetProtocol("1.0") u1 := m.getOrCreateUnpacker("c1", proto) assert.NotNil(t, u1) // Same connection should return same instance u2 := m.getOrCreateUnpacker("c1", proto) assert.Equal(t, u1, u2) // Different connection should get another instance u3 := m.getOrCreateUnpacker("c2", proto) assert.NotNil(t, u3) assert.NotSame(t, u1, u3) } func TestUnpackerManager_GetOrCreate_NoProtocol(t *testing.T) { m := newUnpackerManager() u := m.getOrCreateUnpacker("c1", nil) assert.Nil(t, u) } func TestUnpackerManager_Remove(t *testing.T) { m := newUnpackerManager() proto := nnetproto.NewNNetProtocol("1.0") u1 := m.getOrCreateUnpacker("c1", proto) assert.NotNil(t, u1) m.removeUnpacker("c1") // After removal, a new instance should be created u2 := m.getOrCreateUnpacker("c1", proto) assert.NotNil(t, u2) assert.NotSame(t, u1, u2) }