public void BitRate_EvaluateStatistics()
        {
            var helper = new HuffmanStatisticsHelper();

            uint inputFileSize  = 10;
            uint outputFileSize = 5;
            uint headerSize     = 5;

            BitRateStatistics expectedStatistics = new BitRateStatistics();

            expectedStatistics.InputFileBitRate            = 8;
            expectedStatistics.OutputFileBitRate           = 4;
            expectedStatistics.OutputFileBitRateWithHeader = 8;

            expectedStatistics.BitRateProportion           = 0.5;
            expectedStatistics.BitRateProportionWithHeader = 1;



            BitRateStatistics statistics = helper.EvaluateBitRateStatistics(symbolsCount, inputFileSize, outputFileSize, headerSize);

            Assert.AreEqual(expectedStatistics.InputFileBitRate, statistics.InputFileBitRate);
            Assert.AreEqual(expectedStatistics.OutputFileBitRate, statistics.OutputFileBitRate);
            Assert.AreEqual(expectedStatistics.OutputFileBitRateWithHeader, statistics.OutputFileBitRateWithHeader);
            Assert.AreEqual(expectedStatistics.BitRateProportion, statistics.BitRateProportion);
            Assert.AreEqual(expectedStatistics.BitRateProportionWithHeader, statistics.BitRateProportionWithHeader);
        }
        public void Entropy_Evaluate()
        {
            var helper = new HuffmanStatisticsHelper();

            var output = helper.EvaluateEntropy(symbolStatisticsList);

            Assert.AreEqual(1.485, output);
        }
        public void CreateSymbolsStatisticsListFormDictionary()
        {
            var helper = new HuffmanStatisticsHelper();

            List <SymbolStatistics> result = helper.CreateSymbolStatisticsList(symbolsMap, symbolsCount);

            Assert.AreEqual(symbolStatisticsList.Count, result.Count);

            for (int i = 0; i < symbolStatisticsList.Count; i++)
            {
                Assert.AreEqual(symbolStatisticsList[i].Probability, result[i].Probability);
                Assert.AreEqual(symbolStatisticsList[i].InputFileBitsLength, result[i].InputFileBitsLength);
                Assert.AreEqual(symbolStatisticsList[i].OutputFileBitsLength, result[i].OutputFileBitsLength);
            }
        }
        public void BitsMean_EvaluateStatistics()
        {
            var helper = new HuffmanStatisticsHelper();

            BitsMeanStatistics expectedStatistics = new BitsMeanStatistics();

            expectedStatistics.InputFileBitsMean  = 2;
            expectedStatistics.OutputFileBitsMean = 1;
            expectedStatistics.BitsMeanProportion = 0.5;

            BitsMeanStatistics statistics = helper.EvaluateBitsMeanStatistics(symbolStatisticsList);

            Assert.AreEqual(expectedStatistics.InputFileBitsMean, statistics.InputFileBitsMean);
            Assert.AreEqual(expectedStatistics.OutputFileBitsMean, statistics.OutputFileBitsMean);
            Assert.AreEqual(expectedStatistics.BitsMeanProportion, statistics.BitsMeanProportion);
        }
        public void FilesSize_EvaluateStatistics()
        {
            var  helper         = new HuffmanStatisticsHelper();
            uint inputFileSize  = 100;
            uint outputFileSize = 50;
            FilesSizeStatistics expectedStatistics = new FilesSizeStatistics();

            expectedStatistics.InputFileSize       = 100;
            expectedStatistics.OutputFileSize      = 50;
            expectedStatistics.FilesSizeProportion = 0.5;

            FilesSizeStatistics statistics = helper.EvaluateFilesSizeStatistics(inputFileSize, outputFileSize);

            Assert.AreEqual(expectedStatistics.InputFileSize, statistics.InputFileSize);
            Assert.AreEqual(expectedStatistics.OutputFileSize, statistics.OutputFileSize);
            Assert.AreEqual(expectedStatistics.FilesSizeProportion, statistics.FilesSizeProportion);
        }
        public void FileSize_EvaluateStatistics()
        {
            var  helper         = new HuffmanStatisticsHelper();
            uint inputFileSize  = 100;
            uint outputFileSize = 50;
            uint headerSize     = 10;
            FileSizeStatistics expectedStatistics = new FileSizeStatistics();

            expectedStatistics.InputFileSize              = 100;
            expectedStatistics.OutputFileSize             = 50;
            expectedStatistics.OutputFileSizeWithHeader   = 60;
            expectedStatistics.CompressionRatio           = 0.5;
            expectedStatistics.CompressionRatioWithHeader = 0.6;

            FileSizeStatistics statistics = helper.EvaluateFileSizeStatistics(inputFileSize, outputFileSize, headerSize);

            Assert.AreEqual(expectedStatistics.InputFileSize, statistics.InputFileSize);
            Assert.AreEqual(expectedStatistics.OutputFileSize, statistics.OutputFileSize);
            Assert.AreEqual(expectedStatistics.OutputFileSizeWithHeader, statistics.OutputFileSizeWithHeader);
            Assert.AreEqual(expectedStatistics.CompressionRatio, statistics.CompressionRatio);
            Assert.AreEqual(expectedStatistics.CompressionRatioWithHeader, statistics.CompressionRatioWithHeader);
        }