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);
        }