コード例 #1
0
        public void WhenNNThenMD_MoveMDBeforeNN()
        {
            var sentenceWithMdUnits = new Sentence()
            {
                Texts = new List <Text>()
                {
                    new Text()
                    {
                        pe_tag_revised = "NN", pe_text = "People", pe_order = 10
                    },
                    new Text()
                    {
                        pe_tag_revised = "MD1", pe_text = "of", pe_order = 20
                    },
                    new Text()
                    {
                        pe_tag_revised = "", pe_text = "the", pe_order = 30
                    },
                    new Text()
                    {
                        pe_tag_revised = "", pe_text = "highest", pe_order = 40
                    },
                    new Text()
                    {
                        pe_tag_revised = "", pe_text = "degree", pe_order = 50
                    },
                    new Text()
                    {
                        pe_tag_revised = "MD2", pe_text = "of", pe_order = 60
                    },
                    new Text()
                    {
                        pe_tag_revised = null, pe_text = "integrity", pe_order = 70
                    },
                    new Text()
                    {
                        pe_tag_revised = "BKP", pe_text = " . ", pe_order = 80
                    },
                }
            };

            var strategy = new MdUnitStrategy();

            sentenceWithMdUnits =
                strategy.ShuffleSentence(sentenceWithMdUnits);

            Assert.That(sentenceWithMdUnits.Texts[0].pe_text, Is.EqualTo("of")); //MD2
            Assert.That(sentenceWithMdUnits.Texts[1].pe_text, Is.EqualTo("integrity"));
            Assert.That(sentenceWithMdUnits.Texts[2].pe_text, Is.EqualTo("of")); //MD1
            Assert.That(sentenceWithMdUnits.Texts[3].pe_text, Is.EqualTo("the"));
            Assert.That(sentenceWithMdUnits.Texts[4].pe_text, Is.EqualTo("highest"));
            Assert.That(sentenceWithMdUnits.Texts[5].pe_text, Is.EqualTo("degree"));
            Assert.That(sentenceWithMdUnits.Texts[6].pe_text, Is.EqualTo(" de "));
            Assert.That(sentenceWithMdUnits.Texts[7].pe_text, Is.EqualTo("People")); //NN
            Assert.That(sentenceWithMdUnits.Texts[8].pe_text, Is.EqualTo(" . "));

            Assert.That(sentenceWithMdUnits.Texts[0].pe_merge_ahead, Is.EqualTo(6));
        }
コード例 #2
0
        public void WhenMDIsNotAtTheStart()
        {
            var sentenceWithMdUnits = new Sentence()
            {
                Texts = new List <Text>()
                {
                    new Text()
                    {
                        pe_tag_revised = "NA", pe_text = "And"
                    },
                    new Text()
                    {
                        pe_tag_revised = "MD1", pe_text = "in"
                    },
                    new Text()
                    {
                        pe_tag_revised = "MD2", pe_text = "of"
                    },
                    new Text()
                    {
                        pe_tag_revised = "NN", pe_text = "something"
                    },
                    new Text()
                    {
                        pe_tag_revised = "MD3", pe_text = "in"
                    },
                    new Text()
                    {
                        pe_tag_revised = "VB", pe_text = "going"
                    },
                    new Text()
                    {
                        pe_tag_revised = "BKP", pe_text = " . "
                    },
                }
            };

            var strategy = new MdUnitStrategy();

            sentenceWithMdUnits =
                strategy.ShuffleSentence(sentenceWithMdUnits);

            Assert.That(sentenceWithMdUnits.Texts[0].pe_tag_revised, Is.EqualTo("NA"));
            Assert.That(sentenceWithMdUnits.Texts[1].pe_tag_revised, Is.EqualTo("MD3"));
            Assert.That(sentenceWithMdUnits.Texts[2].pe_tag_revised, Is.EqualTo("MD2"));
            Assert.That(sentenceWithMdUnits.Texts[3].pe_tag_revised, Is.EqualTo("NN"));
            Assert.That(sentenceWithMdUnits.Texts[4].pe_tag_revised, Is.EqualTo("MD1"));
            Assert.That(sentenceWithMdUnits.Texts[5].pe_tag_revised, Is.EqualTo("PY"));
            Assert.That(sentenceWithMdUnits.Texts[6].pe_tag_revised, Is.EqualTo("VB"));
            Assert.That(sentenceWithMdUnits.Texts[7].pe_tag_revised, Is.EqualTo("BKP"));

            Assert.That(sentenceWithMdUnits.Texts[1].pe_merge_ahead, Is.EqualTo(4));
        }
