-
Notifications
You must be signed in to change notification settings - Fork 2
/
iter_test.go
53 lines (51 loc) · 1.54 KB
/
iter_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
package splaytree
import "testing"
// Iterate over items in a tree while observing lower and upper bounds.
func TestRangeIterator(t *testing.T) {
tree := NewSplayTree()
items := []Item{Int(2), Int(4), Int(6), Int(1), Int(5), Int(3), Int(0)}
tree.InsertAll(items)
for lkup := range items {
tree.Lookup(Int(lkup))
lower := Int(2)
upper := Int(4)
iter := tree.RangeIterator(lower, upper)
for item := iter(); item != nil; item = iter() {
if item.Less(lower) || upper.Less(item) {
t.Errorf("RangeIterator item %v ![%v, %v]", item, lower, upper)
}
}
lower = Int(-10)
upper = Int(-1)
iter = tree.RangeIterator(lower, upper)
for item := iter(); item != nil; item = iter() {
if item.Less(lower) || upper.Less(item) {
t.Errorf("RangeIterator item %v ![%v, %v]", item, lower, upper)
}
}
lower = Int(-1)
upper = Int(3)
iter = tree.RangeIterator(lower, upper)
for item := iter(); item != nil; item = iter() {
if item.Less(lower) || upper.Less(item) {
t.Errorf("RangeIterator item %v ![%v, %v]", item, lower, upper)
}
}
lower = Int(3)
upper = Int(9)
iter = tree.RangeIterator(lower, upper)
for item := iter(); item != nil; item = iter() {
if item.Less(lower) || upper.Less(item) {
t.Errorf("RangeIterator item %v ![%v, %v]", item, lower, upper)
}
}
lower = Int(9)
upper = Int(29)
iter = tree.RangeIterator(lower, upper)
for item := iter(); item != nil; item = iter() {
if item.Less(lower) || upper.Less(item) {
t.Errorf("RangeIterator item %v ![%v, %v]", item, lower, upper)
}
}
}
}