示例#1
0
        public void EqualsTest()
        {
            HuffmanElement ele1 = new HuffmanElement(0x00, 2, 8);
            HuffmanElement ele2 = new HuffmanElement(0x01, 5, 3);
            Assert.IsFalse(ele1.Equals(ele2));

            HuffmanElement ele3 = new HuffmanElement(0x00, 2, 8);
            HuffmanElement ele4 = new HuffmanElement(0x00, 2, 8);
            Assert.IsTrue(ele3.Equals(ele4));
        }
示例#2
0
        public void HuffmanElementToString_Test()
        {
            byte runSizeInput1 = 0x00;
            ushort codeWordInput1 = 2;
            byte lengthInput1 = 8;

            HuffmanElement huffmanTestElement1 = new HuffmanElement(runSizeInput1, codeWordInput1, lengthInput1);

            Assert.AreEqual("0 = 10, 1000", huffmanTestElement1.ToString());
        }
示例#3
0
        public void Comparison_HuffmanElementWithDifferentRunSizes_SmallerRunSizeBeforeLarger()
        {
            byte runSizeInput1 = 0x00;
            ushort codeWordInput1 = 0x02;
            byte lengthInput1 = 8;

            byte runSizeInput2 = 1;
            ushort codeWordInput2 = 3;
            byte lengthInput2 = 8;

            HuffmanElement huffmanTestElement1 = new HuffmanElement(runSizeInput1, codeWordInput1, lengthInput1);

            HuffmanElement huffmanTestElement2 = new HuffmanElement(runSizeInput2, codeWordInput2, lengthInput2);
            
            Assert.AreEqual(-1, huffmanTestElement1.CompareTo(huffmanTestElement2));
        }
示例#4
0
        public void HasCode_Test()
        {
            byte runSizeInput1 = 00000000;
            ushort codeWordInput1 = 2; // 10 in base 2
            byte lengthInput1 = 8; // 1000 in base 2

            byte runSizeInput2 = 1;
            ushort codeWordInput2 = 3; // 11 in base 2
            byte lengthInput2 = 8; // 1000 in base 2

            HuffmanElement huffmanTestElement1 = new HuffmanElement(runSizeInput1, codeWordInput1, lengthInput1);
            HuffmanElement huffmanTestElement2 = new HuffmanElement(runSizeInput2, codeWordInput2, lengthInput2);

            HuffmanTable huffTable1 = new HuffmanTable(huffmanTestElement1, huffmanTestElement2);

            Assert.AreEqual(0, huffTable1.HasCode(2, 8).RunSize);
        }
示例#5
0
        public void Comparison_HuffmanElementWithDifferentLengths_ShorterLengthBeforeLonger()
        {
            byte runSizeInput1 = 0x00;
            ushort codeWordInput1 = 2;
            byte lengthInput1 = 7;

            byte runSizeInput2 = 0x01;
            ushort codeWordInput2 = 3;
            byte lengthInput2 = 8;

            HuffmanElement huffmanTestElement1 = new HuffmanElement(runSizeInput1, codeWordInput1, lengthInput1);

            HuffmanElement huffmanTestElement2 = new HuffmanElement(runSizeInput2, codeWordInput2, lengthInput2);

            var check = huffmanTestElement1.CompareTo(huffmanTestElement2);
            Assert.AreEqual(-1, check);
        }
示例#6
0
        public void HuffmanTable_Access_to_codeword_Test()
        {
            byte runSizeInput1 = 0x00;
            ushort codeWordInput1 = 2; // 10 in base 2
            byte lengthInput1 = 8; // 1000 in base 2

            byte runSizeInput2 = 0x1;
            ushort codeWordInput2 = 3; // 11 in base 2
            byte lengthInput2 = 8; // 1000 in base 2


            HuffmanElement huffmanTestElement1 = new HuffmanElement(runSizeInput1, codeWordInput1, lengthInput1);
            HuffmanElement huffmanTestElement2 = new HuffmanElement(runSizeInput2, codeWordInput2, lengthInput2);

            HuffmanTable huffTable1 = new HuffmanTable(huffmanTestElement1, huffmanTestElement2);
            

            Assert.AreEqual(2, huffTable1.Elements[0x00].CodeWord);
        }