コード例 #3
0
        public void WhenVBUnitThenUseAsBreaker()
        {
            // MD3, MD2, MD1
            var sentenceWithVbUnit = new Sentence()
            {
                Texts = new List <Text>()
                {
                    new Text()
                    {
                        pe_tag_revised = "MD1", pe_text = "in"
                    },
                    new Text()
                    {
                        pe_tag_revised = "MD2", pe_text = "of"
                    },
                    new Text()
                    {
                        pe_tag_revised = "NN", pe_text = "something"
                    },
                    new Text()
                    {
                        pe_tag_revised = "MD3", pe_text = "in"
                    },
                    new Text()
                    {
                        pe_tag_revised = "VB", pe_text = "going"
                    },
                    new Text()
                    {
                        pe_tag_revised = "BKP", pe_text = " . "
                    },
                }
            };

            var strategy = new MdUnitStrategy();

            sentenceWithVbUnit =
                strategy.ShuffleSentence(sentenceWithVbUnit);

            // MD3, MD2, MD1, PY
            Assert.That(sentenceWithVbUnit.Texts[0].pe_tag_revised, Is.EqualTo("MD3"));
            Assert.That(sentenceWithVbUnit.Texts[1].pe_tag_revised, Is.EqualTo("MD2"));
            Assert.That(sentenceWithVbUnit.Texts[2].pe_tag_revised, Is.EqualTo("NN"));
            Assert.That(sentenceWithVbUnit.Texts[3].pe_tag_revised, Is.EqualTo("MD1"));
            Assert.That(sentenceWithVbUnit.Texts[4].pe_tag_revised, Is.EqualTo("PY")); // de particle
            Assert.That(sentenceWithVbUnit.Texts[5].pe_tag_revised, Is.EqualTo("VB"));
            Assert.That(sentenceWithVbUnit.Texts[6].pe_tag_revised, Is.EqualTo("BKP"));

            Assert.That(sentenceWithVbUnit.Texts[0].pe_merge_ahead, Is.EqualTo(4));
        }
コード例 #4
0
        public void WhenSortedMDUnitThenDontSortButAddDe()
        {
            // MD3, MD2, MD1
            var sentenceWithDescendingMdUnits = new Sentence()
            {
                Texts = new List <Text>()
                {
                    new Text()
                    {
                        pe_tag_revised = "MD3", pe_text = "in"
                    },
                    new Text()
                    {
                        pe_tag_revised = "MD2", pe_text = "of"
                    },
                    new Text()
                    {
                        pe_tag_revised = "NN", pe_text = "something"
                    },
                    new Text()
                    {
                        pe_tag_revised = "MD1", pe_text = "in"
                    },
                    new Text()
                    {
                        pe_tag_revised = "BKP", pe_text = " . "
                    },
                }
            };

            var strategy = new MdUnitStrategy();

            sentenceWithDescendingMdUnits =
                strategy.ShuffleSentence(sentenceWithDescendingMdUnits);

            // MD3, MD2, MD1, PY
            Assert.That(sentenceWithDescendingMdUnits.Texts[0].pe_tag_revised, Is.EqualTo("MD3"));
            Assert.That(sentenceWithDescendingMdUnits.Texts[1].pe_tag_revised, Is.EqualTo("MD2"));
            Assert.That(sentenceWithDescendingMdUnits.Texts[2].pe_tag_revised, Is.EqualTo("NN"));
            Assert.That(sentenceWithDescendingMdUnits.Texts[3].pe_tag_revised, Is.EqualTo("MD1"));
            Assert.That(sentenceWithDescendingMdUnits.Texts[4].pe_tag_revised, Is.EqualTo("PY"));
            Assert.That(sentenceWithDescendingMdUnits.Texts[5].pe_tag_revised, Is.EqualTo("BKP"));

            Assert.That(sentenceWithDescendingMdUnits.Texts[0].pe_merge_ahead, Is.EqualTo(4));
        }
