Пример #1
0
    public void Close( )
    {
        byte[] theInput = byteOut.ToArray( );
        Console.WriteLine("Read " + theInput.Length + " bytes");

        MemoryStream byteIn = new MemoryStream(theInput);

        CharCounter countObj = new CharCounter(byteIn);

        byteIn.Close( );

        HuffmanTree codeTree = new HuffmanTree(countObj);

        codeTree.WriteEncodingTable(dout);

        BitOutputStream bout = new BitOutputStream(dout);

        for (int i = 0; i < theInput.Length; i++)
        {
            bout.WriteBits(codeTree.GetCode(theInput[i] & (0xff)));
        }
        bout.WriteBits(codeTree.GetCode(BitUtils.EOF));

        bout.Close( );
        byteOut.Close( );
    }
Пример #2
0
        public void ShouldBeAbleToCountNumberOfLettersInAComplexSentence()
        {
            var input         = "Once is unique, twice is a coincidence, three times is a pattern.";
            var charToScanFor = 'n';
            var expected      = 5;

            var stringUtils = new CharCounter();
            int result      = CharCounter.CountChar(input, charToScanFor);

            Assert.AreEqual(expected, result);
        }
Пример #3
0
        static async Task Main(string[] args)
        {
            string webUrlToRead     = ConfigurationManager.AppSettings.Get("WebUrlToRead");
            string resultFolderPath = ConfigurationManager.AppSettings.Get("ResultFolderPath");

            IReader      reader      = new Reader();
            IWriter      writer      = new Writer();
            ICharCounter charCounter = new CharCounter();

            var htmlSourceCode = await reader.ReadAsync(webUrlToRead);

            var result = charCounter.CountCharsInString(htmlSourceCode);
            await writer.WriteToFileAsync(resultFolderPath, result);
        }
Пример #4
0
        public void ShouldBeAbleToCountCharInSimpleSentence()
        {
            //arrange
            var input          = "TDD is awesome!";
            var charToScanFor  = 'e';
            var expectedResult = 2;

            //Act
            var stringUtils = new CharCounter();
            int result      = CharCounter.CountChar(input, charToScanFor);

            //Assert
            Assert.AreEqual(expectedResult, result);
        }
Пример #5
0
        private Tuple <byte[], string> GetCompressedTextAndCodes(string filePath)
        {
            var reader         = new TxtReader();
            var preprocessor   = new HuffmanPreprocessor();
            var compressor     = new HuffmanCompressor();
            var fileContent    = reader.ReadFile(filePath, Encoding.UTF8);
            var charsCount     = CharCounter.GetSymbolsCount(fileContent);
            var sortedChars    = charsCount.OrderBy(pair => pair.Value).ToDictionary(pair => pair.Key, pair => pair.Value);
            var nodeList       = preprocessor.GetNodeList(sortedChars);
            var tree           = preprocessor.GetHuffmanTree(nodeList);
            var codes          = preprocessor.GetCharCodes(tree);
            var compressedText = compressor.GetCompressedText(fileContent, codes);

            codes.Add(compressedText.Length.ToString(), new byte[0]);
            var codesText = DictionaryConverter.ConvertToString(codes);

            return(new Tuple <byte[], string>(compressedText, codesText));
        }
Пример #6
0
        public async Task Consume(ConsumeContext <ConsonantsMessage> context)
        {
            RateCheckerMessage msg = new RateCheckerMessage();

            msg.corrId      = context.Message.corrId;
            msg.Line        = context.Message.Line;
            msg.VowelsCount = context.Message.VowelsCount;
            CharCounter ConsonantCounter = new CharCounter(Config.CONSONANTS);

            msg.ConsonantsCount = ConsonantCounter.Count(context.Message.Line);
            msg.linesCount      = context.Message.linesCount;
            msg.tenant          = context.Message.tenant;

            Console.WriteLine(msg.corrId);
            Console.WriteLine(msg.Line);
            Console.WriteLine(msg.VowelsCount);
            Console.WriteLine(msg.ConsonantsCount);
            Console.WriteLine(msg.linesCount);
            Console.WriteLine(msg.tenant);

            Publisher publisher = new Publisher();

            publisher.GetBus().Publish <RateCheckerMessage>(msg);
        }
Пример #7
0
 public StatsProcessor(CharCounter counter)
 {
     this.counter = counter;
 }
Пример #8
0
 public ValuesController()
 {
     _transport     = new Publisher();
     _vowelsCounter = new CharCounter(Config.VOWELS);
 }
Пример #9
0
 public HuffmanTree(CharCounter cc)
 {
     theCounts = cc;
     root      = null;
     CreateTree( );
 }
Пример #10
0
 public HuffmanTree( )
 {
     theCounts = new CharCounter( );
     root      = null;
 }