package llrb import ( "reflect" "testing" ) func TestAscendGreaterOrEqual(t *testing.T) { tree := New() tree.InsertNoReplace(Int(4)) tree.InsertNoReplace(Int(6)) tree.InsertNoReplace(Int(1)) tree.InsertNoReplace(Int(3)) var ary []Item tree.AscendGreaterOrEqual(Int(-1), func(i Item) bool { ary = append(ary, i) return true }) expected := []Item{Int(1), Int(3), Int(4), Int(6)} if !reflect.DeepEqual(ary, expected) { t.Errorf("expected %v but got %v", expected, ary) } ary = nil tree.AscendGreaterOrEqual(Int(3), func(i Item) bool { ary = append(ary, i) return true }) expected = []Item{Int(3), Int(4), Int(6)} if !reflect.DeepEqual(ary, expected) { t.Errorf("expected %v but got %v", expected, ary) } ary = nil tree.AscendGreaterOrEqual(Int(2), func(i Item) bool { ary = append(ary, i) return true }) expected = []Item{Int(3), Int(4), Int(6)} if !reflect.DeepEqual(ary, expected) { t.Errorf("expected %v but got %v", expected, ary) } } func TestDescendLessOrEqual(t *testing.T) { tree := New() tree.InsertNoReplace(Int(4)) tree.InsertNoReplace(Int(6)) tree.InsertNoReplace(Int(1)) tree.InsertNoReplace(Int(3)) var ary []Item tree.DescendLessOrEqual(Int(10), func(i Item) bool { ary = append(ary, i) return true }) expected := []Item{Int(6), Int(4), Int(3), Int(1)} if !reflect.DeepEqual(ary, expected) { t.Errorf("expected %v but got %v", expected, ary) } ary = nil tree.DescendLessOrEqual(Int(4), func(i Item) bool { ary = append(ary, i) return true }) expected = []Item{Int(4), Int(3), Int(1)} if !reflect.DeepEqual(ary, expected) { t.Errorf("expected %v but got %v", expected, ary) } ary = nil tree.DescendLessOrEqual(Int(5), func(i Item) bool { ary = append(ary, i) return true }) expected = []Item{Int(4), Int(3), Int(1)} if !reflect.DeepEqual(ary, expected) { t.Errorf("expected %v but got %v", expected, ary) } }