Пример #1
0
        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());
        }
Пример #2
0
        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());
        }
Пример #3
0
        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());
        }
Пример #4
0
        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());
        }
Пример #5
0
        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());
        }
Пример #6
0
        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());
        }
Пример #7
0
        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);
        }
Пример #8
0
        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);
        }
Пример #9
0
        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());
        }
Пример #10
0
        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);
        }
Пример #11
0
        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());
        }
Пример #12
0
        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());
        }
Пример #13
0
        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());
        }
Пример #14
0
        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());
        }
Пример #15
0
        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());
        }
Пример #16
0
        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());
        }
Пример #17
0
        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);
        }
Пример #18
0
        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());
        }
Пример #19
0
        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());
        }
Пример #20
0
 public ConditionEquals(FactObject compareTo)
 {
     this.compareTo = compareTo;
 }