Beispiel #1
0
            public override void Define()
            {
                TestFact fact = null;

                When()
                .Match(() => fact,
                       x => x.IntProperty % 2 == 0);

                Then()
                .Do(_ => Nothing());
            }
Beispiel #2
0
            public override void Define()
            {
                TestFact fact = null;

                When()
                .Match(() => fact,
                       x => x.StringProperty.StartsWith("Valid"),
                       x => x.IntProperty % 2 == 0);

                Then()
                .Do(_ => Nothing());
            }
Beispiel #3
0
        public void Setup()
        {
            SetupRule <TestRule>();

            _facts = new TestFact[FactCount];
            for (int i = 0; i < FactCount; i++)
            {
                _facts[i] = new TestFact {
                    StringProperty = $"Valid {i}", IntProperty = i
                };
            }
        }
Beispiel #4
0
        public void Add_NewInstanceDuplicateFacts_AddedResult()
        {
            // Arrange
            var target         = CreateTarget_SortWithInt1AndString(SortDirection.Descending, SortDirection.Ascending);
            var duplicateFact1 = new TestFact(1, "A");
            var duplicateFact2 = new TestFact(1, "A");

            // Act
            var facts  = AsFact(duplicateFact1, duplicateFact2);
            var result = target.Add(null, EmptyTuple(), facts).ToArray();

            // Assert
            AssertAggregationResult(result, AggregationAction.Added, duplicateFact1, duplicateFact2);
        }
Beispiel #5
0
        public void Add_NewInstance_AddedResult_IntThenString_DescendingThenDescending()
        {
            // Arrange
            var target  = CreateTarget_SortWithInt1AndString(SortDirection.Descending, SortDirection.Descending);
            var fact1_B = new TestFact(1, "B");
            var fact1_A = new TestFact(1, "A");
            var fact2_C = new TestFact(2, "C");

            // Act
            var facts  = AsFact(fact2_C, fact1_B, fact1_A);
            var result = target.Add(null, EmptyTuple(), facts).ToArray();

            // Assert
            AssertAggregationResult(result, AggregationAction.Added, fact2_C, fact1_B, fact1_A);
        }
Beispiel #6
0
        public void Add_NewInstance_AddedResult_DescendingThenDescending()
        {
            // Arrange
            var target  = CreateTarget_SortWithInt1AndInt2(SortDirection.Descending, SortDirection.Descending);
            var fact1_2 = new TestFact(1, 2);
            var fact1_1 = new TestFact(1, 1);
            var fact2_3 = new TestFact(2, 3);

            // Act
            var facts  = AsFact(fact2_3, fact1_2, fact1_1);
            var result = target.Add(null, EmptyTuple(), facts).ToArray();

            // Assert
            AssertAggregationResult(result, AggregationAction.Added, fact2_3, fact1_2, fact1_1);
        }
Beispiel #7
0
        public void Modify_ExistingDuplicateFacts_ModifiedResult()
        {
            // Arrange
            var target = CreateTarget_SortWithInt1AndString(SortDirection.Ascending, SortDirection.Ascending);
            var fact1  = new TestFact(1, "A");
            var fact2  = new TestFact(1, "A");
            var facts  = AsFact(fact1, fact2);

            target.Add(null, EmptyTuple(), facts);

            // Act
            var result = target.Modify(null, EmptyTuple(), facts).ToArray();

            // Assert
            AssertAggregationResult(result, AggregationAction.Modified, fact1, fact2);
        }
Beispiel #8
0
        public void Add_OldInstanceNewFacts_ModifiedResult_DescendingThenAscending()
        {
            // Arrange
            var target = CreateTarget_SortWithInt1AndString(SortDirection.Ascending, SortDirection.Descending);
            var fact1  = new TestFact(1, "B");
            var fact2  = new TestFact(1, "A");
            var fact3  = new TestFact(2, "C");

            target.Add(null, EmptyTuple(), AsFact(fact1, fact3));

            // Act
            var facts  = AsFact(fact2);
            var result = target.Add(null, EmptyTuple(), facts).ToArray();

            // Assert
            AssertAggregationResult(result, AggregationAction.Modified, fact1, fact2, fact3);
        }
