package dict import ( "fmt" "slices" "strings" "testing" ) func TestDict_Sort(t *testing.T) { d := NewDict[string]() d.Set("foo", "foo") d.Set("bar", "bar") d.Set("baz", "baz") d.Sort(func(a, b Entry[string]) int { return strings.Compare(a.Key, b.Key) }) expected := []Entry[string]{ {"bar", "bar"}, {"baz", "baz"}, {"foo", "foo"}, } verifyMap(t, d) if !slices.Equal(d.s, expected) { t.Fatalf("expected %v but got %v", expected, d.s) } } func verifyMap(t *testing.T, dict *Dict[string]) { if len(dict.m) != len(dict.s) { t.Fatalf("length missmatch") } for i, s := range dict.s { v, ok := dict.m[s.Key] if !ok { t.Fatalf("unknown key %s", s) } if v != i { t.Errorf("expected %d but got %d\n", i, v) } } } func BenchmarkDict_Get(b *testing.B) { d := NewDict[int]() for i := 0; i < 1000; i++ { d.Set(fmt.Sprintf("key_%d", i), i) } b.ResetTimer() for i := 0; i < b.N; i++ { _, _ = d.Get("key_500") } } func BenchmarkDict_GetBytes(b *testing.B) { d := NewDict[int]() for i := 0; i < 1000; i++ { d.Set(fmt.Sprintf("key_%d", i), i) } keyBytes := []byte("key_500") b.ResetTimer() for i := 0; i < b.N; i++ { _, _ = d.GetBytes(keyBytes) } }