public void Fire_OneMatchingFactOfOneKindAndOneOfAnotherKind_FiresSecondRuleDirectlyAndChained() { //Arrange var fact1 = new FactType2 {TestProperty = "Valid Value 1", JoinProperty = "Valid Value 1"}; var fact2 = new FactType3 {TestProperty = "Valid Value 2"}; Session.Insert(fact1); Session.Insert(fact2); //Act Session.Fire(); //Assert AssertFiredOnce<ForwardChainingFirstRule>(); AssertFiredTwice<ForwardChainingSecondRule>(); }
public void Fire_MatchingNotPatternFactsBothKind_DoesNotFire() { //Arrange var fact1 = new FactType1 {TestProperty = "Valid Value 1"}; var fact2 = new FactType2 {TestProperty = "Valid Value 2", JoinProperty = fact1.TestProperty}; var fact3 = new FactType3 {TestProperty = "Valid Value 3", JoinProperty = fact1.TestProperty}; Session.Insert(fact1); Session.Insert(fact2); Session.Insert(fact3); //Act Session.Fire(); //Assert AssertDidNotFire(); }
public void Fire_MatchingNotPatternFactsInsertedThenRetracted_FiresOnce() { //Arrange var fact1 = new FactType1 {TestProperty = "Valid Value 1"}; var fact2 = new FactType2 {TestProperty = "Valid Value 2", JoinProperty = fact1.TestProperty}; var fact3 = new FactType3 {TestProperty = "Valid Value 3", JoinProperty = fact1.TestProperty}; Session.Insert(fact1); Session.Insert(fact2); Session.Insert(fact3); Session.Retract(fact2); Session.Retract(fact3); //Act Session.Fire(); //Assert AssertFiredOnce(); }
public void Fire_MatchingMainFactAndBothPartsOfOrGroup_FiresTwice() { //Arrange var fact1 = new FactType1 {TestProperty = "Valid Value 1"}; var fact2 = new FactType2 {TestProperty = "Valid Value 2", JoinProperty = fact1.TestProperty}; var fact3 = new FactType2 {TestProperty = "Invalid Value 3", JoinProperty = fact1.TestProperty}; var fact4 = new FactType3 {TestProperty = "Valid Value 4", JoinProperty = fact1.TestProperty}; Session.Insert(fact1); Session.Insert(fact2); Session.Insert(fact3); Session.Insert(fact4); //Act Session.Fire(); //Assert AssertFiredTwice(); }
public void Fire_InvalidNotPatternFactsInsertedThenUpdated_DoesNotFire() { //Arrange var fact1 = new FactType1 {TestProperty = "Valid Value 1"}; var fact2 = new FactType2 {TestProperty = "Invalid Value 2", JoinProperty = fact1.TestProperty}; var fact3 = new FactType3 {TestProperty = "Invalid Value 3", JoinProperty = fact1.TestProperty}; Session.Insert(fact1); Session.Insert(fact2); Session.Insert(fact3); fact2.TestProperty = "Valid Value 2"; Session.Update(fact2); fact3.TestProperty = "Valid Value 3"; Session.Update(fact3); //Act Session.Fire(); //Assert AssertDidNotFire(); }
public void Fire_MatchingFactsTwoInsertedThenFirstRetracted_DoesNotFire() { //Arrange var fact1 = new FactType1 {TestProperty = "Valid Value 1"}; var fact2 = new FactType2 {TestProperty = "Valid Value 2", JoinProperty = fact1.TestProperty}; var fact3 = new FactType3 {TestProperty = "Valid Value 3", JoinProperty = fact1.TestProperty}; Session.Insert(fact1); Session.Insert(fact2); Session.Insert(fact3); Session.Retract(fact2); //Act Session.Fire(); //Assert AssertDidNotFire(); }
public void Fire_NoMatchingFactsFirstKind_DoesNotFire() { //Arrange var fact1 = new FactType1 { TestProperty = "Valid Value 1" }; var fact3 = new FactType3 { TestProperty = "Valid Value 3", JoinProperty = fact1.TestProperty }; Session.Insert(fact1); Session.Insert(fact3); //Act Session.Fire(); //Assert AssertDidNotFire(); }