コード例 #1
0
ファイル: UICoder.cs プロジェクト: wziel/HuffmanCoder
        public Statistics Encode(string inputFilePath, string outputFilePath, HuffmanEncodeModel huffmanEncodeModel)
        {
            Statistics             statiscs;
            IHuffmanCoderInterface huffmanCoderInterface;
            IStatisticsBuilder     statisticsBuilder = new StatisticsBuilder();

            using (IInputReader input = new InputReader(inputFilePath))
            {
                ICoderOutputWriter output = new CoderOutputWriter(new ByteCreator(), new HeaderCreator());
                if (huffmanEncodeModel == HuffmanEncodeModel.Standard)
                {
                    huffmanCoderInterface = new StandardHuffmanCoderInterface(input, output);
                }
                else if (huffmanEncodeModel == HuffmanEncodeModel.Block)
                {
                    huffmanCoderInterface = new PairHuffmanCoderInterface(input, output);
                }
                else
                {
                    huffmanCoderInterface = new MarkowHuffmanCoderInterface(input, output);
                }
                huffmanCoderInterface.Encode();
                System.IO.File.WriteAllBytes(outputFilePath, output.FileBytes);
                statiscs = statisticsBuilder.BuildStatistics(output.SymbolMap, output.Header, input.Size, output.Size);

                if (huffmanEncodeModel == HuffmanEncodeModel.Standard)
                {
                    IHistogramBuilder histogramBuilder = new HistogramBuilder();
                    histogramBuilder.BuildHistogram(output.SymbolMap, outputFilePath);
                }
            }
            return(statiscs);
        }
コード例 #2
0
        public void OneBitWritten()
        {
            var mockByteCreator   = new Mock <IByteCreator>();
            var mockHeaderCreator = new Mock <IHeaderCreator>();
            var coderOutputWriter = new CoderOutputWriter(mockByteCreator.Object, mockHeaderCreator.Object);

            mockHeaderCreator.Setup(headerCreator => headerCreator.Create(HuffmanEncodeModel.Standard, false, new Dictionary <string, OutputValues>())).Returns(new Header {
                Content = new byte[0]
            });
            mockByteCreator.SetupGet(byteCreator => byteCreator.IsReady).Returns(false);
            coderOutputWriter.Write(true);
            mockByteCreator.SetupGet(byteCreator => byteCreator.IsEmpty).Returns(false);
            coderOutputWriter.CreateFileBytes(HuffmanEncodeModel.Standard, false, new Dictionary <string, OutputValues>());
            Assert.AreEqual(1, coderOutputWriter.FileBytes.Length);
        }