コード例 #5
0
        public void WhenADJThenNNThenMDUnit_MoveMDunitBeforeADJ()
        {
            var sentenceWithMdUnits = new Sentence()
            {
                Texts = new List <Text>()
                {
                    new Text()
                    {
                        pe_tag_revised = "ADJ", pe_text = "Nice", pe_order = 10
                    },
                    new Text()
                    {
                        pe_tag_revised = "NN", pe_text = "folk", pe_order = 20
                    },
                    new Text()
                    {
                        pe_tag_revised = "MD1", pe_text = "of", pe_order = 30
                    },
                    new Text()
                    {
                        pe_tag_revised = null, pe_text = "integrity", pe_order = 40
                    },
                    new Text()
                    {
                        pe_tag_revised = "BKP", pe_text = " . ", pe_order = 50
                    },
                }
            };

            var strategy = new MdUnitStrategy();

            sentenceWithMdUnits =
                strategy.ShuffleSentence(sentenceWithMdUnits);

            Assert.That(sentenceWithMdUnits.Texts[0].pe_text, Is.EqualTo("of"));   //MD1
            Assert.That(sentenceWithMdUnits.Texts[1].pe_text, Is.EqualTo("integrity"));
            Assert.That(sentenceWithMdUnits.Texts[2].pe_text, Is.EqualTo("Nice")); //ADJ
            Assert.That(sentenceWithMdUnits.Texts[3].pe_text, Is.EqualTo("folk")); //NN
            Assert.That(sentenceWithMdUnits.Texts[4].pe_text, Is.EqualTo(" . "));

            Assert.That(sentenceWithMdUnits.Texts[0].pe_merge_ahead, Is.EqualTo(1));
        }
コード例 #6
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);
        }
コード例 #7
0
        public void WhenVBAPastNNMD_MoveMDAfterVba()
        {
            var sentence = new Sentence()
            {
                Texts = new List <Text>()
                {
                    new Text()
                    {
                        pe_tag_revised = "ADJ", pe_text = "Economic", pe_order = 10
                    },
                    new Text()
                    {
                        pe_tag_revised = "NN", pe_text = "growth", pe_order = 20
                    },
                    new Text()
                    {
                        pe_tag_revised = "VBA", pe_text = "has", pe_order = 30
                    },
                    new Text()
                    {
                        pe_tag_revised = "PAST", pe_text = "continued", pe_order = 40
                    },
                    new Text()
                    {
                        pe_tag_revised = "MD1", pe_text = "at", pe_order = 50
                    },
                    new Text()
                    {
                        pe_tag_revised = "PREN", pe_text = "a"
                    },
                    new Text()
                    {
                        pe_tag_revised = "ADJ", pe_text = "moderate"
                    },
                    new Text()
                    {
                        pe_tag_revised = "NN", pe_text = "rate"
                    },
                    new Text()
                    {
                        pe_tag_revised = "BKP", pe_text = " . "
                    },
                }
            };

            var strategy = new MdUnitStrategy();

            sentence =
                strategy.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("has")); //VBA
            Assert.That(sentence.Texts[3].pe_text, Is.EqualTo("at"));  //MD1
            Assert.That(sentence.Texts[4].pe_text, Is.EqualTo("a"));
            Assert.That(sentence.Texts[5].pe_text, Is.EqualTo("moderate"));
            Assert.That(sentence.Texts[6].pe_text, Is.EqualTo("rate")); //PAST

            Assert.That(sentence.Texts[7].pe_text, Is.EqualTo("continued"));
            Assert.That(sentence.Texts[8].pe_text, Is.EqualTo(" . "));
        }
