- add reversible iterators to array stack

This commit is contained in:
Emir Pasic
2016-06-25 19:11:20 +02:00
parent d7a31571cc
commit b304f5eb58
6 changed files with 85 additions and 9 deletions
+40 -1
View File
@@ -98,9 +98,11 @@ func TestStackIterator(t *testing.T) {
stack.Push("b")
stack.Push("c")
// Iterator
// Iterator (next)
it := stack.Iterator()
count := 0
for it.Next() {
count++
index := it.Index()
value := it.Value()
switch index {
@@ -119,7 +121,44 @@ func TestStackIterator(t *testing.T) {
default:
t.Errorf("Too many")
}
if actualValue, expectedValue := index, count-1; actualValue != expectedValue {
t.Errorf("Got %v expected %v", actualValue, expectedValue)
}
}
if actualValue, expectedValue := count, 3; actualValue != expectedValue {
t.Errorf("Got %v expected %v", actualValue, expectedValue)
}
// Iterator (prev)
count = 0
for it.Prev() {
count++
index := it.Index()
value := it.Value()
switch index {
case 0:
if actualValue, expectedValue := value, "c"; actualValue != expectedValue {
t.Errorf("Got %v expected %v", actualValue, expectedValue)
}
case 1:
if actualValue, expectedValue := value, "b"; actualValue != expectedValue {
t.Errorf("Got %v expected %v", actualValue, expectedValue)
}
case 2:
if actualValue, expectedValue := value, "a"; actualValue != expectedValue {
t.Errorf("Got %v expected %v", actualValue, expectedValue)
}
default:
t.Errorf("Too many")
}
if actualValue, expectedValue := index, 3-count; actualValue != expectedValue {
t.Errorf("Got %v expected %v", actualValue, expectedValue)
}
}
if actualValue, expectedValue := count, 3; actualValue != expectedValue {
t.Errorf("Got %v expected %v", actualValue, expectedValue)
}
stack.Clear()
it = stack.Iterator()
for it.Next() {