Exemplo n.º 1
0
        public void BuildHuffmanTreeTest1()
        {
            HuffmanEncoder  encoder      = new HuffmanEncoder();
            WeightsTable    weightsTable = new WeightsTable();
            HuffmanTreeBase huffmanTree  = encoder.BuildHuffmanTree(weightsTable);

            Assert.IsNotNull(huffmanTree);
            CollectionAssert.IsEmpty(huffmanTree.FlattenValues());
        }
Exemplo n.º 2
0
        public void BuildHuffmanTreeTest4()
        {
            HuffmanEncoder encoder      = new HuffmanEncoder();
            WeightsTable   weightsTable = new WeightsTable();

            for (int n = 0; n < 13; n++)
            {
                weightsTable.TrackSymbol((byte)'A');
            }
            weightsTable.TrackSymbol((byte)'B');

            for (int n = 0; n < 2; n++)
            {
                weightsTable.TrackSymbol((byte)'C');
            }
            for (int n = 0; n < 15; n++)
            {
                weightsTable.TrackSymbol((byte)'D');
            }
            for (int n = 0; n < 11; n++)
            {
                weightsTable.TrackSymbol((byte)'E');
            }

            HuffmanTreeBase huffmanTree = encoder.BuildHuffmanTree(weightsTable);

            Assert.IsNotNull(huffmanTree);
            WeightedSymbol?[] expected =
            {
                new WeightedSymbol(0,         42),
                new WeightedSymbol((byte)'D', 15),
                new WeightedSymbol(0,         27),
                null,
                null,
                new WeightedSymbol((byte)'A', 13),
                new WeightedSymbol(0,         14),
                null,
                null,
                new WeightedSymbol(0,         03),
                new WeightedSymbol((byte)'E', 11),
                new WeightedSymbol((byte)'B', 01),
                new WeightedSymbol((byte)'C', 02),
                null,
                null,
                null,
                null,
                null,
                null,
            };
            Assert.AreEqual(expected, huffmanTree.FlattenValues());
        }
Exemplo n.º 3
0
        public void BuildHuffmanTreeTest2()
        {
            WeightsTable weightsTable = new WeightsTable();

            weightsTable.TrackSymbol(1);
            HuffmanEncoder encoder = new HuffmanEncoder();

            HuffmanTreeBase huffmanTree = encoder.BuildHuffmanTree(weightsTable);

            Assert.IsNotNull(huffmanTree);
            WeightedSymbol?[] expected =
            {
                new WeightedSymbol(1, 1), null, null
            };
            Assert.AreEqual(expected, huffmanTree.FlattenValues());
        }
Exemplo n.º 4
0
        public void BuildHuffmanTreeTest3()
        {
            HuffmanEncoder encoder      = new HuffmanEncoder();
            WeightsTable   weightsTable = new WeightsTable();

            for (int n = 0; n < 12; n++)
            {
                weightsTable.TrackSymbol((byte)'a');
            }
            for (int n = 0; n < 2; n++)
            {
                weightsTable.TrackSymbol((byte)'b');
            }
            for (int n = 0; n < 7; n++)
            {
                weightsTable.TrackSymbol((byte)'c');
            }
            for (int n = 0; n < 13; n++)
            {
                weightsTable.TrackSymbol((byte)'d');
            }
            for (int n = 0; n < 14; n++)
            {
                weightsTable.TrackSymbol((byte)'e');
            }
            for (int n = 0; n < 85; n++)
            {
                weightsTable.TrackSymbol((byte)'f');
            }

            HuffmanTreeBase huffmanTree = encoder.BuildHuffmanTree(weightsTable);

            Assert.IsNotNull(huffmanTree);
            WeightedSymbol?[] expected =
            {
                new WeightedSymbol(0,         133),
                new WeightedSymbol(0,         048),
                new WeightedSymbol((byte)'f', 085),
                new WeightedSymbol(0,         021),
                new WeightedSymbol(0,         027),
                null,
                null,
                new WeightedSymbol(0,         009),
                new WeightedSymbol((byte)'a', 012),
                new WeightedSymbol((byte)'d', 013),
                new WeightedSymbol((byte)'e', 014),
                new WeightedSymbol((byte)'b', 002),
                new WeightedSymbol((byte)'c', 007),
                null,
                null,
                null,
                null,
                null,
                null,
                null,
                null,
                null,
                null,
            };
            Assert.AreEqual(expected, huffmanTree.FlattenValues());
        }