示例#1
0
        public void When_Adverb_And_Two_Timers_Does_Not_Duplicate()
        {
            // this is a bug fix

            var sentence = new Sentence()
            {
                Texts = new List <Text>()
                {
                    new Text {
                        pe_tag = "NN", pe_text = "Economic growth"
                    },
                    new Text {
                        pe_tag = "VB", pe_text = "has continued"
                    },
                    new Text {
                        pe_tag = "ADV1", pe_text = "at a moderate rate"
                    },
                    new Text {
                        pe_tag = "TM1", pe_text = "so far"
                    },
                    new Text {
                        pe_tag = "TM2", pe_text = "this year"
                    },
                    new Text {
                        pe_tag = "BKP", pe_text = " . "
                    }
                }
            };

            var adverbUnitStrategy = new AdverbUnitStrategy();
            var returnedSentence   = adverbUnitStrategy.ShuffleSentence(sentence);

            Assert.That(
                returnedSentence.Texts.Count(text => text.pe_text == "at a moderate rate"), Is.EqualTo(1));
        }
示例#2
0
        public void When_Adverb_Preceeded_By_VB_MoveAdverbBeforeVB()
        {
            var sentence = new Sentence()
            {
                Texts = new List <Text>()
                {
                    new Text {
                        pe_tag = "VB", pe_text = ""
                    },
                    new Text {
                        pe_tag = "NN", pe_text = ""
                    },
                    new Text {
                        pe_tag = "ADV1", pe_text = ""
                    },
                    new Text {
                        pe_tag = "BKP", pe_text = " . "
                    }
                }
            };

            var adverbUnitStrategy = new AdverbUnitStrategy();
            var returnedSentence   = adverbUnitStrategy.ShuffleSentence(sentence);

            Assert.That(returnedSentence.Texts[0].pe_tag, Is.EqualTo("ADV1"));
            Assert.That(returnedSentence.Texts[1].pe_tag, Is.EqualTo("VB"));
            Assert.That(returnedSentence.Texts[2].pe_tag, Is.EqualTo("NN"));
            Assert.That(returnedSentence.Texts[3].pe_tag, Is.EqualTo("BKP"));
        }
示例#3
0
        public void When_ADV_before_Verb_Does_Not_Shuffle()
        {
            var sentence = new Sentence()
            {
                Texts = new List <Text>
                {
                    new Text()
                    {
                        pe_text = " He "
                    },
                    new Text()
                    {
                        pe_text = " quickly ", pe_tag = "ADV"
                    },
                    new Text()
                    {
                        pe_text = " recovered ", pe_tag = "PAST"
                    },
                    new Text()
                    {
                        pe_text = " . "
                    }
                },
            };

            var adverbUnitStrategy = new AdverbUnitStrategy();
            var returnedSentence   = adverbUnitStrategy.ShuffleSentence(sentence);

            Assert.That(returnedSentence.Texts[0].pe_text, Is.EqualTo(" He "));
            Assert.That(returnedSentence.Texts[1].pe_text, Is.EqualTo(" quickly "));
            Assert.That(returnedSentence.Texts[2].pe_text, Is.EqualTo(" recovered "));
            Assert.That(returnedSentence.Texts[3].pe_text, Is.EqualTo(" . "));
        }
