public void MarkowCoderEncodeInput()
        {
            //given
            byte[]                input        = new byte[] { (byte)'A', (byte)'A', (byte)'B', (byte)'C', (byte)'A', (byte)'C', (byte)'D', (byte)'B', (byte)'A', (byte)'A' };
            MockInputReader       inputReader  = new MockInputReader(input);
            MockCoderOutputWriter outputWriter = new MockCoderOutputWriter();

            //when
            MarkowHuffmanCoderInterface markowHuffmanCoderInterface = new MarkowHuffmanCoderInterface(inputReader, outputWriter);

            markowHuffmanCoderInterface.Encode();

            //then
            outputWriter.AssertSize(12);
        }
        public void PairCoderEncodeInput()
        {
            //given
            byte[]                input        = new byte[] { (byte)'A', (byte)'B', (byte)'C', (byte)'A', (byte)'B', (byte)'D', (byte)'A', (byte)'B', (byte)'C', (byte)'A' };
            MockInputReader       inputReader  = new MockInputReader(input);
            MockCoderOutputWriter outputWriter = new MockCoderOutputWriter();

            //when
            PairHuffmanCoderInterface pairHuffmanCoderInterface = new PairHuffmanCoderInterface(inputReader, outputWriter);

            pairHuffmanCoderInterface.Encode();

            //then
            outputWriter.AssertEquals(new List <int>()
            {
                1, 1, 0, 1, 0, 1, 1, 0
            });
        }