コード例 #8
0
        public void WhenMdNulThatBeforeVbPastPresBeforeNN_MoveMdBeforeVbPastPres()
        {
            var sentenceWithMdUnits = new Sentence()
            {
                Texts = new List <Text>()
                {
                    new Text()
                    {
                        pe_tag_revised = null, pe_text = "And", pe_order = 10
                    },
                    new Text()
                    {
                        pe_tag_revised = "MDNUL", pe_text = "that", pe_order = 20
                    },
                    new Text()
                    {
                        pe_tag_revised = null, pe_text = "is", pe_order = 30
                    },
                    new Text()
                    {
                        pe_tag_revised = null, pe_text = "Why", pe_order = 40
                    },

                    new Text()
                    {
                        pe_tag_revised = null, pe_text = "We", pe_order = 50
                    },
                    new Text()
                    {
                        pe_tag_revised = "VBA", pe_text = "will", pe_order = 60
                    },

                    new Text()
                    {
                        pe_tag_revised = "VB", pe_text = "meet", pe_order = 70
                    },
                    new Text()
                    {
                        pe_tag_revised = "NN", pe_text = "him", pe_order = 80
                    },

                    new Text()
                    {
                        pe_tag_revised = "MD2", pe_text = "of", pe_order = 90
                    },
                    new Text()
                    {
                        pe_tag_revised = null, pe_text = "the", pe_order = 100
                    },
                    new Text()
                    {
                        pe_tag_revised = null, pe_text = "city", pe_order = 170
                    },
                    new Text()
                    {
                        pe_tag_revised = "MD1", pe_text = "at", pe_order = 180
                    },
                    new Text()
                    {
                        pe_tag_revised = null, pe_text = "the", pe_order = 190
                    },
                    new Text()
                    {
                        pe_tag_revised = null, pe_text = "centre", pe_order = 100
                    },

                    new Text()
                    {
                        pe_tag_revised = "BKP", pe_text = " . ", pe_order = 110
                    }
                }
            };

            var strategy = new MdUnitStrategy();

            sentenceWithMdUnits =
                strategy.ShuffleSentence(sentenceWithMdUnits);

            Assert.That(sentenceWithMdUnits.Texts[0].pe_text, Is.EqualTo("And"));
            Assert.That(sentenceWithMdUnits.Texts[1].pe_text, Is.EqualTo("that")); //MDNUL
            Assert.That(sentenceWithMdUnits.Texts[2].pe_text, Is.EqualTo("is"));
            Assert.That(sentenceWithMdUnits.Texts[3].pe_text, Is.EqualTo("Why"));

            Assert.That(sentenceWithMdUnits.Texts[4].pe_text, Is.EqualTo("We"));
            Assert.That(sentenceWithMdUnits.Texts[5].pe_text, Is.EqualTo("will")); //VBA

            Assert.That(sentenceWithMdUnits.Texts[6].pe_text, Is.EqualTo("meet")); //VB

            Assert.That(sentenceWithMdUnits.Texts[7].pe_text, Is.EqualTo("of"));   //MD2
            Assert.That(sentenceWithMdUnits.Texts[8].pe_text, Is.EqualTo("the"));
            Assert.That(sentenceWithMdUnits.Texts[9].pe_text, Is.EqualTo("city"));

            Assert.That(sentenceWithMdUnits.Texts[10].pe_text, Is.EqualTo("at"));   //MD1
            Assert.That(sentenceWithMdUnits.Texts[11].pe_text, Is.EqualTo("the"));
            Assert.That(sentenceWithMdUnits.Texts[12].pe_text, Is.EqualTo("centre"));
            Assert.That(sentenceWithMdUnits.Texts[13].pe_text, Is.EqualTo(" de "));
            Assert.That(sentenceWithMdUnits.Texts[14].pe_text, Is.EqualTo("him"));
        }
