package imitate import ( "testing" ) func TestCircularLinkedLookUp(t *testing.T) { cl := NewCircularLinked(1, 2, 3, 4, 5, 6) if !(cl.head.value.(int) == 1 && cl.tail.value.(int) == 6) { t.Error(cl.LookCursor()) } cl = NewCircularLinked(6, 2, 3, 4, 5, 1) if !(cl.head.value.(int) == 6 && cl.tail.value.(int) == 1) { t.Error("New List is error:", cl.LookCursor()) } if cl.CursorNext().value.(int) != 2 { t.Error("CursorNext error:", cl.LookCursor()) } cl = NewCircularLinked(0, 1, 2, 3, 4, 5) for i := 0; i < 6; i++ { if cl.Cursor().value.(int) != i { t.Error("CursorNext error:", cl.LookCursor()) } cl.CursorNext() } for i := 0; i < 6; i++ { if cl.Cursor().value.(int) != i { t.Error("CursorNext loop error:", cl.LookCursor()) } cl.CursorNext() } cl = NewCircularLinked(6, 2, 3, 4, 5, 1) cl.Remove(cl.Cursor()) if cl.Cursor().value != 2 { t.Error("Remove Head is error", cl.LookCursor()) } cl.Remove(cl.CursorToTail()) if cl.Cursor().value != 5 { t.Error("Remove CursorToTail is error", cl.LookCursor()) } cl.Remove(cl.CursorToHead()) if cl.Cursor().value != 3 { t.Error("Remove CursorToHead is error", cl.LookCursor()) } limitCount := 0 for cl.Size() > 0 { cl.Remove(cl.Cursor()) limitCount++ if limitCount >= 10 { t.Error("Not Clear", cl.LookCursor()) break } } cl.Remove(cl.CursorToHead()) // nil is not in list is success! if cl.head != nil || cl.tail != nil || cl.cursor != nil { t.Error("Remove Boundary error") } }