示例#4
0
        public void When_Adverb_Preceeded_By_VB_PAST_PRES_Move_Adverb_Before_It()
        {
            // He PASTshouted ADVloudlyNBKP, ADVemotionally BKand ADVnon - stop BKP.

            var sentence = new Sentence()
            {
                Texts = new List <Text>
                {
                    new Text()
                    {
                        pe_text = " He ", pe_tag = "NN", pe_tag_revised = "NULL", pe_order = 1663970
                    },
                    new Text()
                    {
                        pe_text = " shouted ", pe_tag = "PAST", pe_tag_revised = "NULL", pe_order = 1663980
                    },
                    new Text()
                    {
                        pe_text = " loudly ", pe_tag = "ADV", pe_tag_revised = "ADV1", pe_order = 1663990
                    },
                    new Text()
                    {
                        pe_text = " , ", pe_tag = "NBKP", pe_tag_revised = "NULL", pe_order = 1664000
                    },
                    new Text()
                    {
                        pe_text = " emotionally ", pe_tag = "ADV", pe_tag_revised = "NULL", pe_order = 1664010
                    },
                    new Text()
                    {
                        pe_text = " and ", pe_tag = "DYN2", pe_tag_revised = "BK", pe_order = 1664020
                    },
                    new Text()
                    {
                        pe_text = " non-stop ", pe_tag = "ADV", pe_tag_revised = "NULL", pe_order = 1664030
                    },
                    new Text()
                    {
                        pe_text = " . ", pe_tag = "BKP", pe_tag_revised = "NULL", pe_order = 1664040
                    }
                },
                pe_para_no = 123
            };

            var adverbUnitStrategy = new AdverbUnitStrategy();

            var returnedSentence = adverbUnitStrategy.ShuffleSentence(sentence);

            // He ADVloudlyNBKP, ADVemotionally BKand ADVnon-stop PASTshouted BKP
            Assert.That(returnedSentence.Texts[0].pe_text, Is.EqualTo(" He "));
            Assert.That(returnedSentence.Texts[1].pe_text, Is.EqualTo(" loudly "));
            Assert.That(returnedSentence.Texts[2].pe_text, Is.EqualTo(" , "));
            Assert.That(returnedSentence.Texts[3].pe_text, Is.EqualTo(" emotionally "));
            Assert.That(returnedSentence.Texts[4].pe_text, Is.EqualTo(" and "));
            Assert.That(returnedSentence.Texts[5].pe_text, Is.EqualTo(" non-stop "));
            Assert.That(returnedSentence.Texts[6].pe_text, Is.EqualTo(" shouted "));
            Assert.That(returnedSentence.Texts[7].pe_text, Is.EqualTo(" . "));

            Assert.That(returnedSentence.pe_para_no == 123);
        }
示例#5
0
        public void Underlines_FromFirstToLastAdverbUnit_IncludingAllUnitsInBetween(
            string unShuffledSentence)
        {
            Paragraph paragraph =
                DocumentContentHelper.GetParagraphFromWordDocument(unShuffledSentence);

            var clauserUnitStrategy = new AdverbUnitStrategy();

            // act
            var shufflerParagraph =
                clauserUnitStrategy.ShuffleSentenceUnit(paragraph);

            // assert
            Text[] sentenceArray = shufflerParagraph.Descendants <Text>().ToArray();

            int firstAdverbPosition = Array.FindIndex(
                sentenceArray, text => text.InnerText == "ADV");

            int lastAdverbPosition = Array.FindLastIndex(
                sentenceArray, text => text.InnerText == "ADV") + 1;

            for (int index = 0; index < sentenceArray.Length; index++)
            {
                Text t = sentenceArray[index];

                if (index >= firstAdverbPosition && index <= lastAdverbPosition)
                {
                    Assert.That(t.Parent.InnerXml.Contains("<w:u w:val=\"single\" />"));
                }
            }
        }
示例#6
0
        public void When_Adverb_Preceeded_By_PRES_Move_Adverb_Before_PRES()
        {
            // He is PRESdoing it ADVconsistently and ADVcarefully BKP.

            var sentence = new Sentence()
            {
                Texts = new List <Text>
                {
                    new Text()
                    {
                        pe_text = " He ", pe_tag = "NN", pe_tag_revised = "NULL", pe_order = 1663970
                    },
                    new Text()
                    {
                        pe_text = " is ", pe_tag = "DYN7", pe_tag_revised = "NULL", pe_order = 1663980
                    },
                    new Text()
                    {
                        pe_text = " doing ", pe_tag = "PRES", pe_tag_revised = "NULL", pe_order = 1663990
                    },
                    new Text()
                    {
                        pe_text = " it ", pe_tag = "NN", pe_tag_revised = "NULL", pe_order = 1664000
                    },
                    new Text()
                    {
                        pe_text = " consistently ", pe_tag = "ADV", pe_tag_revised = "ADV1", pe_order = 1664010
                    },
                    new Text()
                    {
                        pe_text = " and ", pe_tag = "", pe_tag_revised = "NN", pe_order = 1664020
                    },
                    new Text()
                    {
                        pe_text = " carefully ", pe_tag = "ADV", pe_tag_revised = "ADV2", pe_order = 1664030
                    },
                    new Text()
                    {
                        pe_text = " . ", pe_tag = "BKP", pe_tag_revised = "NULL", pe_order = 1664040
                    }
                }
            };

            var adverbUnitStrategy = new AdverbUnitStrategy();

            var returnedSentence = adverbUnitStrategy.ShuffleSentence(sentence);

            // He is ADVconsistently and ADVcarefully PRESdoing it BKP.
            Assert.That(returnedSentence.Texts[0].pe_text, Is.EqualTo(" He "));
            Assert.That(returnedSentence.Texts[1].pe_text, Is.EqualTo(" is "));
            Assert.That(returnedSentence.Texts[2].pe_text, Is.EqualTo(" consistently "));
            Assert.That(returnedSentence.Texts[3].pe_text, Is.EqualTo(" and "));
            Assert.That(returnedSentence.Texts[4].pe_text, Is.EqualTo(" carefully "));
            Assert.That(returnedSentence.Texts[5].pe_text, Is.EqualTo(" doing "));
            Assert.That(returnedSentence.Texts[6].pe_text, Is.EqualTo(" it "));
            Assert.That(returnedSentence.Texts[7].pe_text, Is.EqualTo(" . "));
        }