コード例 #9
0
        public void WhenNNThenMDwithNoPrenOrAdj_MoveMDBeforeNN()
        {
            var sentenceWithMdUnits = new Sentence()
            {
                Texts = new List <Text>()
                {
                    new Text()
                    {
                        pe_tag_revised = "", pe_text = "They", pe_order = 10
                    },
                    new Text()
                    {
                        pe_tag_revised = "PAST", pe_text = "met", pe_order = 20
                    },
                    new Text()
                    {
                        pe_tag_revised = "NN", pe_text = "him", pe_order = 30
                    },
                    new Text()
                    {
                        pe_tag_revised = "MD1", pe_text = "at", pe_order = 40
                    },
                    new Text()
                    {
                        pe_tag_revised = "", pe_text = "the", pe_order = 50
                    },
                    new Text()
                    {
                        pe_tag_revised = "", pe_text = "centre", pe_order = 60
                    },
                    new Text()
                    {
                        pe_tag_revised = "MD2", pe_text = "of", pe_order = 70
                    },
                    new Text()
                    {
                        pe_tag_revised = null, pe_text = "the", pe_order = 80
                    },
                    new Text()
                    {
                        pe_tag_revised = null, pe_text = "city", pe_order = 90
                    },
                    new Text()
                    {
                        pe_tag_revised = "BKP", pe_text = " . ", pe_order = 100
                    },
                }
            };

            var strategy = new MdUnitStrategy();

            sentenceWithMdUnits =
                strategy.ShuffleSentence(sentenceWithMdUnits);

            Assert.That(sentenceWithMdUnits.Texts[0].pe_text, Is.EqualTo("They"));
            Assert.That(sentenceWithMdUnits.Texts[1].pe_text, Is.EqualTo("met")); // PAST

            Assert.That(sentenceWithMdUnits.Texts[2].pe_text, Is.EqualTo("of"));  //MD2
            Assert.That(sentenceWithMdUnits.Texts[3].pe_text, Is.EqualTo("the"));
            Assert.That(sentenceWithMdUnits.Texts[4].pe_text, Is.EqualTo("city"));
            Assert.That(sentenceWithMdUnits.Texts[5].pe_text, Is.EqualTo("at")); //MD1
            Assert.That(sentenceWithMdUnits.Texts[6].pe_text, Is.EqualTo("the"));
            Assert.That(sentenceWithMdUnits.Texts[7].pe_text, Is.EqualTo("centre"));
            Assert.That(sentenceWithMdUnits.Texts[8].pe_text, Is.EqualTo(" de "));

            Assert.That(sentenceWithMdUnits.Texts[9].pe_text, Is.EqualTo("him"));
            Assert.That(sentenceWithMdUnits.Texts[10].pe_text, Is.EqualTo(" . "));

            Assert.That(sentenceWithMdUnits.Texts[2].pe_merge_ahead, Is.EqualTo(6));
        }
コード例 #10
0
        public void WhenBKPThenPRENThenNNThenMDUnit_MoveMDunitBeforePREN()
        {
            var sentenceWithMdUnits = new Sentence()
            {
                Texts = new List <Text>()
                {
                    new Text()
                    {
                        pe_tag_revised = "", pe_text = "However", pe_order = 10
                    },
                    new Text()
                    {
                        pe_tag_revised = "BKP", pe_text = " , ", pe_order = 20
                    },
                    new Text()
                    {
                        pe_tag_revised = "PREN", pe_text = "A", pe_order = 30
                    },
                    new Text()
                    {
                        pe_tag_revised = "", pe_text = "short", pe_order = 40
                    },
                    new Text()
                    {
                        pe_tag_revised = "NN", pe_text = "leaflet", pe_order = 50
                    },
                    new Text()
                    {
                        pe_tag_revised = "MD2", pe_text = "of", pe_order = 60
                    },
                    new Text()
                    {
                        pe_tag_revised = "", pe_text = "family", pe_order = 70
                    },
                    new Text()
                    {
                        pe_tag_revised = "MD1", pe_text = "on", pe_order = 80
                    },
                    new Text()
                    {
                        pe_tag_revised = "", pe_text = "the", pe_order = 90
                    },
                    new Text()
                    {
                        pe_tag_revised = "", pe_text = "importance", pe_order = 100
                    },
                    new Text()
                    {
                        pe_tag_revised = "BKP", pe_text = " . ", pe_order = 110
                    },
                }
            };

            var strategy = new MdUnitStrategy();

            sentenceWithMdUnits =
                strategy.ShuffleSentence(sentenceWithMdUnits);
            Assert.That(sentenceWithMdUnits.Texts[0].pe_text, Is.EqualTo("However"));
            Assert.That(sentenceWithMdUnits.Texts[1].pe_text, Is.EqualTo(" , ")); //BKP
            Assert.That(sentenceWithMdUnits.Texts[2].pe_text, Is.EqualTo("of"));  //MD2
            Assert.That(sentenceWithMdUnits.Texts[3].pe_text, Is.EqualTo("family"));
            Assert.That(sentenceWithMdUnits.Texts[4].pe_text, Is.EqualTo("on"));  //MD1
            Assert.That(sentenceWithMdUnits.Texts[5].pe_text, Is.EqualTo("the"));
            Assert.That(sentenceWithMdUnits.Texts[6].pe_text, Is.EqualTo("importance"));
            Assert.That(sentenceWithMdUnits.Texts[7].pe_text, Is.EqualTo(" de "));     // de added
            Assert.That(sentenceWithMdUnits.Texts[8].pe_text, Is.EqualTo("A"));        //PREN
            Assert.That(sentenceWithMdUnits.Texts[9].pe_text, Is.EqualTo("short"));
            Assert.That(sentenceWithMdUnits.Texts[10].pe_text, Is.EqualTo("leaflet")); //NN
            Assert.That(sentenceWithMdUnits.Texts[11].pe_text, Is.EqualTo(" . "));

            Assert.That(sentenceWithMdUnits.Texts[2].pe_merge_ahead, Is.EqualTo(5));
        }
