63 lines
1.2 KiB
Go
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)
|
|
}
|