package main import ( "reflect" "testing" "github.com/stretchr/testify/assert" ) // go test -v homework_test.go type OrderedMap struct { // need to implement } func NewOrderedMap() OrderedMap { return OrderedMap{} // need to implement } func (m *OrderedMap) Insert(key, value int) { // need to implement } func (m *OrderedMap) Erase(key int) { // need to implement } func (m *OrderedMap) Contains(key int) bool { return false // need to implement } func (m *OrderedMap) Size() int { return 0 // need to implement } func (m *OrderedMap) ForEach(action func(int, int)) { // need to implement } func TestCircularQueue(t *testing.T) { data := NewOrderedMap() assert.Zero(t, data.Size()) data.Insert(10, 10) data.Insert(5, 5) data.Insert(15, 15) data.Insert(2, 2) data.Insert(4, 4) data.Insert(12, 12) data.Insert(14, 14) assert.Equal(t, 7, data.Size()) assert.True(t, data.Contains(4)) assert.True(t, data.Contains(12)) assert.False(t, data.Contains(3)) assert.False(t, data.Contains(13)) var keys []int expectedKeys := []int{2, 4, 5, 10, 12, 14, 15} data.ForEach(func(key, _ int) { keys = append(keys, key) }) assert.True(t, reflect.DeepEqual(expectedKeys, keys)) data.Erase(15) data.Erase(14) data.Erase(2) assert.Equal(t, 4, data.Size()) assert.True(t, data.Contains(4)) assert.True(t, data.Contains(12)) assert.False(t, data.Contains(2)) assert.False(t, data.Contains(14)) keys = nil expectedKeys = []int{4, 5, 10, 12} data.ForEach(func(key, _ int) { keys = append(keys, key) }) assert.True(t, reflect.DeepEqual(expectedKeys, keys)) }