public void RuleToLimitMatchToTermRefs() { Dictionary <string, KeyTermRule> rules = new Dictionary <string, KeyTermRule>(); KeyTermRule rule = new KeyTermRule(); rule.id = "ask"; rule.Rule = KeyTermRule.RuleType.MatchForRefOnly; rules[rule.id] = rule; KeyTermMatchBuilder bldr = new KeyTermMatchBuilder(AddMockedKeyTerm(rule.id, 34), rules); Assert.AreEqual(1, bldr.Matches.Count()); KeyTermMatch ktm = VerifyKeyTermMatch(bldr, 0, false, "ask"); Assert.IsFalse(ktm.AppliesTo(30, 33)); Assert.IsTrue(ktm.AppliesTo(34, 34)); Assert.IsFalse(ktm.AppliesTo(35, 39)); }
/// ------------------------------------------------------------------------------------ /// <summary> /// Verifies the key term match. /// </summary> /// ------------------------------------------------------------------------------------ private static KeyTermMatch VerifyKeyTermMatch(KeyTermMatchBuilder bldr, int iMatch, bool matchAnywhere, params string[] words) { KeyTermMatch ktm = bldr.Matches.ElementAt(iMatch); Assert.AreEqual(words.Length, ktm.Words.Count()); for (int i = 0; i < words.Length; i++) { Assert.AreEqual(words[i], ktm.Words.ElementAt(i).Text); } if (matchAnywhere) { Random r = new Random(DateTime.Now.Millisecond); Assert.IsTrue(ktm.AppliesTo(r.Next(), r.Next())); } return(ktm); }