示例#7
0
        private static void AssertThatUnShuffledSentenceReturnsExpectedSentence(string unShuffledSentence,
                                                                                string expectedSentence)
        {
            Paragraph paragraph =
                DocumentContentHelper.GetParagraphFromWordDocument(unShuffledSentence);

            var clauserUnitStrategy = new AdverbUnitStrategy();

            // act
            var shufflerParagraph =
                clauserUnitStrategy.ShuffleSentenceUnit(paragraph);

            // assert
            Assert.That(shufflerParagraph.InnerText, Is.EqualTo(
                            expectedSentence));
        }
示例#8
0
        public void Shuffler_Routines_maintain_FullStop_At_end_of_sentences()
        {
            var sentence = LargeSentence;

            var clauserUnitStrategy = new ClauserUnitStrategy();

            sentence = clauserUnitStrategy.ShuffleSentence(sentence);

            var adverbUnitStrategy = new AdverbUnitStrategy();

            sentence = adverbUnitStrategy.ShuffleSentence(sentence);

            var timerUnitStrategy = new TimerUnitStrategy();

            sentence = timerUnitStrategy.ShuffleSentence(sentence);

            var mDUnitStrategy = new MdUnitStrategy();

            sentence = mDUnitStrategy.ShuffleSentence(sentence);

            var mdbkUnitStrategy = new MdbkUnitStrategy();

            sentence = mdbkUnitStrategy.ShuffleSentence(sentence);

            var mdNulThatUnitStrategy = new MdNulThatUnitStrategy();

            sentence = mdNulThatUnitStrategy.ShuffleSentence(sentence);

            var ddlUnitStrategy = new DdlUnitStrategy();

            sentence = ddlUnitStrategy.ShuffleSentence(sentence);

            var pyYoUnitStrategy = new PyYoUnitStrategy();

            sentence = pyYoUnitStrategy.ShuffleSentence(sentence);

            var percentUnitStrategy = new PercentUnitStrategy();

            sentence = percentUnitStrategy.ShuffleSentence(sentence);

            Assert.That(sentence.Texts.Last().IsSentenceEnd);
        }
示例#9
0
        public void When_ADV_Then_ADJ_Does_Not_Shuffle()
        {
            var sentence = new Sentence()
            {
                Texts = new List <Text>
                {
                    new Text()
                    {
                        pe_text = " This "
                    },
                    new Text()
                    {
                        pe_text = " is "
                    },
                    new Text()
                    {
                        pe_text = " absolutely ", pe_tag = "ADV"
                    },
                    new Text()
                    {
                        pe_text = " great ", pe_tag = "ADJ"
                    },
                    new Text()
                    {
                        pe_text = " . "
                    }
                },
            };

            var adverbUnitStrategy = new AdverbUnitStrategy();
            var returnedSentence   = adverbUnitStrategy.ShuffleSentence(sentence);

            Assert.That(returnedSentence.Texts[0].pe_text, Is.EqualTo(" This "));
            Assert.That(returnedSentence.Texts[1].pe_text, Is.EqualTo(" is "));
            Assert.That(returnedSentence.Texts[2].pe_text, Is.EqualTo(" absolutely "));
            Assert.That(returnedSentence.Texts[3].pe_text, Is.EqualTo(" great "));
            Assert.That(returnedSentence.Texts[4].pe_text, Is.EqualTo(" . "));
        }
