Skip to content
Snippets Groups Projects
Select Git revision
  • 4132c09d965d94d2dfe7c7203a093162bf41fd77
  • master default protected
  • 1.2.4
  • 1.2.3
  • 1.2.2
  • 1.2.1
  • 1.2.0
  • v1.1.0
8 results

tree_test.go

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