示例#7
0
        public void Combinations_Test() 
        {
            byte runSizeInput1 = 00000000;
            ushort codeWordInput1 = 2; // 10 in base 2
            byte lengthInput1 = 8; // 1000 in base 2

            byte runSizeInput2 = 1;
            ushort codeWordInput2 = 3; // 11 in base 2
            byte lengthInput2 = 8; // 1000 in base 2

            byte runSizeInput3 = 2;
            ushort codeWordInput3 = 4; // 100 in base 2
            byte lengthInput3 = 8; // 1000 in base 2

            HuffmanElement huffmanTestElement1 = new HuffmanElement(runSizeInput1, codeWordInput1, lengthInput1);
            HuffmanElement huffmanTestElement2 = new HuffmanElement(runSizeInput2, codeWordInput2, lengthInput2);
            HuffmanElement huffmanTestElement3 = new HuffmanElement(runSizeInput3, codeWordInput3, lengthInput3);
            HuffmanTable huffTable1 = new HuffmanTable(huffmanTestElement1, huffmanTestElement2, huffmanTestElement3);

            byte[] numberOfCodesOutput = huffTable1.Combinations();

            Assert.AreEqual(3, numberOfCodesOutput[7]);
        }
示例#8
0
        public void HuffmanTableToString_Test()
        {
            byte runSizeInput1 = 00000000;
            ushort codeWordInput1 = 2; // 10 in base 2
            byte lengthInput1 = 8; // 1000 in base 2

            byte runSizeInput2 = 1;
            ushort codeWordInput2 = 3; // 11 in base 2
            byte lengthInput2 = 8; // 1000 in base 2

            HuffmanElement huffmanTestElement1 = new HuffmanElement(runSizeInput1, codeWordInput1, lengthInput1);
            HuffmanElement huffmanTestElement2 = new HuffmanElement(runSizeInput2, codeWordInput2, lengthInput2);

            HuffmanTable huffTable1 = new HuffmanTable(huffmanTestElement1, huffmanTestElement2);

            Assert.AreEqual("0,2,8;1,3,8;", huffTable1.ToString());
        }
示例#9
0
        public void HasCodeTest_for_null_when_no_element_has_code()
        {
            byte runSizeInput1 = 00000000;
            ushort codeWordInput1 = 2; // 10 in base 2
            byte lengthInput1 = 8; // 1000 in base 2

            byte runSizeInput2 = 1;
            ushort codeWordInput2 = 3; // 11 in base 2
            byte lengthInput2 = 8; // 1000 in base 2

            HuffmanElement huffmanTestElement1 = new HuffmanElement(runSizeInput1, codeWordInput1, lengthInput1);
            HuffmanElement huffmanTestElement2 = new HuffmanElement(runSizeInput2, codeWordInput2, lengthInput2);

            HuffmanTable huffTable1 = new HuffmanTable(huffmanTestElement1, huffmanTestElement2);

            Assert.AreEqual(null, huffTable1.HasCode(1, 8));
        }
示例#10
0
        public void GetElementFromRunSize_Test()
        {
            byte runSizeInput1 = 0x00;
            ushort codeWordInput1 = 2; // 10 in base 2
            byte lengthInput1 = 8; // 1000 in base 2

            byte runSizeInput2 = 0x01;
            ushort codeWordInput2 = 3; // 11 in base 2
            byte lengthInput2 = 8; // 1000 in base 2

            HuffmanElement huffmanTestElement1 = new HuffmanElement(runSizeInput1, codeWordInput1, lengthInput1);
            HuffmanElement huffmanTestElement2 = new HuffmanElement(runSizeInput2, codeWordInput2, lengthInput2);

            HuffmanTable huffTable1 = new HuffmanTable(huffmanTestElement1, huffmanTestElement2);

            Assert.AreEqual(huffmanTestElement2, huffTable1.GetElementFromRunSize(0x0, 0x1)); //combines to 0x01
        }