github.com/insionng/yougam@v0.0.0-20170714101924-2bc18d833463/libraries/petar/GoLLRB/llrb/iterator_test.go (about) 1 package llrb 2 3 import ( 4 "reflect" 5 "testing" 6 ) 7 8 func TestAscendGreaterOrEqual(t *testing.T) { 9 tree := New() 10 tree.InsertNoReplace(Int(4)) 11 tree.InsertNoReplace(Int(6)) 12 tree.InsertNoReplace(Int(1)) 13 tree.InsertNoReplace(Int(3)) 14 var ary []Item 15 tree.AscendGreaterOrEqual(Int(-1), func(i Item) bool { 16 ary = append(ary, i) 17 return true 18 }) 19 expected := []Item{Int(1), Int(3), Int(4), Int(6)} 20 if !reflect.DeepEqual(ary, expected) { 21 t.Errorf("expected %v but got %v", expected, ary) 22 } 23 ary = nil 24 tree.AscendGreaterOrEqual(Int(3), func(i Item) bool { 25 ary = append(ary, i) 26 return true 27 }) 28 expected = []Item{Int(3), Int(4), Int(6)} 29 if !reflect.DeepEqual(ary, expected) { 30 t.Errorf("expected %v but got %v", expected, ary) 31 } 32 ary = nil 33 tree.AscendGreaterOrEqual(Int(2), func(i Item) bool { 34 ary = append(ary, i) 35 return true 36 }) 37 expected = []Item{Int(3), Int(4), Int(6)} 38 if !reflect.DeepEqual(ary, expected) { 39 t.Errorf("expected %v but got %v", expected, ary) 40 } 41 } 42 43 func TestDescendLessOrEqual(t *testing.T) { 44 tree := New() 45 tree.InsertNoReplace(Int(4)) 46 tree.InsertNoReplace(Int(6)) 47 tree.InsertNoReplace(Int(1)) 48 tree.InsertNoReplace(Int(3)) 49 var ary []Item 50 tree.DescendLessOrEqual(Int(10), func(i Item) bool { 51 ary = append(ary, i) 52 return true 53 }) 54 expected := []Item{Int(6), Int(4), Int(3), Int(1)} 55 if !reflect.DeepEqual(ary, expected) { 56 t.Errorf("expected %v but got %v", expected, ary) 57 } 58 ary = nil 59 tree.DescendLessOrEqual(Int(4), func(i Item) bool { 60 ary = append(ary, i) 61 return true 62 }) 63 expected = []Item{Int(4), Int(3), Int(1)} 64 if !reflect.DeepEqual(ary, expected) { 65 t.Errorf("expected %v but got %v", expected, ary) 66 } 67 ary = nil 68 tree.DescendLessOrEqual(Int(5), func(i Item) bool { 69 ary = append(ary, i) 70 return true 71 }) 72 expected = []Item{Int(4), Int(3), Int(1)} 73 if !reflect.DeepEqual(ary, expected) { 74 t.Errorf("expected %v but got %v", expected, ary) 75 } 76 }