public void Reactivate_Called_ActivationUpdatedInQueue() { // Arrange var ruleMock = new Mock <ICompiledRule>(); var factObject = new FactObject { Value = "Test" }; var tuple = CreateTuple(factObject); var activation1 = new Activation(ruleMock.Object, tuple, null); var target = CreateTarget(); target.Activate(activation1); // Act factObject.Value = "New Value"; var activation2 = new Activation(ruleMock.Object, tuple, null); target.Reactivate(activation2); // Assert var actualActivation = target.NextActivation(); Assert.AreEqual(ruleMock.Object, actualActivation.Rule); Assert.AreEqual(factObject, actualActivation.Tuple.RightFact.Object); Assert.False(target.HasActiveRules()); }
public void Modify_Called_ActivationUpdatedInQueue() { // Arrange var ruleMock = new Mock <ICompiledRule>(); var factObject = new FactObject { Value = "Test" }; var tuple = CreateTuple(factObject); var activation1 = new Activation(ruleMock.Object, tuple, null); var target = CreateTarget(); target.Add(activation1); // Act factObject.Value = "New Value"; var activation2 = new Activation(ruleMock.Object, tuple, null); target.Modify(activation2); // Assert var actualActivation = target.Pop(); Assert.Equal(ruleMock.Object, actualActivation.CompiledRule); Assert.Equal(factObject, actualActivation.Tuple.RightFact.Object); Assert.True(target.IsEmpty()); }
public void Modify_ActivationAlreadyInQueueRejectingFilter_ActivationUpdatedInQueue() { // Arrange var rule = MockRule(); var factObject = new FactObject { Value = "Test" }; var tuple = CreateTuple(factObject); var activation = new Activation(rule, tuple, null); var target = CreateTarget(); target.Add(_context.Object, activation); target.AddFilter(new RejectingFilter()); // Act factObject.Value = "New Value"; target.Modify(_context.Object, activation); // Assert Assert.False(target.IsEmpty()); var actualActivation = target.Pop(); Assert.Equal(rule, actualActivation.CompiledRule); Assert.Equal(factObject.Value, ((FactObject)actualActivation.Tuple.RightFact.Object).Value); Assert.True(target.IsEmpty()); }
public void Deactivate_CalledAfterActivation_ActivationQueueEmpty() { // Arrange var ruleMock = new Mock<ICompiledRule>(); var factObject = new FactObject { Value = "Test" }; var tuple = CreateTuple(factObject); var activation1 = new Activation(ruleMock.Object, tuple, null); var target = CreateTarget(); target.Activate(activation1); // Act var activation2 = new Activation(ruleMock.Object, tuple, null); target.Deactivate(activation2); // Assert Assert.False(target.HasActiveRules()); }
public void Add_RejectingRuleFilter_ActivationNotInAgenda() { // Arrange var rule = MockRule(); var factObject = new FactObject { Value = "Test" }; var tuple = CreateTuple(factObject); var activation = new Activation(rule, tuple, null); var target = CreateTarget(); target.AddFilter(rule.Definition, new RejectingFilter()); // Act target.Add(_context.Object, activation); // Assert Assert.True(target.IsEmpty()); }
public void Activate_Called_ActivationEndsUpInQueue() { // Arrange var ruleMock = new Mock<ICompiledRule>(); var factObject = new FactObject {Value = "Test"}; var tuple = CreateTuple(factObject); var activation = new Activation(ruleMock.Object, tuple, null); var target = CreateTarget(); // Act target.Activate(activation); // Assert Assert.True(target.HasActiveRules()); var actualActivation = target.NextActivation(); Assert.AreEqual(ruleMock.Object, actualActivation.Rule); Assert.AreEqual(factObject, actualActivation.Tuple.RightFact.Object); Assert.False(target.HasActiveRules()); }
public void Add_AcceptingRuleFilter_ActivationInAgenda() { // Arrange var rule = MockRule(); var factObject = new FactObject { Value = "Test" }; var tuple = CreateTuple(factObject); var activation = new Activation(rule, tuple); var target = CreateTarget(); target.AddFilter(rule.Definition, new AcceptingFilter()); // Act target.Add(activation); // Assert Assert.False(target.IsEmpty); }
public void Add_RejectingGlobalFilter_ActivationNotInAgenda() { // Arrange var rule = MockRule(); var factObject = new FactObject { Value = "Test" }; var tuple = CreateTuple(factObject); var activation = new Activation(rule, tuple); var target = CreateTarget(); target.AddFilter(new RejectingFilter()); // Act target.Add(activation); // Assert Assert.True(target.IsEmpty); }
public void Add_AcceptingGlobalFilter_ActivationInAgenda() { // Arrange var rule = MockRule(); var factObject = new FactObject { Value = "Test" }; var tuple = CreateTuple(factObject); var activation = new Activation(rule, tuple, null); var target = CreateTarget(); target.AddFilter(new AcceptingFilter()); // Act target.Add(_context.Object, activation); // Assert Assert.False(target.IsEmpty()); }
public void Add_RejectingRuleFilterForDifferentRule_ActivationInAgenda() { // Arrange var rule1 = MockRule(); var rule2 = MockRule(); var factObject = new FactObject { Value = "Test" }; var tuple = CreateTuple(factObject); var activation = new Activation(rule1, tuple); var target = CreateTarget(); target.AddFilter(rule2.Definition, new RejectingFilter()); // Act target.Add(_context.Object, activation); // Assert Assert.False(target.IsEmpty); }
public void Remove_CalledAfterAdd_AgendaEmpty() { // Arrange var ruleMock = new Mock <ICompiledRule>(); var factObject = new FactObject { Value = "Test" }; var tuple = CreateTuple(factObject); var activation1 = new Activation(ruleMock.Object, tuple, null); var target = CreateTarget(); target.Add(activation1); // Act var activation2 = new Activation(ruleMock.Object, tuple, null); target.Remove(activation2); // Assert Assert.True(target.IsEmpty()); }
public void Deactivate_CalledAfterActivation_ActivationQueueEmpty() { // Arrange var ruleMock = new Mock <ICompiledRule>(); var factObject = new FactObject { Value = "Test" }; var tuple = CreateTuple(factObject); var activation1 = new Activation(ruleMock.Object, tuple, null); var target = CreateTarget(); target.Activate(activation1); // Act var activation2 = new Activation(ruleMock.Object, tuple, null); target.Deactivate(activation2); // Assert Assert.False(target.HasActiveRules()); }
public void Remove_CalledAfterAdd_AgendaEmpty() { // Arrange var rule = MockRule(); var factObject = new FactObject { Value = "Test" }; var tuple = CreateTuple(factObject); var activation = new Activation(rule, tuple, null); var target = CreateTarget(); target.Add(_context.Object, activation); _session.Setup(x => x.GetLinkedKeys(activation)).Returns(new object[0]); // Act target.Remove(_context.Object, activation); // Assert Assert.True(target.IsEmpty()); }
public void Activate_Called_ActivationEndsUpInQueue() { // Arrange var ruleMock = new Mock <ICompiledRule>(); var factObject = new FactObject { Value = "Test" }; var tuple = CreateTuple(factObject); var activation = new Activation(ruleMock.Object, tuple, null); var target = CreateTarget(); // Act target.Activate(activation); // Assert Assert.True(target.HasActiveRules()); var actualActivation = target.NextActivation(); Assert.AreEqual(ruleMock.Object, actualActivation.Rule); Assert.AreEqual(factObject, actualActivation.Tuple.RightFact.Object); Assert.False(target.HasActiveRules()); }
public void Add_Called_ActivationInAgenda() { // Arrange var rule = MockRule(); var factObject = new FactObject { Value = "Test" }; var tuple = CreateTuple(factObject); var activation = new Activation(rule, tuple, null); var target = CreateTarget(); // Act target.Add(_context.Object, activation); // Assert Assert.False(target.IsEmpty()); var actualActivation = target.Pop(); Assert.Equal(rule, actualActivation.CompiledRule); Assert.Equal(factObject, actualActivation.Tuple.RightFact.Object); Assert.True(target.IsEmpty()); }
public void Modify_ActivationNotInQueue_ActivationNotReAddedToQueue() { // Arrange var rule = MockRule(); var factObject = new FactObject { Value = "Test" }; var tuple = CreateTuple(factObject); var activation = new Activation(rule, tuple, null); var target = CreateTarget(); target.Add(_context.Object, activation); target.Pop(); target.AddFilter(new RejectingFilter()); // Act target.Modify(_context.Object, activation); // Assert Assert.True(target.IsEmpty()); }
public void Modify_ActivationAlreadyInQueueRejectingFilter_ActivationRemovedFromQueue() { // Arrange var rule = MockRule(); var factObject = new FactObject { Value = "Test" }; var tuple = CreateTuple(factObject); var activation = new Activation(rule, tuple, null); var target = CreateTarget(); target.Add(_context.Object, activation); target.AddFilter(new RejectingFilter()); // Act factObject.Value = "New Value"; target.Modify(_context.Object, activation); // Assert Assert.True(target.IsEmpty); }
public void Modify_ActivationNotInQueue_ActivationReAddedToQueue() { // Arrange var rule = MockRule(); var factObject = new FactObject { Value = "Test" }; var tuple = CreateTuple(factObject); var activation = new Activation(rule, tuple, null); var target = CreateTarget(); target.Add(_context.Object, activation); target.Pop(); // Act target.Modify(_context.Object, activation); // Assert Assert.False(target.IsEmpty()); var actualActivation = target.Pop(); Assert.Equal(rule, actualActivation.CompiledRule); Assert.True(target.IsEmpty()); }
public void Reactivate_Called_ActivationUpdatedInQueue() { // Arrange var ruleMock = new Mock<ICompiledRule>(); var factObject = new FactObject { Value = "Test" }; var tuple = CreateTuple(factObject); var activation1 = new Activation(ruleMock.Object, tuple, null); var target = CreateTarget(); target.Activate(activation1); // Act factObject.Value = "New Value"; var activation2 = new Activation(ruleMock.Object, tuple, null); target.Reactivate(activation2); // Assert var actualActivation = target.NextActivation(); Assert.AreEqual(ruleMock.Object, actualActivation.Rule); Assert.AreEqual(factObject, actualActivation.Tuple.RightFact.Object); Assert.False(target.HasActiveRules()); }
public ConditionEquals(FactObject compareTo) { this.compareTo = compareTo; }