package session import ( "testing" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" ) func TestSession(t *testing.T) { session := NewSession("session1") // 测试ID assert.Equal(t, "session1", session.ID(), "Expected session ID to match") // 测试Set和Get err := session.Set("key1", "value1") require.NoError(t, err, "Expected no error when setting value") val, err := session.Get("key1") require.NoError(t, err, "Expected no error when getting value") assert.Equal(t, "value1", val, "Expected value to match") // 测试Delete err = session.Delete("key1") require.NoError(t, err, "Expected no error when deleting value") val, err = session.Get("key1") require.NoError(t, err) assert.Nil(t, val, "Expected value to be nil after deletion") } func TestSessionIsNew(t *testing.T) { session := NewSession("session1") // 测试IsNew(新创建的session应该是新的) assert.True(t, session.IsNew(), "Expected session to be new") } func TestSessionConcurrent(t *testing.T) { session := NewSession("session1") // 并发Set和Get done := make(chan bool, 100) for i := 0; i < 100; i++ { go func(id int) { key := string(rune(id)) session.Set(key, id) val, _ := session.Get(key) assert.Equal(t, id, val) done <- true }(i) } // 等待所有goroutine完成 for i := 0; i < 100; i++ { <-done } } func TestSessionClear(t *testing.T) { session := NewSession("session1") // 设置一些值 session.Set("key1", "value1") session.Set("key2", "value2") // 测试Clear err := session.Clear() require.NoError(t, err, "Expected no error when clearing") // 验证值已被清空 val, _ := session.Get("key1") assert.Nil(t, val, "Expected key1 to be nil after clear") val, _ = session.Get("key2") assert.Nil(t, val, "Expected key2 to be nil after clear") }