public void Analyze_WithAMissingTag_InlcudesTheTagInSuggestedTags()
        {
            var parser = new TagRulesParser();
            var rules  = parser.Parse(Resources.Animals);
            var engine = new TagRuleEngine(rules);

            var results = engine.Analyze(new[] { "cat" });

            Assert.Contains(results.SuggestedTags, t => t.Result == "tail");
        }
        public void Analyze_WithARejecteSuggestedTag_DoesNotIncludeTheRejectedTagInSuggestedTags()
        {
            var parser = new TagRulesParser();
            var rules  = parser.Parse(Resources.Animals);
            var engine = new TagRuleEngine(rules);

            var results = engine.Analyze(new[] { "whale" }, new[] { "hair" });

            Assert.DoesNotContain(results.SuggestedTags, s => s.Result == "whiskers");
        }
        public void Analyze_WithAMissingTag_InlcudesTheTagInMissingTagSets()
        {
            var parser = new TagRulesParser();
            var rules  = parser.Parse(Resources.Animals);
            var engine = new TagRuleEngine(rules);

            var results = engine.Analyze(new[] { "cat" });

            Assert.Contains(results.MissingTagSets, s => s.Result.Contains("tail"));
        }
        public void Analyze_WithAMissingTag_DoesNotIncludesRootAbstractDescdendantTagsInSuggestedTags()
        {
            var parser = new TagRulesParser();
            var rules  = parser.Parse(Resources.Animals);
            var engine = new TagRuleEngine(rules);

            var results = engine.Analyze(new[] { "tail" });

            Assert.Contains(results.SuggestedTags, s => s.Result == "animal");
        }
        public void Analyze_WithARejectedMissingTag_DoesNotIncludeTheRejectedTagInMissingTagSets()
        {
            var parser = new TagRulesParser();
            var rules  = parser.Parse(Resources.Animals);
            var engine = new TagRuleEngine(rules);

            var results = engine.Analyze(new[] { "cat" }, new[] { "hair" });

            Assert.DoesNotContain(results.MissingTagSets, s => s.Result.Contains("hair"));
        }
        public void Analyze_WithARejectedExistingTag_IncludesTheExistingTagInTheExistingRejectedTags()
        {
            var parser = new TagRulesParser();
            var rules  = parser.Parse(Resources.Animals);
            var engine = new TagRuleEngine(rules);

            var results = engine.Analyze(new[] { "cat" }, new[] { "mammal" });

            Assert.Contains(results.ExistingRejectedTags, t => t == "cat");
        }
        public void Analyze_WithAnExcludedTag_DoesNotIncludeTheExcludedTagInSuggestedTags()
        {
            var parser = new TagRulesParser();
            var rules  = parser.Parse(Resources.Music);
            var engine = new TagRuleEngine(rules);

            var results = engine.Analyze(new[] { "rock", "instrumental" });

            Assert.DoesNotContain(results.SuggestedTags, s => s.Result == "vocals");
        }
        public void Analyze_WithAMoreSpecificImplication_IncludesBothTagsInMissingTagSets()
        {
            var parser = new TagRulesParser();
            var rules  = parser.Parse(Resources.Animals);
            var engine = new TagRuleEngine(rules);

            var results = engine.Analyze(new[] { "dog" });

            Assert.Contains(results.MissingTagSets, s => s.Result.Contains("hair"));
            Assert.Contains(results.MissingTagSets, s => s.Result.Contains("fur"));
        }
        public void Analyze_WithAMissingTag_InlcudesTheFirstConcreteTagInSuggestedTags()
        {
            var parser = new TagRulesParser();
            var rules  = parser.Parse(Resources.Animals);
            var engine = new TagRuleEngine(rules);

            var results = engine.Analyze(new[] { "tail" });

            Assert.Contains(results.SuggestedTags, s => s.Result == "mammal");
            Assert.DoesNotContain(results.SuggestedTags, s => s.Result == "cat");
        }
Esempio n. 10
0
        public void Analyze_WithAFullyDescribedScenario_DoesNotSuggestExtraTags()
        {
            var parser = new TagRulesParser();
            var rules  = parser.Parse(Resources.Animals);
            var engine = new TagRuleEngine(rules);

            var results = engine.Analyze(new[] { "cat", "tail", "fur", "whiskers" });

            Assert.Empty(results.MissingTagSets);
            Assert.Empty(results.SuggestedTags);
        }
Esempio n. 11
0
        public void Analyze_WithATagAlias_ReplacesTheAliasWithTheCanonicalTagInEffectiveTags()
        {
            var parser = new TagRulesParser();
            var rules  = parser.Parse(Resources.Animals);
            var engine = new TagRuleEngine(rules);

            var results = engine.Analyze(new[] { "feline" });

            Assert.Contains(results.EffectiveTags, t => t == "cat");
            Assert.DoesNotContain(results.EffectiveTags, t => t == "feline");
        }
Esempio n. 12
0
        public void Analyze_WithAMoreSpecificSuggestion_IncludesBothTagsInSuggestedTags()
        {
            var parser = new TagRulesParser();
            var rules  = parser.Parse(Resources.Animals);
            var engine = new TagRuleEngine(rules);

            var results = engine.Analyze(new[] { "whale" });

            Assert.Contains(results.SuggestedTags, s => s.Result == "hair");
            Assert.Contains(results.SuggestedTags, s => s.Result == "whiskers");
        }
Esempio n. 13
0
        public void Analyze_WithADescendantTag_InlcudesAncestorsOfTheTagInEffectiveTags()
        {
            var parser = new TagRulesParser();
            var rules  = parser.Parse(Resources.Animals);
            var engine = new TagRuleEngine(rules);

            var results = engine.Analyze(new[] { "cat" });

            Assert.Contains(results.EffectiveTags, t => t == "mammal");
            Assert.Contains(results.EffectiveTags, t => t == "animal");
            Assert.Contains(results.EffectiveTags, t => t == "object");
        }