package ocean_test import ( "testing" "git.akyoto.dev/go/assert" "git.akyoto.dev/go/ocean" ) type User struct { Name string `json:"name"` } func TestAll(t *testing.T) { users, err := ocean.New[User]("test") assert.Nil(t, err) defer users.Clear() users.Set("1", &User{Name: "User 1"}) users.Set("2", &User{Name: "User 2"}) count := 0 for range users.All() { count++ } assert.Equal(t, count, 2) } func TestGet(t *testing.T) { users, err := ocean.New[User]("test") assert.Nil(t, err) defer users.Clear() users.Set("1", &User{Name: "User 1"}) user, err := users.Get("1") assert.Nil(t, err) assert.NotNil(t, user) } func TestInteraction(t *testing.T) { users, err := ocean.New[User]("test") assert.Nil(t, err) defer users.Clear() assert.True(t, !users.Exists("1")) assert.True(t, !users.Exists("2")) users.Set("1", &User{Name: "User 1"}) assert.True(t, users.Exists("1")) assert.True(t, !users.Exists("2")) users.Set("2", &User{Name: "User 1"}) assert.True(t, users.Exists("1")) assert.True(t, users.Exists("2")) users.Delete("1") assert.True(t, !users.Exists("1")) assert.True(t, users.Exists("2")) users.Delete("2") assert.True(t, !users.Exists("1")) assert.True(t, !users.Exists("2")) } func TestPersistence(t *testing.T) { users, err := ocean.New[User]("test") assert.Nil(t, err) defer users.Clear() users.Set("1", &User{Name: "User 1"}) users.Set("2", &User{Name: "User 2"}) again, err := ocean.New[User]("test") assert.Nil(t, err) user1, err := again.Get("1") assert.Nil(t, err) user2, err := again.Get("2") assert.Nil(t, err) assert.NotNil(t, user1) assert.NotNil(t, user2) }