public void Resolve_method_should_return_a_list_of_all_passed_rule()
        {
            // arrange
            var workingMemory = SeedWorkingMemory();
            var ruleBase      = SeedRuleBase();
            var engine        = new InferenceEngine.Builder()
                                .WithWorkingMemory(workingMemory)
                                .WithRuleBase(ruleBase)
                                .Build();
            var rules      = engine.Match();
            var matchCount = rules.Count;

            // act
            var resolvedRules = engine.Resolve(rules);
            var resolvedCount = resolvedRules.Count;

            // assert
            Assert.Equal(matchCount, resolvedCount);
        }
        public void Execute_method_should_trigger_rule_actions_against_the_working_memory()
        {
            // arrange
            var workingMemory = SeedWorkingMemory();
            var ruleBase      = SeedRuleBase();
            var engine        = new InferenceEngine.Builder()
                                .WithWorkingMemory(workingMemory)
                                .WithRuleBase(ruleBase)
                                .Build();
            var rules         = engine.Match();
            var resolvedRules = engine.Resolve(rules);

            // act
            engine.Execute(resolvedRules);
            var newFacts         = workingMemory.Facts;
            var potentialCSharp  = newFacts.FirstOrDefault(x => x.Assertion == "Potential C# experience");
            var potentialAngular = newFacts.FirstOrDefault(x => x.Assertion == "Potential Angular experience");

            // assert
            Assert.IsType <Fact>(potentialCSharp);
            Assert.IsType <Fact>(potentialAngular);
        }