btree: add basic in memory b-tree with integers
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
This commit is contained in:
123
btree/btree_test.go
Normal file
123
btree/btree_test.go
Normal file
@ -0,0 +1,123 @@
|
||||
package btree
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestTree_Search(t *testing.T) {
|
||||
tree := NewBtree(3)
|
||||
tree.Insert(6)
|
||||
|
||||
k := 6
|
||||
if tree.Search(k) == nil {
|
||||
t.Errorf("Not present %d", k)
|
||||
}
|
||||
|
||||
k = 15
|
||||
if tree.Search(k) != nil {
|
||||
t.Errorf("Present %d", k)
|
||||
}
|
||||
}
|
||||
|
||||
func TestTree_Remove(t *testing.T) {
|
||||
tree := NewBtree(3)
|
||||
toInsert := []int{10, 20, 5, 6, 12, 30, 7, 17}
|
||||
|
||||
for _, k := range toInsert {
|
||||
tree.Insert(k)
|
||||
}
|
||||
|
||||
tree.Remove(toInsert[0])
|
||||
for _, k := range toInsert[1:] {
|
||||
if tree.Search(k) == nil {
|
||||
t.Errorf("Not present %d", k)
|
||||
}
|
||||
}
|
||||
|
||||
if tree.Search(toInsert[0]) != nil {
|
||||
t.Errorf("Present %d", toInsert[0])
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
func TestTree_Insert(t *testing.T) {
|
||||
tree := NewBtree(3)
|
||||
toInsert := []int{10, 20, 5, 6, 12, 30, 7, 17}
|
||||
|
||||
// Test before insertion
|
||||
for _, k := range toInsert {
|
||||
if tree.Search(k) != nil {
|
||||
t.Errorf("Present %d", k)
|
||||
}
|
||||
}
|
||||
|
||||
for _, k := range toInsert {
|
||||
tree.Insert(k)
|
||||
}
|
||||
|
||||
// Test after insertion
|
||||
for _, k := range toInsert {
|
||||
if tree.Search(k) == nil {
|
||||
t.Errorf("Not present %d", k)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
func TestTree_Traverse(t *testing.T) {
|
||||
tree := NewBtree(3)
|
||||
|
||||
toInsert := []int{1, 3, 7, 10, 11, 13, 14, 15, 18, 16, 19, 24, 25, 26, 21, 4, 5, 20, 22, 2, 17, 12, 6}
|
||||
for _, k := range toInsert {
|
||||
tree.Insert(k)
|
||||
}
|
||||
|
||||
tree.Traverse()
|
||||
fmt.Println("\n 1 2 3 4 5 6 7 10 11 12 13 14 15 16 17 18 19 20 21 22 24 25 26")
|
||||
}
|
||||
*/
|
||||
|
||||
func ExampleTree_Traverse() {
|
||||
tree := NewBtree(3)
|
||||
|
||||
toInsert := []int{1, 3, 7, 10, 11, 13, 14, 15, 18, 16, 19, 24, 25, 26, 21, 4, 5, 20, 22, 2, 17, 12, 6}
|
||||
for _, k := range toInsert {
|
||||
tree.Insert(k)
|
||||
}
|
||||
|
||||
tree.Traverse()
|
||||
fmt.Println("")
|
||||
|
||||
tree.Remove(6)
|
||||
tree.Traverse()
|
||||
fmt.Println("")
|
||||
|
||||
tree.Remove(13)
|
||||
tree.Traverse()
|
||||
fmt.Println("")
|
||||
|
||||
tree.Remove(7)
|
||||
tree.Traverse()
|
||||
fmt.Println("")
|
||||
|
||||
tree.Remove(4)
|
||||
tree.Traverse()
|
||||
fmt.Println("")
|
||||
|
||||
tree.Remove(2)
|
||||
tree.Traverse()
|
||||
fmt.Println("")
|
||||
|
||||
tree.Remove(16)
|
||||
tree.Traverse()
|
||||
|
||||
// Output:
|
||||
// 1 2 3 4 5 6 7 10 11 12 13 14 15 16 17 18 19 20 21 22 24 25 26
|
||||
// 1 2 3 4 5 7 10 11 12 13 14 15 16 17 18 19 20 21 22 24 25 26
|
||||
// 1 2 3 4 5 7 10 11 12 14 15 16 17 18 19 20 21 22 24 25 26
|
||||
// 1 2 3 4 5 10 11 12 14 15 16 17 18 19 20 21 22 24 25 26
|
||||
// 1 2 3 5 10 11 12 14 15 16 17 18 19 20 21 22 24 25 26
|
||||
// 1 3 5 10 11 12 14 15 16 17 18 19 20 21 22 24 25 26
|
||||
// 1 3 5 10 11 12 14 15 17 18 19 20 21 22 24 25 26
|
||||
}
|
Reference in New Issue
Block a user