func TestIterate(t *testing.T) { const N = 1000 deque := deque.New() for i := 0; i < N; i++ { deque.PushBack(i) } // iterate from front to back i := 0 for e := deque.Front(); e != nil; e = e.Next() { if e.Value != i { t.Errorf("got: %d, want: %d", e.Value, i) } i++ } // iterate from back to front i = N - 1 for e := deque.Back(); e != nil; e = e.Prev() { if e.Value != i { t.Errorf("got: %d, want: %d", e.Value, i) } i-- } }
func TestEmpty_iterator(t *testing.T) { deque := deque.New() front := deque.Front() if front != nil { t.Errorf("got: %v, want: <nil>", front.Value) } back := deque.Back() if back != nil { t.Errorf("got: %v, want: <nil>", back.Value) } }
func BenchmarkIterate_backward(b *testing.B) { const N = 1024 deque := deque.New() for i := 0; i < N; i++ { deque.PushBack(i) } b.ResetTimer() for i := 0; i < b.N; i++ { for it := deque.Back(); it != nil; it = it.Prev() { _ = it.Value } } }
func ExampleIterator() { const N = 10 deque := deque.New() for i := 0; i < N; i++ { deque.PushBack(i) } // iterate from front to back for it := deque.Front(); it != nil; it = it.Next() { fmt.Printf("%v", it.Value) } fmt.Println() // iterate from back to front for it := deque.Back(); it != nil; it = it.Prev() { fmt.Printf("%v", it.Value) } fmt.Println() // Output: // 0123456789 // 9876543210 }