You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

80 lines
1.8 KiB
Go

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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