示例#10
0
        public void When_EconomicGrowth_Sentence_Shuffled_provides_Correct_Output()
        {
            var sentence = new Sentence()
            {
                Texts = new List <Text>()
                {
                    new Text {
                        pe_tag = "ADJ", pe_text = "Economic", pe_order = 10
                    },
                    new Text {
                        pe_tag = "NN", pe_text = "growth", pe_order = 20
                    },
                    new Text {
                        pe_tag = "DYN9", pe_tag_revised = "VBA", pe_text = "has", pe_order = 30
                    },
                    new Text {
                        pe_tag = "PAST", pe_text = "continued", pe_order = 40
                    },
                    new Text {
                        pe_tag = "MD", pe_tag_revised = "MD1", pe_text = "at", pe_order = 50, pe_merge_ahead = 3
                    },
                    new Text {
                        pe_tag = "PREN", pe_text = "a", pe_order = 60, pe_merge_ahead = 2
                    },
                    new Text {
                        pe_tag = "ADJ", pe_text = "moderate", pe_order = 70
                    },
                    new Text {
                        pe_tag = "NN", pe_text = "rate", pe_order = 80
                    },
                    new Text {
                        pe_tag = "TM", pe_tag_revised = "TM1", pe_text = "so far", pe_order = 90
                    },
                    new Text {
                        pe_tag = "TM", pe_tag_revised = "TM2", pe_text = "this year", pe_order = 100
                    },
                    new Text {
                        pe_tag = "BKP", pe_text = " . ", pe_order = 110
                    },
                }
            };

            var adverbUnitStrategy = new AdverbUnitStrategy();

            sentence = adverbUnitStrategy.ShuffleSentence(sentence);

            var timerUnitStrategy = new TimerUnitStrategy();

            sentence = timerUnitStrategy.ShuffleSentence(sentence);


            Assert.That(sentence.Texts[0].pe_text, Is.EqualTo("Economic"));
            Assert.That(sentence.Texts[1].pe_text, Is.EqualTo("growth"));    //NN

            Assert.That(sentence.Texts[2].pe_text, Is.EqualTo("this year")); //TM
            Assert.That(sentence.Texts[3].pe_text, Is.EqualTo("so far"));
            Assert.That(sentence.Texts[4].pe_text, Is.EqualTo("has"));       //VBA
            Assert.That(sentence.Texts[5].pe_text, Is.EqualTo("continued")); //PAST
            Assert.That(sentence.Texts[6].pe_text, Is.EqualTo("at"));
            Assert.That(sentence.Texts[7].pe_text, Is.EqualTo("a"));
            Assert.That(sentence.Texts[8].pe_text, Is.EqualTo("moderate"));
            Assert.That(sentence.Texts[9].pe_text, Is.EqualTo("rate"));
            Assert.That(sentence.Texts[10].pe_text, Is.EqualTo(" . "));

            var mDUnitStrategy = new MdUnitStrategy();

            sentence = mDUnitStrategy.ShuffleSentence(sentence);

            Assert.That(sentence.Texts[0].pe_text, Is.EqualTo("Economic"));
            Assert.That(sentence.Texts[1].pe_text, Is.EqualTo("growth"));

            Assert.That(sentence.Texts[2].pe_text, Is.EqualTo("this year")); //TM 2 & 1
            Assert.That(sentence.Texts[3].pe_text, Is.EqualTo("so far"));

            Assert.That(sentence.Texts[4].pe_text, Is.EqualTo("has"));  //VBA

            Assert.That(sentence.Texts[5].pe_text, Is.EqualTo("at"));   //MD1
            Assert.That(sentence.Texts[6].pe_text, Is.EqualTo("a"));
            Assert.That(sentence.Texts[7].pe_text, Is.EqualTo("moderate"));
            Assert.That(sentence.Texts[8].pe_text, Is.EqualTo("rate"));

            Assert.That(sentence.Texts[9].pe_text, Is.EqualTo("continued")); //PAST
            Assert.That(sentence.Texts[10].pe_text, Is.EqualTo(" . "));

            var mdbkUnitStrategy = new MdbkUnitStrategy();

            sentence = mdbkUnitStrategy.ShuffleSentence(sentence);

            var mdNulThatUnitStrategy = new MdNulThatUnitStrategy();

            sentence = mdNulThatUnitStrategy.ShuffleSentence(sentence);

            var ddlUnitStrategy = new DdlUnitStrategy();

            sentence = ddlUnitStrategy.ShuffleSentence(sentence);

            var pyYoUnitStrategy = new PyYoUnitStrategy();

            sentence = pyYoUnitStrategy.ShuffleSentence(sentence);

            var percentUnitStrategy = new PercentUnitStrategy();

            sentence = percentUnitStrategy.ShuffleSentence(sentence);

            var clauserUnitStrategy = new ClauserUnitStrategy();

            sentence = clauserUnitStrategy.ShuffleSentence(sentence);

            Assert.That(sentence.Texts[0].pe_text, Is.EqualTo("Economic"));
            Assert.That(sentence.Texts[1].pe_text, Is.EqualTo("growth"));

            Assert.That(sentence.Texts[2].pe_text, Is.EqualTo("this year")); //TM 2 & 1
            Assert.That(sentence.Texts[3].pe_text, Is.EqualTo("so far"));

            Assert.That(sentence.Texts[4].pe_text, Is.EqualTo("has"));  //VBA

            Assert.That(sentence.Texts[5].pe_text, Is.EqualTo("at"));   //MD1
            Assert.That(sentence.Texts[6].pe_text, Is.EqualTo("a"));
            Assert.That(sentence.Texts[7].pe_text, Is.EqualTo("moderate"));
            Assert.That(sentence.Texts[8].pe_text, Is.EqualTo("rate"));

            Assert.That(sentence.Texts[9].pe_text, Is.EqualTo("continued")); //PAST
            Assert.That(sentence.Texts[10].pe_text, Is.EqualTo(" . "));
        }