コード例 #11
0
        public void VbPrenMdUnit()
        {
            var sentenceWithMdUnits = new Sentence()
            {
                Texts = new List <Text>()
                {
                    new Text()
                    {
                        pe_tag_revised = "NA", pe_text = "They", pe_order = 10
                    },
                    new Text()
                    {
                        pe_tag_revised = "NA", pe_text = "bombed", pe_order = 20
                    },
                    new Text()
                    {
                        pe_tag_revised = "PREN", pe_text = "the", pe_order = 30
                    },
                    new Text()
                    {
                        pe_tag_revised = "NN", pe_text = "place", pe_order = 40
                    },
                    new Text()
                    {
                        pe_tag_revised = "MD3", pe_text = "in", pe_order = 50
                    },
                    new Text()
                    {
                        pe_tag_revised = "NN", pe_text = "city", pe_order = 60
                    },
                    new Text()
                    {
                        pe_tag_revised = "NN", pe_text = "centre", pe_order = 70
                    },
                    new Text()
                    {
                        pe_tag_revised = "MD2", pe_text = " of ", pe_order = 80
                    },
                    new Text()
                    {
                        pe_tag_revised = "NN", pe_text = "river", pe_order = 90
                    },
                    new Text()
                    {
                        pe_tag_revised = "NN", pe_text = "street", pe_order = 100
                    },
                    new Text()
                    {
                        pe_tag_revised = "TM", pe_text = "at", pe_order = 110
                    },
                    new Text()
                    {
                        pe_tag_revised = "TM", pe_text = "5pm", pe_order = 120
                    },
                    new Text()
                    {
                        pe_tag_revised = "MD1", pe_text = "on", pe_order = 130
                    },
                    new Text()
                    {
                        pe_tag_revised = "NN", pe_text = "corner", pe_order = 140
                    },
                    new Text()
                    {
                        pe_tag_revised = "NN", pe_text = "house", pe_order = 150
                    },
                    new Text()
                    {
                        pe_tag_revised = "BKP", pe_text = " . ", pe_order = 160
                    },
                }
            };

            var strategy = new MdUnitStrategy();

            sentenceWithMdUnits =
                strategy.ShuffleSentence(sentenceWithMdUnits);

            Assert.That(sentenceWithMdUnits.Texts[0].pe_text, Is.EqualTo("They"));
            Assert.That(sentenceWithMdUnits.Texts[1].pe_text, Is.EqualTo("bombed"));

            Assert.That(sentenceWithMdUnits.Texts[2].pe_text, Is.EqualTo("in")); // MD unit
            Assert.That(sentenceWithMdUnits.Texts[3].pe_text, Is.EqualTo("city"));
            Assert.That(sentenceWithMdUnits.Texts[4].pe_text, Is.EqualTo("centre"));
            Assert.That(sentenceWithMdUnits.Texts[5].pe_text, Is.EqualTo(" of "));
            Assert.That(sentenceWithMdUnits.Texts[6].pe_text, Is.EqualTo("river"));
            Assert.That(sentenceWithMdUnits.Texts[7].pe_text, Is.EqualTo("street"));
            Assert.That(sentenceWithMdUnits.Texts[8].pe_text, Is.EqualTo("at"));
            Assert.That(sentenceWithMdUnits.Texts[9].pe_text, Is.EqualTo("5pm"));
            Assert.That(sentenceWithMdUnits.Texts[10].pe_text, Is.EqualTo("on"));
            Assert.That(sentenceWithMdUnits.Texts[11].pe_text, Is.EqualTo("corner"));
            Assert.That(sentenceWithMdUnits.Texts[12].pe_text, Is.EqualTo("house"));
            Assert.That(sentenceWithMdUnits.Texts[13].pe_text, Is.EqualTo(" de "));

            Assert.That(sentenceWithMdUnits.Texts[14].pe_text, Is.EqualTo("the"));  // PREN
            Assert.That(sentenceWithMdUnits.Texts[15].pe_text, Is.EqualTo("place"));

            Assert.That(sentenceWithMdUnits.Texts[16].pe_text, Is.EqualTo(" . "));

            Assert.That(sentenceWithMdUnits.Texts[2].pe_merge_ahead, Is.EqualTo(11));
        }