Beispiel #9
0
        public void Remove_ExistingDuplicateFactsRemovedOneByOne_ModifiedResult()
        {
            // Arrange
            var target = CreateTarget_SortWithInt1AndString(SortDirection.Ascending, SortDirection.Ascending);
            var fact1  = new TestFact(1, "A");
            var fact2  = new TestFact(1, "B");
            var fact3  = new TestFact(1, "B");
            var facts  = AsFact(fact1, fact2, fact3);

            target.Add(null, EmptyTuple(), facts);

            // Act
            target.Remove(null, EmptyTuple(), facts.Skip(1).Take(1).ToArray()).ToArray();
            var result = target.Remove(null, EmptyTuple(), facts.Skip(2).Take(1).ToArray()).ToArray();

            // Assert
            AssertAggregationResult(result, AggregationAction.Modified, fact1);
        }
Beispiel #10
0
        public void Remove_ExistingFactsSameValues_ModifiedResult()
        {
            // Arrange
            var target = CreateTarget_SortWithInt1AndString(SortDirection.Ascending, SortDirection.Ascending);
            var fact1  = new TestFact(1, "A");
            var fact2  = new TestFact(1, "B");
            var fact3  = new TestFact(1, "C");
            var facts  = AsFact(fact1, fact2, fact3);

            target.Add(null, EmptyTuple(), facts);

            // Act
            var toRemove = new[] { facts.ElementAt(1) };
            var result   = target.Remove(null, EmptyTuple(), toRemove).ToArray();

            // Assert
            AssertAggregationResult(result, AggregationAction.Modified, fact1, fact3);
        }
Beispiel #11
0
        public void Modify_ExistingFactsDifferentValues_ModifiedResult_AscendingThenAscending()
        {
            // Arrange
            var target = CreateTarget_SortWithInt1AndString(SortDirection.Ascending, SortDirection.Ascending);
            var fact1  = new TestFact(1, "A");
            var fact2  = new TestFact(1, "B");
            var facts  = AsFact(fact1, fact2);

            target.Add(null, EmptyTuple(), facts);

            // Act
            facts[0].Value = new TestFact(1, "D");
            facts[1].Value = new TestFact(1, "C");
            var result = target.Modify(null, EmptyTuple(), facts).ToArray();

            // Assert
            AssertAggregationResult(result, AggregationAction.Modified, new TestFact(1, "C"), new TestFact(1, "D"));
        }
Beispiel #12
0
        public void Modify_ExistingDuplicateFactsDeduplicatedOneByOne_ModifiedResult()
        {
            // Arrange
            var target = CreateTarget_SortWithInt1AndString(SortDirection.Ascending, SortDirection.Ascending);
            var facts  = AsFact(new TestFact(1, "A"), new TestFact(1, "A"));

            target.Add(null, EmptyTuple(), facts);

            // Act
            var fact1 = new TestFact(1, "B");

            facts[0].Value = fact1;
            target.Modify(null, EmptyTuple(), facts.Take(1)).ToArray();

            var fact2 = new TestFact(1, "C");

            facts[1].Value = fact2;
            var result = target.Modify(null, EmptyTuple(), facts.Skip(1).Take(1)).ToArray();

            // Assert
            AssertAggregationResult(result, AggregationAction.Modified, fact1, fact2);
        }
Beispiel #13
0
 public GroupElement(TestFact fact)
 {
     Id  = fact.Id;
     Key = fact.Key;
 }
Beispiel #14
0
 public GroupKey(TestFact fact)
 {
     Value         = fact.Key;
     CachedPayload = fact.Payload;
 }