public void TimeStampConflictResolver() { CustomerFactory factory = new CustomerFactory(new ObjectContext(CreateDataStore())); Customer customer = factory.FindFirst("Name = {0}", "Joe Blow"); Assert.IsNotNull(customer, "SHould have found customer."); Agenda agenda = new Agenda(); agenda.ConflictResolutionStrategy = new TimeStampConflictResolver(); agenda.LoadRulesFromAssemblies = false; agenda.AddObject(customer); Production WhatsMyName = new Production("Sets 'Default Text'."); WhatsMyName.Salience = 1; Variable customer_var = new Variable("$Customer"); Variable customer_name = new Variable("$Customer.Name"); WhatsMyName.AddConditionToLHS(new PositiveCondition(customer_var, "$Customer.Name", customer_name)); WhatsMyName.AddConditionToLHS(new FunctionCondition("Joe Blow", new FuncTerm("funcEquals", new funcEquals()), customer_name)); WhatsMyName.AddConditionToRHS(new InvokeCondition(customer_var, "Shout", customer_name)); WhatsMyName.AddConditionToRHS(new SetCondition(customer_var, "Remarks", "Default Text.")); agenda.AddProduction(WhatsMyName); Production WhatsMyName1 = new Production("Sets 'Squid Text'."); WhatsMyName1.Salience = 1; WhatsMyName1.AddConditionToLHS(new PositiveCondition(customer_var, "$Customer.Name", customer_name)); WhatsMyName1.AddConditionToRHS(new InvokeCondition(customer_var, "Shout", "Squid")); WhatsMyName1.AddConditionToRHS(new SetCondition(customer_var, "Remarks", "Squid Text")); WhatsMyName1.AddConditionToRHS(new AssertCondition(customer_var, "Poop", "Deck")); agenda.AddProduction(WhatsMyName1); agenda.Run(); Assert.IsTrue(agenda.TotalFacts == 11); Assert.IsTrue(agenda.InferredFacts.Count == 1); Assert.IsTrue(agenda.ActivatedRuleCount == 2); Assert.IsTrue(agenda.ActionsTaken.Count == 4); Assert.IsTrue(agenda.ActionsSkipped.Count == 0); Assert.IsTrue(customer.Remarks.Equals("Squid Text"), "Should be 'Default Text.'."); }
public void DigDeep() { CustomerFactory factory = new CustomerFactory(new ObjectContext(CreateDataStore())); Customer customer = factory.FindFirst("Name = {0}", "Joe Blow"); Agenda agenda = new Agenda(); agenda.ConflictResolutionStrategy = new TimeStampConflictResolver(); agenda.LoadRulesFromAssemblies = false; agenda.AddObject(customer); Production WhatsMyName = new Production("WhatsMyName"); WhatsMyName.Salience = 1; Variable customer_var = new Variable("Customer"); Variable customer_name = new Variable("Customer.Name"); Variable site_status = new Variable("Customer.Status"); Variable site_status_name = new Variable("Customer.Status.Name"); WhatsMyName.AddConditionToLHS(new PositiveCondition("C1", customer_var, "$Customer.Name", customer_name)); WhatsMyName.AddConditionToLHS(new FunctionCondition("F1", customer_name, new FuncTerm("funcEquals", new funcEquals()), "Joe Blow")); WhatsMyName.AddConditionToLHS(new PositiveCondition("C2", customer_var, "$Customer.Status", site_status)); WhatsMyName.AddConditionToLHS(new PositiveCondition("C3", site_status, "$Customer.Status.Name", site_status_name)); WhatsMyName.AddConditionToLHS(new FunctionCondition("F2", site_status_name, new FuncTerm("funcEquals", new funcEquals()), "Active")); WhatsMyName.AddConditionToRHS(new SetCondition(customer_var, "Remarks", customer_name)); agenda.AddProduction(WhatsMyName); agenda.Run(); agenda.VisualizeNetworkToFile(@"C:\Temp\DigDeep.log", false); Assert.IsTrue(agenda.TotalFacts == 11); Assert.IsTrue(agenda.InferredFacts.Count == 0); Assert.IsTrue(agenda.ActivatedRuleCount == 1); Assert.IsTrue(agenda.ActionsTaken.Count == 1); Assert.IsTrue(agenda.ActionsSkipped.Count == 0); Assert.IsTrue(customer.Remarks.Equals("Joe Blow"), "Should be 'Default Text.'."); }
public void TestRuleLoader() { CustomerFactory factory = new CustomerFactory(new ObjectContext(CreateDataStore())); Customer customer = factory.FindFirst("Name = {0}", "Joe Blow"); Agenda agenda = new Agenda(); agenda.ConflictResolutionStrategy = new TimeStampConflictResolver(); agenda.LoadRulesFromAssemblies = true; agenda.AddObject(customer); agenda.Run(); agenda.VisualizeNetworkToFile(@"C:\Temp\TestRuleLoader.log", false); Assert.IsTrue(agenda.TotalFacts == 11); Assert.IsTrue(agenda.InferredFacts.Count == 0); Assert.IsTrue(agenda.ActivatedRuleCount == 1); Assert.IsTrue(agenda.ActionsTaken.Count == 1); Assert.IsTrue(agenda.ActionsSkipped.Count == 0); Assert.IsTrue(customer.Remarks.Equals("Joe Blow"), "Should be 'Default Text.'."); }