// 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") // } // //}