public void TestReduceWithBaseForm()
        {
            var tokens = tokenizer.Tokenize("始めてみることにした");
            var words  = WordConjungateCombiner.Combine(tokens, dictionary);

            Assert.AreEqual(5, words.Count);
            int             index   = words.FindIndex(0, words.Count, (x) => { return(x.Surface.Contains("こと")); });
            WordListReducer reducer = new WordListReducer();
            var             newWord = reducer.ReduceOnce(index, words, dictionary, true);

            Assert.AreEqual("ことにした", newWord.Surface);
            Assert.AreEqual("コトニシタ", newWord.Pronunciation);
            Assert.AreEqual("コトニシタ", newWord.Reading);
            Assert.AreEqual("ことにする", newWord.BaseForm);

            tokens = tokenizer.Tokenize("というものであった");
            words  = WordConjungateCombiner.Combine(tokens, dictionary);
            Assert.AreEqual(3, words.Count);
            index   = words.FindIndex(0, words.Count, (x) => { return(x.Surface.Contains("もの")); });
            reducer = new WordListReducer();
            newWord = reducer.ReduceOnce(index, words, dictionary, true);
            Assert.AreEqual("ものであった", newWord.Surface);
            Assert.AreEqual("モノデアッタ", newWord.Pronunciation);
            Assert.AreEqual("モノデアッタ", newWord.Reading);
            Assert.AreEqual("ものである", newWord.BaseForm);
        }
        public void TestIfRemoveWrongEndIndex()
        {
            var             tokens  = tokenizer.Tokenize("私だからな");
            var             words   = WordConjungateCombiner.Combine(tokens, dictionary);
            WordListReducer reducer = new WordListReducer();
            var             newWord = reducer.ReduceOnce(1, words, dictionary, true);

            Assert.AreEqual("だから", newWord.Surface);
            Assert.AreEqual("ダカラ", newWord.Pronunciation);
            Assert.AreEqual("ダカラ", newWord.Reading);
        }
        public void TestReduceOnce()
        {
            var             tokens  = tokenizer.Tokenize("そこで私たちを待っている幸福が、私たちが望むような幸福ではないかもしれない。");
            var             words   = WordConjungateCombiner.Combine(tokens, dictionary);
            int             index   = words.FindIndex(0, words.Count, (x) => { return(x.Surface.Contains("かも")); });
            WordListReducer reducer = new WordListReducer();
            var             newWord = reducer.ReduceOnce(index, words, dictionary, true);

            Assert.AreEqual("かもしれない", newWord.Surface);
            Assert.AreEqual("カモシレナイ", newWord.Pronunciation);
            Assert.AreEqual("カモシレナイ", newWord.Reading);
        }