示例#11
0
        public void EachStrategyInTurnMaintainsTheSentenceEnding()
        {
            var realGdpSentence = new Sentence()
            {
                Texts = new List <Text>()
                {
                    new Text()
                    {
                        pe_tag_revised = "ADJ", pe_text = "Real"
                    },
                    new Text()
                    {
                        pe_tag_revised = "NN", pe_text = "gdp"
                    },
                    new Text()
                    {
                        pe_tag_revised = "PAST", pe_text = "rose"
                    },
                    new Text()
                    {
                        pe_tag_revised = "MD2", pe_text = "at"
                    },
                    new Text()
                    {
                        pe_tag_revised = "PREN1", pe_text = "an"
                    },
                    new Text()
                    {
                        pe_tag_revised = "NN", pe_text = "annual rate"
                    },
                    new Text()
                    {
                        pe_tag_revised = "MD2", pe_text = "of "
                    },
                    new Text()
                    {
                        pe_tag_revised = "PREN2", pe_text = "about"
                    },
                    new Text()
                    {
                        pe_tag_revised = "DG", pe_text = "2"
                    },
                    new Text()
                    {
                        pe_tag_revised = "NN", pe_text = "percent"
                    },
                    new Text()
                    {
                        pe_tag_revised = "MD3", pe_text = "in"
                    },
                    new Text()
                    {
                        pe_tag_revised = "PREN3", pe_text = "the"
                    },
                    new Text()
                    {
                        pe_tag_revised = "TM1", pe_text = "first qtr"
                    },
                    new Text()
                    {
                        pe_tag_revised = "CS", pe_text = "after"
                    },                                                          //CS 13
                    new Text()
                    {
                        pe_tag_revised = "PRES", pe_text = "increasing"
                    },
                    new Text()
                    {
                        pe_tag_revised = "MD4", pe_text = "at"
                    },
                    new Text()
                    {
                        pe_tag_revised = "PREN4", pe_text = "a"
                    },
                    new Text()
                    {
                        pe_tag_revised = "DG", pe_text = "3"
                    },
                    new Text()
                    {
                        pe_tag_revised = "NN", pe_text = "percent"
                    },
                    new Text()
                    {
                        pe_tag_revised = "NN", pe_text = "pace"
                    },
                    new Text()
                    {
                        pe_tag_revised = "MD5", pe_text = "in"
                    },
                    new Text()
                    {
                        pe_tag_revised = "PREN5", pe_text = "the"
                    },
                    new Text()
                    {
                        pe_tag_revised = "TM2", pe_text = "4th qtr"
                    },
                    new Text()
                    {
                        pe_tag_revised = "MD6", pe_text = " of "
                    },
                    new Text()
                    {
                        pe_tag_revised = "TMY", pe_text = "2011"
                    },
                    new Text()
                    {
                        pe_tag_revised = "PY", pe_text = "zhihou"
                    },
                    new Text()
                    {
                        pe_tag_revised = "BKP", pe_text = " . "
                    }
                }
            };

            ClauserUnitStrategy clauserUnitStrategy = new ClauserUnitStrategy();

            realGdpSentence = clauserUnitStrategy.ShuffleSentence(realGdpSentence);

            Assert.That(realGdpSentence.Texts[0].pe_tag_revised == "CS");
            Assert.That(realGdpSentence.Texts[realGdpSentence.TextCount - 1].pe_text == " . ");

            AdverbUnitStrategy adverbUnitStrategy = new AdverbUnitStrategy();

            realGdpSentence = adverbUnitStrategy.ShuffleSentence(realGdpSentence);

            Assert.That(realGdpSentence.Texts[realGdpSentence.TextCount - 1].pe_text == " . ");

            TimerUnitStrategy timerUnitStrategy = new TimerUnitStrategy();

            realGdpSentence = timerUnitStrategy.ShuffleSentence(realGdpSentence);

            Assert.That(realGdpSentence.Texts[realGdpSentence.TextCount - 1].pe_text == " . ");
        }