public void Decode_NumberOfSymbolsReturnedIsEqualToNumberOfBits()
        {
            //given
            var decoder = new OneSymbolDecoder <char>('x');
            var input   = new MockDecoderInput(new List <int> {
                1, 1, 1, 1
            });
            var output = new MockDecoderOutput(new List <char> {
                'x', 'x', 'x', 'x'
            });

            //when
            decoder.Decode(input, output);
            //then
            output.AssertCorrectOutput();
        }
        public void Decode_FourSymbols_DeepTree()
        {
            //given
            var tree    = MockHuffmanTreeBuilder.Build('a', '#', 'b', '#', 'c', 'd');
            var decoder = new HuffmanDecoder <char>(tree);
            var input   = new MockDecoderInput(new List <int> {
                0, 1, 0, 1, 1, 0, 1, 1, 1
            });
            var output = new MockDecoderOutput(new List <char> {
                'a', 'b', 'c', 'd'
            });

            //when
            decoder.Decode(input, output);
            //then
            output.AssertCorrectOutput();
        }
        public void Decode_ThreeSymbols_TwoAreRight()
        {
            //given
            var tree    = MockHuffmanTreeBuilder.Build('c', '#', 'x', 'a');
            var decoder = new HuffmanDecoder <char>(tree);
            var input   = new MockDecoderInput(new List <int> {
                0, 1, 1, 1, 0
            });
            var output = new MockDecoderOutput(new List <char> {
                'c', 'a', 'x'
            });

            //when
            decoder.Decode(input, output);
            //then
            output.AssertCorrectOutput();
        }