public void SeveralWordsTest() { var lookingWords = new List <string>() { "text", "search" }; var fsa = new SearchFsa <char>(); foreach (var word in lookingWords) { fsa.Add(word); } fsa.Prepare(); var words = new List <string>(); var ep = fsa.GetEndPoint((index, context) => { var currentWord = context.ToString(); words.Add(currentWord); }); var data = "the search text example"; foreach (var ch in data) { ep.ProcessIncome(ch); } foreach (var word in lookingWords) { Assert.AreEqual(words.Contains(word), true); } }
public void LoremSampleTest() { var lookingWords = new List <string>() { "vitae", "magna", "tempus", "lectus", "varius", "libero", "sed", "nunc" }; var fsa = new SearchFsa <char>(); foreach (var word in lookingWords) { fsa.Add(word); } fsa.Prepare(); var words = new List <string>(); var ep = fsa.GetEndPoint((index, context) => { var currentWord = context.ToString(); words.Add(currentWord); }); foreach (var ch in Lorem5) { ep.ProcessIncome(ch); } foreach (var word in lookingWords) { Assert.AreEqual(words.Contains(word), true); } }
public void OverlappingTextTest() { var lookingWords = new List <string>() { "test", "tester", "eres", "este", "est", "ste" }; var fsa = new SearchFsa <char>(); foreach (var word in lookingWords) { fsa.Add(word); } fsa.Prepare(); var words = new List <string>(); var ep = fsa.GetEndPoint((index, context) => { var currentWord = context.ToString(); words.Add(currentWord); }); var data = "tetetestesterest"; foreach (var ch in data) { ep.ProcessIncome(ch); } foreach (var word in lookingWords) { Assert.AreEqual(words.Contains(word), true); } }
public List <IToken> IntGetTokens(string sourceText, IFileSource fileSource, OffsetsStore offsetsStore) { var clearText = ClearSourceText(sourceText, offsetsStore); SearchFsa <char> fsa = PrepareFsa(); var tokens = new List <IToken>(); var ep = fsa.GetEndPoint((index, context) => { var currentWord = context.ToString(); var token = new CsToken() { Code = CSharpKeywords.Keywords[currentWord], Position = index, FileSource = fileSource, StringLength = currentWord.Length }; tokens.Add(token); }); foreach (var ch in sourceText) { ep.ProcessIncome(ch); } return(tokens); }
private static SearchFsa <char> PrepareFsa() { if (_fsa == null) { _fsa = new SearchFsa <char>(); foreach (var word in CSharpKeywords.Keywords) { _fsa.Add(word.Key); } _fsa.Prepare(); } return(_fsa); }
public void SingleWordTest() { var fsa = new SearchFsa <char>(); fsa.Add("text"); fsa.Prepare(); var correct = false; var ep = fsa.GetEndPoint((index, context) => { correct = true; }); var data = "the search text example"; foreach (var ch in data) { ep.ProcessIncome(ch); } Assert.AreEqual(correct, true); }
public void OverlappingTextTest2() { var lookingWords = new List <string>() { "telega", "eleg" }; var fsa = new SearchFsa <char>(); foreach (var word in lookingWords) { fsa.Add(word); } fsa.Prepare(); var words = new Dictionary <string, int>(); var ep = fsa.GetEndPoint((index, context) => { var currentWord = context.ToString(); if (!words.ContainsKey(currentWord)) { words[currentWord] = 0; } words[currentWord]++; }); var data = "telegrammaotelega"; foreach (var ch in data) { ep.ProcessIncome(ch); } var keys = words.Keys.ToArray(); Func <string, int, bool> checkWord = (word, cnt) => keys.Contains(word) && (words[word] == cnt); Assert.AreEqual(checkWord("telega", 1), true); Assert.AreEqual(checkWord("eleg", 2), true); }