コード例 #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());
        }
コード例 #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());
        }
コード例 #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());
        }
コード例 #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());
        }