public void OnMatching_CompositionMatcher_DoesNotFindCompostion()
        {
            var words = new string[] { "Our", "time", "in", "the", "world", "is", "on", "loan", "we", "must", "pay", "back", "the", "loan", "with", "interest" };
            CompositionMatcher matcher = new CompositionMatcher(words, 7);

            foreach (var word in words)
            {
                matcher.ProcessEach(word);
            }

            Assert.AreEqual(0, matcher.Matches.Count());
        }
        public void OnMatching_CompositionMatcher_DoesNotFindCompostionMissingSecondPart()
        {
            var words = new string[] { "sure", "it", "itself" };
            CompositionMatcher matcher = new CompositionMatcher(words, 6);

            foreach (var word in words)
            {
                matcher.ProcessEach(word);
            }

            var matches = matcher.Matches.ToList();
            Assert.AreEqual(0, matches.Count);
        }
        public void OnMatching_CompositionMatcher_MatchesSingleComposition()
        {
            var words = new string[] { "self", "it", "itself" };
            CompositionMatcher matcher = new CompositionMatcher(words, 6);

            foreach (var word in words)
            {
                matcher.ProcessEach(word);
            }

            var matches = matcher.Matches.ToList();
            Assert.AreEqual(1, matches.Count);
            Assert.AreEqual("it", matches[0].FirstPart);
            Assert.AreEqual("self", matches[0].SecondPart);
            Assert.AreEqual("itself", matches[0].Composition);
        }
Example #4
0
        static void ProcessFile(string file)
        {
            Console.WriteLine(string.Format("Processing File: {0}", file));

            try
            {
                string fileContent = File.ReadAllText(file);

                WordsParser parser = new WordsParser();

                IEnumerable<string> words = parser.GetWords(fileContent);

                StandardWordTraverser traverser = new StandardWordTraverser(words);

                // Part 1
                WordsCounter counter = new WordsCounter();
                traverser.AcceptProcessor(counter);
                counter.ReportTo(Console.WriteLine);

                // Part 2
                CompositionMatcher compositonMatcher = new CompositionMatcher(words, 6);
                traverser.AcceptProcessor(compositonMatcher);
                compositonMatcher.ReportTo(Console.WriteLine);
            }
            catch (IOException ex)
            {
                Console.WriteLine("Unable to read the file.");
                Console.WriteLine(string.Format("Message: {0}", ex.Message));
                Console.WriteLine(string.Format("Details: {0}", ex.StackTrace));
            }
            catch (Exception ex)
            {
                Console.WriteLine("Oops... Unexpected error occurred.");
                Console.WriteLine(string.Format("Message: {0}", ex.Message));
                Console.WriteLine(string.Format("Details: {0}", ex.StackTrace));
            }
        }
        public void OnMatching_CompositionMatcher_MatchesTwoCompositionsWithSameFirstPart()
        {
            var words = new string[] { "alic","self", "it", "itself", "italic"};
            CompositionMatcher matcher = new CompositionMatcher(words, 6);

            foreach (var word in words)
            {
                matcher.ProcessEach(word);
            }

            var matches = matcher.Matches.ToList();
            Assert.AreEqual(2, matches.Count);

            var selfEntry = matches.Find(e => e.SecondPart == "self");
            var alicEntry = matches.Find(e => e.SecondPart == "alic");

            Assert.AreEqual("it", selfEntry.FirstPart);
            Assert.AreEqual("self", selfEntry.SecondPart);
            Assert.AreEqual("itself", selfEntry.Composition);

            Assert.AreEqual("it", alicEntry.FirstPart);
            Assert.AreEqual("alic", alicEntry.SecondPart);
            Assert.AreEqual("italic", alicEntry.Composition);
        }
        public void OnMatching_CompositionMatcher_MatchesTwoCompositionsWithSameSecondPart()
        {
            var words = new string[] { "my", "self", "it", "itself", "myself" };
            CompositionMatcher matcher = new CompositionMatcher(words, 6);

            foreach (var word in words)
            {
                matcher.ProcessEach(word);
            }

            var matches = matcher.Matches.ToList();
            Assert.AreEqual(2, matches.Count);

            var myEntry = matches.Find(e => e.FirstPart == "my");
            var itEntry = matches.Find(e => e.FirstPart == "it");

            Assert.IsNotNull(itEntry);
            Assert.AreEqual("it", itEntry.FirstPart);
            Assert.AreEqual("self", itEntry.SecondPart);
            Assert.AreEqual("itself", itEntry.Composition);

            Assert.IsNotNull(myEntry);
            Assert.AreEqual("my", myEntry.FirstPart);
            Assert.AreEqual("self", myEntry.SecondPart);
            Assert.AreEqual("myself", myEntry.Composition);
        }