|
|
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")
|
|
|
}
|
|
|
|