Beispiel #1
0
        public void TestGetLeafs()
        {
            var t = new Dictionary <string, int>
            {
                { "A", 3 },
                { "B", 3 },
                { "C", 2 },
                { "D", 1 },
                { "E", 1 },
                { "F", 1 },
                { "G", 1 },
                { "H", 1 },
            };
            var origLen = t.Count;
            var testing = new HuffmanEncoding(t);
            var leafs   = testing.GetLeafs();

            Assert.AreEqual(origLen, leafs.Count);
            var counter = 0;

            foreach (var k in t.Keys)
            {
                var node = leafs.FirstOrDefault(l => l.Word == k);
                Assert.IsNotNull(node);
                Assert.AreEqual(t[k], node.Count);
                Assert.AreEqual(counter, node.Index);
                counter += 1;
            }
            foreach (var l in leafs)
            {
                Console.WriteLine(l.GetEncodingString());
            }
        }
Beispiel #2
0
        public void TestGetLeafByWord()
        {
            var t = new Dictionary <string, int>
            {
                { "A", 3 },
                { "B", 3 },
                { "C", 2 },
                { "D", 1 },
                { "E", 1 },
                { "F", 1 },
                { "G", 1 },
                { "H", 1 },
            };
            var testing    = new HuffmanEncoding(t);
            var testResult = testing.GetNodeByWord("A");

            Assert.IsNotNull(testResult);
            Assert.AreEqual("A", testResult.Word);
            Assert.AreEqual(3, testResult.Count);

            testResult = testing.GetNodeByWord("H");
            Assert.IsNotNull(testResult);
            Assert.AreEqual("H", testResult.Word);
            Assert.AreEqual(1, testResult.Count);
        }
Beispiel #3
0
        public void TestGetNodeByPath()
        {
            var t = new Dictionary <string, int>
            {
                { "A", 3 },
                { "B", 3 },
                { "C", 2 },
                { "D", 1 },
                { "E", 1 },
                { "F", 1 },
                { "G", 1 },
                { "H", 1 },
            };
            var testing = new HuffmanEncoding(t);

            foreach (var leaf in testing.GetLeafs())
            {
                Console.WriteLine(string.Join(" ", leaf.Word, leaf.GetEncodingString()));
            }

            var testPath   = testing.GetNodeByWord("F").Encoding;
            var testResult = testing.GetNodeByPath(testPath);

            Assert.IsNotNull(testResult);
            Assert.AreEqual("F", testResult.Word);
        }
Beispiel #4
0
        public void TestPushEncoding()
        {
            var leafs = new Dictionary <string, int>
            {
                { "A", 3 },
                { "B", 3 },
                { "C", 2 },
                { "D", 1 },
                { "E", 1 },
                { "F", 1 },
                { "G", 1 },
                { "H", 1 },
            };
            var testing = new HuffmanEncoding(leafs);

            Assert.AreEqual("111", testing.RootNode.Right.Right.Right.GetEncodingString());
        }
Beispiel #5
0
        public void TestBuildTree()
        {
            var leafs = new Dictionary <string, int>
            {
                { "A", 3 },
                { "B", 3 },
                { "C", 2 },
                { "D", 1 },
                { "E", 1 },
                { "F", 1 },
                { "G", 1 },
                { "H", 1 },
            };
            var totalCount = leafs.Sum(l => l.Value);
            var testing    = new HuffmanEncoding(leafs);

            Assert.IsNotNull(testing.RootNode);
            Assert.AreEqual(totalCount, testing.RootNode.Count);
            Assert.IsNotNull(testing.RootNode.Right);
            Assert.IsNotNull(testing.RootNode.Left);
            Console.WriteLine(testing.RootNode.Left.Count);
            Console.WriteLine(testing.RootNode.Right.Count);
        }