84 lines
1.6 KiB
Go
84 lines
1.6 KiB
Go
|
|
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))
|
||
|
|
}
|