func TestMakePriorityMap(t *testing.T) {
	str := "1123145512"
	priorityMap := algorithm.MakePriorityMap(str)
	if priorityMap["1"] != 4 {
		t.Error("Can not make a right map, priorityMap[1] =", priorityMap["1"])
	}
}
func TestMakeSortedNodes(t *testing.T) {
	str := "112"
	priorityMap := algorithm.MakePriorityMap(str)
	stortedNodes := algorithm.MakeSortedNodes(priorityMap)
	if stortedNodes[0].Value != "2" {
		t.Error("Can not sort Map, sortedNodes[0] is:", stortedNodes[0])
	}
}
func TestMakeFuffManTree(t *testing.T) {
	str := "111223"
	priorityMap := algorithm.MakePriorityMap(str)
	stortedNodes := algorithm.MakeSortedNodes(priorityMap)
	hfmTree := algorithm.MakeFuffManTree(stortedNodes)
	if hfmTree.Root.Weight != 6 {
		t.Error("Can not make a hfmTree, root is:", hfmTree.Root.LeftChild, hfmTree.Root.RightChild)
	}
}
func TestTraverse(t *testing.T) {
	str := "111223"
	priorityMap := algorithm.MakePriorityMap(str)
	stortedNodes := algorithm.MakeSortedNodes(priorityMap)
	hfmTree := algorithm.MakeFuffManTree(stortedNodes)

	encoding := hfmTree.Encode()
	if encoding["1"] != "1" || encoding["2"] != "01" || encoding["3"] != "00" {
		t.Error("Can not traverse in pre order, first element is:", encoding)
	}
}