Something went wrong on our end
Select Git revision
tree_test.go
-
Volker Schukai authoredVolker Schukai authored
tree_test.go 3.34 KiB
// Copyright 2023 schukai GmbH
// SPDX-License-Identifier: AGPL-3.0
package document
import "testing"
func TestParseList(t *testing.T) {
obj := newTree[int]()
ptr := obj
list := []int{3, 4, 4, 6, 1, 2}
for _, i := range list {
currentLevel := ptr.getLevel()
if currentLevel == i {
ptr = ptr.appendAndGet()
continue
}
if currentLevel < i {
ptr = ptr.down(i)
} else {
ptr = ptr.up(i)
}
}
if ptr.getLevel() != 2 {
t.Error("ptr.getLevel() != 6")
}
count := 0
obj.recursiveIterate(func(t *Tree[int]) {
count++
})
if count != 8 {
t.Error("count != 7")
}
}
func TestParseList2(t *testing.T) {
obj := newTree[int]()
ptr := obj
list := []int{1, 2, 3, 2, 3, 2, 3}
for _, i := range list {
currentLevel := ptr.getLevel()
if currentLevel == i {
ptr = ptr.appendAndGet()
continue
}
if currentLevel < i {
ptr = ptr.down(i)
continue
}
ptr = ptr.up(i)
ptr = ptr.appendAndGet()
}
if ptr.getLevel() != 3 {
t.Error("ptr.getLevel() != 3")
}
count := 0
obj.recursiveIterate(func(t *Tree[int]) {
count++
})
if count != 8 {
t.Error("count != 8")
}
}
func TestRecursiveIterator(t *testing.T) {
obj := newTree[int]()
sub := newTree[int]()
sub.addChild(newTree[int]())
obj.addChild(sub)
count := 0
obj.recursiveIterate(func(t *Tree[int]) {
count++
})
if count != 3 {
t.Error("count != 3")
}
}
func TestGetGuaranteedChild2(t *testing.T) {
obj := newTree[int]()
if obj.down(6).getLevel() != 6 {
t.Error("obj.getGuaranteedNode(6).getLevel() != 6")
}
}
func TestGetGuaranteedChild(t *testing.T) {
obj := newTree[int]()
c1 := newTree[int]()
c11 := newTree[int]()
c111 := newTree[int]()
c1111 := newTree[int]()
c1112 := newTree[int]()
c111.addChild(c1111)
c111.addChild(c1112)
c11.addChild(c111)
c1.addChild(c11)
obj.addChild(c1)
if obj.down(1).getLevel() != 1 {
t.Error("obj.getGuaranteedNode(1).getLevel() != 1")
}
if obj.down(2).getLevel() != 2 {
t.Error("obj.getGuaranteedNode(2).getLevel() != 2")
}
if obj.down(3).getLevel() != 3 {
t.Error("obj.getGuaranteedNode(3).getLevel() != 3")
}
if obj.down(6).getLevel() != 6 {
t.Error("obj.getGuaranteedNode(6).getLevel() != 6")
}
}
func TestTreeAddChild(t *testing.T) {
tree := newTree[int]()
tree.addChild(newTree[int]())
tree.addChild(newTree[int]())
tree.addChild(newTree[int]())
if len(tree.getChildren()) != 3 {
t.Error("Tree.getChildren() != 3")
}
}
func TestTreeAddChildren(t *testing.T) {
obj := newTree[int]()
obj.addChildren([]*Tree[int]{newTree[int](), newTree[int](), newTree[int]()})
if len(obj.getChildren()) != 3 {
t.Error("Tree.getChildren() != 3")
}
}
func TestTreeGetParent(t *testing.T) {
obj := newTree[int]()
obj.addChild(newTree[int]())
if obj.getChildren()[0].getParent() != obj {
t.Error("Tree.getChildren()[0].getParent() != obj")
}
}
func TestTreeGetRoot(t *testing.T) {
obj := newTree[int]()
sub := newTree[int]()
sub.addChild(newTree[int]())
obj.addChild(sub)
if obj.getChildren()[0].getChildren()[0].getRoot() != obj {
t.Error("Tree.getChildren()[0].getChildren()[0].getRoot() != obj")
}
}
//func TestTreeGetSubTree(t *testing.T) {
//
// obj := newTree()
//
// sub := newTree()
// sub.addChild(newTree())
//
// obj.addChild(sub)
//
// if len(obj.getChildren()[0].getSubTree()) != 1 {
// t.Error("Tree.getChildren()[0].getSubTree() != 1")
// }
//
//}