コード例 #12
0
        public void WhenAllMDUnitsHaveManyTexts()
        {
            // MD3, MD2, MD1
            var sentenceWithLargeMdUnits = new Sentence()
            {
                Texts = new List <Text>()
                {
                    new Text()
                    {
                        pe_tag_revised = "MD1", pe_text = "in"
                    },
                    new Text()
                    {
                        pe_tag_revised = "NN", pe_text = "the"
                    },
                    new Text()
                    {
                        pe_tag_revised = "NN", pe_text = "house"
                    },
                    new Text()
                    {
                        pe_tag_revised = "MD2", pe_text = "of"
                    },
                    new Text()
                    {
                        pe_tag_revised = "NN", pe_text = "somewhere"
                    },
                    new Text()
                    {
                        pe_tag_revised = "MD3", pe_text = "in"
                    },
                    new Text()
                    {
                        pe_tag_revised = "NN", pe_text = "the"
                    },
                    new Text()
                    {
                        pe_tag_revised = "NN", pe_text = "room"
                    },
                    new Text()
                    {
                        pe_tag_revised = "VB", pe_text = "going"
                    },
                    new Text()
                    {
                        pe_tag_revised = "BKP", pe_text = " . "
                    },
                }
            };

            var strategy = new MdUnitStrategy();

            sentenceWithLargeMdUnits =
                strategy.ShuffleSentence(sentenceWithLargeMdUnits);

            // MD3, MD2, MD1, PY
            Assert.That(sentenceWithLargeMdUnits.Texts[0].pe_tag_revised, Is.EqualTo("MD3"));
            Assert.That(sentenceWithLargeMdUnits.Texts[1].pe_tag_revised, Is.EqualTo("NN"));
            Assert.That(sentenceWithLargeMdUnits.Texts[2].pe_tag_revised, Is.EqualTo("NN"));
            Assert.That(sentenceWithLargeMdUnits.Texts[3].pe_tag_revised, Is.EqualTo("MD2"));
            Assert.That(sentenceWithLargeMdUnits.Texts[4].pe_tag_revised, Is.EqualTo("NN"));
            Assert.That(sentenceWithLargeMdUnits.Texts[5].pe_tag_revised, Is.EqualTo("MD1"));
            Assert.That(sentenceWithLargeMdUnits.Texts[6].pe_tag_revised, Is.EqualTo("NN"));
            Assert.That(sentenceWithLargeMdUnits.Texts[7].pe_tag_revised, Is.EqualTo("NN"));
            Assert.That(sentenceWithLargeMdUnits.Texts[8].pe_tag_revised, Is.EqualTo("PY"));
            Assert.That(sentenceWithLargeMdUnits.Texts[9].pe_tag_revised, Is.EqualTo("VB"));
            Assert.That(sentenceWithLargeMdUnits.Texts[10].pe_tag_revised, Is.EqualTo("BKP"));

            Assert.That(sentenceWithLargeMdUnits.Texts[0].pe_merge_ahead, Is.EqualTo(8));
        }
