175 lines
3.0 KiB
Go
175 lines
3.0 KiB
Go
package linkedhashmap
|
|
|
|
import (
|
|
"reflect"
|
|
"testing"
|
|
)
|
|
|
|
func TestPush(t *testing.T) {
|
|
lhm := New()
|
|
lhm.PushFront(1, "1")
|
|
lhm.PushBack("2", 2)
|
|
var values []interface{}
|
|
values = lhm.Values()
|
|
|
|
var testType reflect.Type
|
|
|
|
if testType = reflect.TypeOf(values[0]); testType.String() != "string" {
|
|
t.Error(testType)
|
|
}
|
|
|
|
if testType = reflect.TypeOf(values[1]); testType.String() != "int" {
|
|
t.Error(testType)
|
|
}
|
|
|
|
// 1 2
|
|
lhm.PushFront(4, "4") // 4 1 2
|
|
lhm.PushBack("3", 3) // 4 1 2 3
|
|
|
|
if lhm.String() != "[4 1 2 3]" {
|
|
t.Error(lhm.String())
|
|
}
|
|
|
|
lhm.Put(5, 5)
|
|
if lhm.String() != "[4 1 2 3 5]" {
|
|
t.Error(lhm.String())
|
|
}
|
|
}
|
|
|
|
func TestBase(t *testing.T) {
|
|
lhm := New()
|
|
for i := 0; i < 10; i++ {
|
|
lhm.PushBack(i, i)
|
|
}
|
|
|
|
if lhm.Empty() {
|
|
t.Error("why lhm Enpty, check it")
|
|
}
|
|
|
|
if lhm.Size() != 10 {
|
|
t.Error("why lhm Size != 10, check it")
|
|
}
|
|
|
|
lhm.Clear()
|
|
if !lhm.Empty() {
|
|
t.Error("why lhm Clear not Empty, check it")
|
|
}
|
|
|
|
if lhm.Size() != 0 {
|
|
t.Error("why lhm Size != 0, check it")
|
|
}
|
|
}
|
|
|
|
func TestGet(t *testing.T) {
|
|
lhm := New()
|
|
for i := 0; i < 10; i++ {
|
|
lhm.PushBack(i, i)
|
|
}
|
|
|
|
for i := 0; i < 10; i++ {
|
|
lhm.PushBack(i, i)
|
|
}
|
|
|
|
if lhm.Size() != 10 {
|
|
t.Error("why lhm Size != 10, check it")
|
|
}
|
|
|
|
for i := 0; i < 10; i++ {
|
|
if v, ok := lhm.Get(i); !ok || v != i {
|
|
t.Error("ok is ", ok, " get value is ", v)
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestInsert(t *testing.T) {
|
|
lhm := New()
|
|
for i := 0; i < 5; i++ {
|
|
lhm.Insert(0, i, i)
|
|
}
|
|
|
|
if lhm.String() != "[4 3 2 1 0]" {
|
|
t.Error(lhm.String())
|
|
}
|
|
|
|
if !lhm.Insert(2, 5, 5) {
|
|
t.Error("Insert 2 5 5 error check it")
|
|
}
|
|
|
|
if lhm.String() != "[4 3 5 2 1 0]" {
|
|
t.Error(lhm.String())
|
|
}
|
|
|
|
if !lhm.Insert(lhm.Size(), 6, 6) {
|
|
t.Error("Insert Size() error check it")
|
|
}
|
|
|
|
if lhm.String() != "[4 3 5 2 1 0 6]" {
|
|
t.Error(lhm.String())
|
|
}
|
|
}
|
|
|
|
func TestRemove(t *testing.T) {
|
|
lhm := New()
|
|
for i := 0; i < 10; i++ {
|
|
lhm.PushBack(i, i)
|
|
}
|
|
|
|
var resultStr = "[0 1 2 3 4 5 6 7 8 9]"
|
|
for i := 0; i < 10; i++ {
|
|
if lhm.String() != resultStr {
|
|
t.Error(lhm.String(), resultStr)
|
|
}
|
|
|
|
lhm.Remove(i)
|
|
if lhm.Size() != uint(9-i) {
|
|
t.Error("why lhm Size != ", uint(9-i), ", check it")
|
|
}
|
|
|
|
resultStr = resultStr[0:1] + resultStr[3:]
|
|
}
|
|
|
|
if lhm.Size() != 0 {
|
|
t.Error(lhm.Size())
|
|
}
|
|
|
|
for i := 0; i < 10; i++ {
|
|
lhm.PushFront(i, i)
|
|
}
|
|
|
|
for i := 0; i < 10; i++ {
|
|
if i >= 5 {
|
|
lhm.Remove(i)
|
|
}
|
|
}
|
|
|
|
if lhm.String() != "[4 3 2 1 0]" {
|
|
t.Error(lhm.String())
|
|
}
|
|
|
|
// RemoveIndex [4 3 2 1 0]
|
|
|
|
if value, _ := lhm.RemoveIndex(2); value != 2 {
|
|
t.Error("[4 3 2 1 0] remove index 2, value is 2, but now is", value)
|
|
}
|
|
|
|
// [4 3 1 0]
|
|
if value, _ := lhm.RemoveIndex(2); value != 1 {
|
|
t.Error("[4 3 1 0] remove index 2, value is 1, but now is", value)
|
|
}
|
|
|
|
// [4 3 0]
|
|
if value, _ := lhm.RemoveIndex(2); value != 0 {
|
|
t.Error("[4 3 0] remove index 2, value is 0, but now is", value)
|
|
}
|
|
|
|
// [4 3]
|
|
if value, _ := lhm.RemoveIndex(2); value != nil {
|
|
t.Error("[4 3] remove index 2, value is nil, but now is", value)
|
|
}
|
|
|
|
// [4 3]
|
|
if value, _ := lhm.RemoveIndex(0); value != 4 {
|
|
t.Error("[4 3] remove index 0, value is 4, but now is", value)
|
|
}
|
|
}
|