public void EncodeTest3() { byte[] data = { 1, 2, 2, 1, 1, 2, 2 }; TestIEncodingInputStream inputStream = new TestIEncodingInputStream(data); TestIEncodingOutputStream outputStream = new TestIEncodingOutputStream(); HuffmanEncoder encoder = new HuffmanEncoder(); EncodingToken token = encoder.CreateEncodingToken(inputStream, CancellationToken.None); long length = encoder.Encode(inputStream, outputStream, token, CancellationToken.None, null); Assert.IsNotNull(token.HuffmanTree); Assert.IsNotNull(token.CodingTable); WeightedSymbol?[] expected = { new WeightedSymbol(0, 7), new WeightedSymbol(1, 3), new WeightedSymbol(2, 4), null, null, null, null, }; Assert.AreEqual(expected, token.HuffmanTree.FlattenValues()); Assert.AreEqual(7, length); AssertOutputStream(outputStream, "0110011"); }
public void BuildWeightsTableTest1() { HuffmanEncoder encoder = new HuffmanEncoder(); TestIEncodingInputStream inputStream = new TestIEncodingInputStream(new byte[0]); WeightsTable weightsTable = encoder.BuildWeightsTable(inputStream, CancellationToken.None); Assert.IsNotNull(weightsTable); CollectionAssert.IsEmpty(weightsTable); }
public void BuildWeightsTableTest2() { HuffmanEncoder encoder = new HuffmanEncoder(); TestIEncodingInputStream inputStream = new TestIEncodingInputStream(new byte[] { 1 }); WeightsTable weightsTable = encoder.BuildWeightsTable(inputStream, CancellationToken.None); Assert.IsNotNull(weightsTable); WeightedSymbol[] expected = { new WeightedSymbol(1, 1) }; CollectionAssert.AreEqual(expected, weightsTable.ToArray()); }
public void EncodingProgressTest1(int size) { byte[] data = new byte[size]; TestIEncodingInputStream inputStream = new TestIEncodingInputStream(data); TestIEncodingOutputStream outputStream = new TestIEncodingOutputStream(); HuffmanEncoder encoder = new HuffmanEncoder(); EncodingToken token = encoder.CreateEncodingToken(inputStream, CancellationToken.None); TestIProgressHandler progress = new TestIProgressHandler(); encoder.Encode(inputStream, outputStream, token, CancellationToken.None, progress); CollectionAssert.IsEmpty(progress.ValueList); }
public void EncodeTest4() { byte[] data = { 1, 2, 2, 2, 2, 1, 2, 2, 2, 3, 3, 3, 3, 3, 3, 4, 4, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4 }; TestIEncodingInputStream inputStream = new TestIEncodingInputStream(data); TestIEncodingOutputStream outputStream = new TestIEncodingOutputStream(); HuffmanEncoder encoder = new HuffmanEncoder(); EncodingToken token = encoder.CreateEncodingToken(inputStream, CancellationToken.None); long length = encoder.Encode(inputStream, outputStream, token, CancellationToken.None, null); Assert.IsNotNull(token.HuffmanTree); Assert.IsNotNull(token.CodingTable); Assert.AreEqual(54, length); AssertOutputStream(outputStream, "110111111111111110111111111101010101010001010000000000"); }
public void EncodeTest1() { TestIEncodingInputStream inputStream = new TestIEncodingInputStream(new byte[0]); TestIEncodingOutputStream outputStream = new TestIEncodingOutputStream(); HuffmanEncoder encoder = new HuffmanEncoder(); EncodingToken token = encoder.CreateEncodingToken(inputStream, CancellationToken.None); long length = encoder.Encode(inputStream, outputStream, token, CancellationToken.None, null); Assert.IsNotNull(token.HuffmanTree); Assert.IsNotNull(token.CodingTable); Assert.AreEqual(0, length); CollectionAssert.IsEmpty(token.HuffmanTree.FlattenValues()); CollectionAssert.IsEmpty(outputStream.BitList); }
public void EncodingProgressTest2() { byte[] data = new byte[27 * 1024]; TestIEncodingInputStream inputStream = new TestIEncodingInputStream(data); TestIEncodingOutputStream outputStream = new TestIEncodingOutputStream(); HuffmanEncoder encoder = new HuffmanEncoder(); EncodingToken token = encoder.CreateEncodingToken(inputStream, CancellationToken.None); TestIProgressHandler progress = new TestIProgressHandler(); for (int n = 0; n < 10; n++) { encoder.Encode(inputStream, outputStream, token, CancellationToken.None, progress); inputStream.Reset(); } CollectionAssert.AreEqual(new long[] { 128 * 1024, 128 * 1024 }, progress.ValueList); }
public void BuildWeightsTableTest3() { byte[] data = @"aaaabbbccedddddeeeaabdcefffeffadc".ToByteArray(); HuffmanEncoder encoder = new HuffmanEncoder(); TestIEncodingInputStream inputStream = new TestIEncodingInputStream(data); WeightsTable weightsTable = encoder.BuildWeightsTable(inputStream, CancellationToken.None); Assert.IsNotNull(weightsTable); WeightedSymbol[] expected = { new WeightedSymbol((byte)'a', 7), new WeightedSymbol((byte)'b', 4), new WeightedSymbol((byte)'c', 4), new WeightedSymbol((byte)'d', 7), new WeightedSymbol((byte)'e', 6), new WeightedSymbol((byte)'f', 5), }; CollectionAssert.AreEqual(expected, weightsTable.ToArray()); }
public void EncodeTest2() { TestIEncodingInputStream inputStream = new TestIEncodingInputStream(new byte[] { 1 }); TestIEncodingOutputStream outputStream = new TestIEncodingOutputStream(); HuffmanEncoder encoder = new HuffmanEncoder(); EncodingToken token = encoder.CreateEncodingToken(inputStream, CancellationToken.None); long length = encoder.Encode(inputStream, outputStream, token, CancellationToken.None, null); Assert.IsNotNull(token.HuffmanTree); Assert.IsNotNull(token.CodingTable); WeightedSymbol?[] expected = { new WeightedSymbol(1, 1), null, null, }; Assert.AreEqual(expected, token.HuffmanTree.FlattenValues()); Assert.AreEqual(1, length); AssertOutputStream(outputStream, "0"); }
private EncodingToken CreateEncodingToken(HuffmanEncoder encoder, byte[] data) { using (TestIEncodingInputStream inputStream = new TestIEncodingInputStream(data)) { return(encoder.CreateEncodingToken(inputStream, CancellationToken.None)); } }