コード例 #13
0
        public void WhenManyMDUnitsShuffleDescendingAndAddDe()
        {
            var sentence = new Sentence()
            {
                Texts = new List <Text>()
                {
                    new Text()
                    {
                        pe_tag = "", pe_text = "the"
                    },
                    new Text()
                    {
                        pe_tag = "", pe_text = "house"
                    },
                    new Text()
                    {
                        pe_tag = "MD1", pe_text = "on"
                    },
                    new Text()
                    {
                        pe_tag = "", pe_text = "the"
                    },
                    new Text()
                    {
                        pe_tag = "", pe_text = "corner"
                    },
                    new Text()
                    {
                        pe_tag = "MD2", pe_text = "of"
                    },
                    new Text()
                    {
                        pe_tag = "", pe_text = "River"
                    },
                    new Text()
                    {
                        pe_tag = "", pe_text = "Street"
                    },
                    new Text()
                    {
                        pe_tag = "MD3", pe_text = "in"
                    },
                    new Text()
                    {
                        pe_tag = "", pe_text = "city"
                    },
                    new Text()
                    {
                        pe_tag = "", pe_text = "centre"
                    },
                    new Text()
                    {
                        pe_tag = "BKP", pe_text = "."
                    }
                }
            };

            var strategy = new MdUnitStrategy();

            sentence =
                strategy.ShuffleSentence(sentence);

            Assert.That(sentence.Texts[0].pe_text, Is.EqualTo("the"));
            Assert.That(sentence.Texts[1].pe_text, Is.EqualTo("house"));
            Assert.That(sentence.Texts[2].pe_text, Is.EqualTo("in"));
            Assert.That(sentence.Texts[3].pe_text, Is.EqualTo("city"));
            Assert.That(sentence.Texts[4].pe_text, Is.EqualTo("centre"));
            Assert.That(sentence.Texts[5].pe_text, Is.EqualTo("of"));
            Assert.That(sentence.Texts[6].pe_text, Is.EqualTo("River"));
            Assert.That(sentence.Texts[7].pe_text, Is.EqualTo("Street"));
            Assert.That(sentence.Texts[8].pe_text, Is.EqualTo("on"));
            Assert.That(sentence.Texts[9].pe_text, Is.EqualTo("the"));
            Assert.That(sentence.Texts[10].pe_text, Is.EqualTo("corner"));
            Assert.That(sentence.Texts[11].pe_text, Is.EqualTo(" de "));
            Assert.That(sentence.Texts[12].pe_text, Is.EqualTo("."));

            Assert.That(sentence.Texts[2].pe_merge_ahead, Is.EqualTo(9));
        }
コード例 #14
0
        public void WhenEconomicGrowth_Move_Md_before_VbaHas()
        {
            var sentenceWithMdUnits = new Sentence()
            {
                Texts = new List <Text>()
                {
                    new Text()
                    {
                        pe_tag_revised = "ADJ", pe_text = "Economic", pe_order = 10
                    },
                    new Text()
                    {
                        pe_tag_revised = "NN", pe_text = "growth", pe_order = 20
                    },
                    new Text()
                    {
                        pe_tag_revised = "TM3", pe_text = "this year", pe_order = 40
                    },
                    new Text()
                    {
                        pe_tag_revised = "TM2", pe_text = "so far", pe_order = 60
                    },
                    new Text()
                    {
                        pe_tag_revised = "VBA", pe_text = "has", pe_order = 30
                    },
                    new Text()
                    {
                        pe_tag_revised = "PAST", pe_text = "continued", pe_order = 170
                    },
                    new Text()
                    {
                        pe_tag_revised = "MD1", pe_text = "at", pe_order = 80
                    },
                    new Text()
                    {
                        pe_tag_revised = "PREN", pe_text = "a", pe_order = 90
                    },
                    new Text()
                    {
                        pe_tag_revised = "ADJ", pe_text = "moderate", pe_order = 100
                    },
                    new Text()
                    {
                        pe_tag_revised = "NN", pe_text = "rate", pe_order = 100
                    },
                    new Text()
                    {
                        pe_tag_revised = "BKP", pe_text = " . ", pe_order = 180
                    }
                }
            };

            var strategy = new MdUnitStrategy();

            sentenceWithMdUnits =
                strategy.ShuffleSentence(sentenceWithMdUnits);

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

            Assert.That(sentenceWithMdUnits.Texts[2].pe_text, Is.EqualTo("this year"));
            Assert.That(sentenceWithMdUnits.Texts[3].pe_text, Is.EqualTo("so far"));

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


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

            Assert.That(sentenceWithMdUnits.Texts[9].pe_text, Is.EqualTo("continued"));
        }
コード例 #15
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(" . "));
        }