コード例 #1
0
ファイル: AgendaTest.cs プロジェクト: guojianbin/NRules
        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
ファイル: AgendaTest.cs プロジェクト: zhrjin/NRules
        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
ファイル: AgendaTest.cs プロジェクト: hebert26/NRules
        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
ファイル: AgendaTest.cs プロジェクト: zhrjin/NRules
        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
ファイル: AgendaTest.cs プロジェクト: hebert26/NRules
        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
ファイル: AgendaTest.cs プロジェクト: arastoul/NRules
        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
ファイル: AgendaTest.cs プロジェクト: arastoul/NRules
        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
ファイル: AgendaTest.cs プロジェクト: zhrjin/NRules
        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
ファイル: AgendaTest.cs プロジェクト: zhjrate/NRules
        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
ファイル: AgendaTest.cs プロジェクト: guojianbin/NRules
        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
ファイル: AgendaTest.cs プロジェクト: zhrjin/NRules
        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
ファイル: AgendaTest.cs プロジェクト: guojianbin/NRules
        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
ファイル: AgendaTest.cs プロジェクト: zhrjin/NRules
        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
ファイル: AgendaTest.cs プロジェクト: zhrjin/NRules
        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
ファイル: AgendaTest.cs プロジェクト: zhrjin/NRules
        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
ファイル: AgendaTest.cs プロジェクト: hebert26/NRules
        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;
 }