htmgo/framework/datastructure/orderedmap/orderedmap_test.go
2024-10-31 11:43:24 -05:00

63 lines
1.2 KiB
Go

package orderedmap
import (
"github.com/stretchr/testify/assert"
"testing"
)
func TestOrderedMap(t *testing.T) {
t.Parallel()
om := New[string, int]()
alphabet := []string{"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"}
for index, letter := range alphabet {
om.Set(letter, index)
}
assert.Equal(t, alphabet, om.Keys())
c, ok := om.Get("c")
assert.True(t, ok)
assert.Equal(t, 2, c)
for i, entry := range om.Entries() {
if i == 5 {
assert.Equal(t, "f", entry.Key)
}
}
om.Delete("c")
value, ok := om.Get("c")
assert.False(t, ok)
assert.Equal(t, 0, value)
}
func TestOrderedMapEach(t *testing.T) {
t.Parallel()
om := New[string, int]()
om.Set("one", 1)
om.Set("two", 2)
om.Set("three", 3)
expected := map[string]int{"one": 1, "two": 2, "three": 3}
actual := make(map[string]int)
om.Each(func(key string, value int) {
actual[key] = value
})
assert.Equal(t, expected, actual)
}
func TestOrderedMapValues(t *testing.T) {
t.Parallel()
om := New[string, int]()
om.Set("first", 10)
om.Set("second", 20)
om.Set("third", 30)
values := om.Values()
expectedValues := []int{10, 20, 30}
assert.Equal(t, expectedValues, values)
}