Example #1
0
        public void DeriveOnlyOneFactTestCase()
        {
            Input6Fact  fact6  = null;
            Input16Fact fact16 = null;
            Input7Fact  fact7  = null;

            GivenCreateFactFactory()
            .AndAddRules(new Collection
            {
                () => new Input6Fact(6),
                () => new Input16Fact(16),
                () => new Input7Fact(7),
            })
            .And("Want facts.", factFactory =>
            {
                factFactory.WantFacts((Input6Fact fact) => fact6   = fact);
                factFactory.WantFacts((Input16Fact fact) => fact16 = fact);
                factFactory.WantFacts((Input7Fact fact) => fact7   = fact);
            })
            .When("Derive fact.", factFactory =>
                  factFactory.DeriveFact <Input7Fact>())
            .ThenIsNotNull()
            .And("Check result.", _ =>
            {
                Assert.IsNull(fact7, "fact7 cannot derived");
                Assert.IsNull(fact16, "fact16 cannot derived");
                Assert.IsNull(fact6, "fact6 cannot derived");
            })
            .Run();
        }
Example #2
0
        public async Task WantActionRunAsynchronouslyTestCase()
        {
            Input16Fact fact16        = null;
            const int   expectedValue = 16;

            await GivenCreateFactFactory()
            .AndAddRules(new Collection
            {
                async() =>
                {
                    await Task.Delay(Timeouts.Millisecond.Hundred);
                    return(new Input16Fact(expectedValue));
                }
            })
            .And("Want actions.", factory => factory.WantFacts(async(Input16Fact fact) =>
            {
                await Task.Delay(Timeouts.Millisecond.Hundred);
                fact16 = fact;
            }))
            .WhenAsync("Derive.", factory => factory.DeriveAsync())
            .Then("Check result.", () =>
            {
                Assert.AreEqual(fact16, expectedValue);
            })
            .RunAsync();
        }
Example #3
0
        public void DerivedThreeFactsTestCase()
        {
            Input6Fact  input6Fact  = null;
            Input16Fact input16Fact = null;
            Input7Fact  input7Fact  = null;
            var         container   = new Container
            {
                new Input3Fact(3),
            };

            GivenCreateFactFactory()
            .AndAddRules(RuleCollectionHelper.GetInputFactRules())
            .And("Want fact6.", factory =>
                 factory.WantFacts((Input6Fact fact) => { input6Fact = fact; }, container))
            .And("Want fact16.", factory =>
                 factory.WantFacts((Input16Fact fact) => { input16Fact = fact; }, container))
            .And("Want fact16.", factory =>
                 factory.WantFacts((Input7Fact fact) => { input7Fact = fact; }, container))
            .When("Derive facts.", factory =>
                  factory.Derive())
            .Then("Check error.", _ =>
            {
                Assert.IsNotNull(input6Fact, "input6Fact is not derived");
                Assert.IsNotNull(input16Fact, "input16Fact is not derived");
                Assert.IsNotNull(input7Fact, "input7Fact is not derived");
            })
            .Run();
        }
Example #4
0
        public void DeriveTestCase()
        {
            Input16Fact fact16        = null;
            const int   expectedValue = 16;

            GivenCreateFactFactory()
            .AndAddRules(new Collection
            {
                (Input15Fact firstFact, Input14Fact secondFact) => new Input16Fact(firstFact.Value + secondFact.Value - 3),
                (Input2Fact secondFact) => new Input14Fact(secondFact.Value + 14),
                (Input1Fact firstFact, Input2Fact secondFact) => new Input15Fact(firstFact.Value + secondFact.Value),
                () => new Input1Fact(1),
                (Input1Fact fact) => new Input2Fact(fact.Value * 2),
            })
            .And("Want fact.", factory =>
            {
                factory.WantFacts((Input16Fact fact) =>
                {
                    fact16 = fact;
                });
            })
            .When("Derive facts.", factory => factory.Derive())
            .Then("Check derive facts.", _ =>
            {
                Assert.IsNotNull(fact16, "fact16 is not derived");
                Assert.AreEqual(expectedValue, fact16.Value, "unexpected value");
            })
            .Run();
        }
Example #5
0
        public async Task CallingSynchronousRuleTestCase()
        {
            Input16Fact fact16        = null;
            const int   expectedValue = 16;

            await GivenCreateFactFactory()
            .AndAddRules(new Collection
            {
                () =>
                {
                    return(new Input16Fact(expectedValue));
                }
            })
            .And("Want actions.", factory => factory.WantFacts((Input16Fact fact) => fact16 = fact))
            .WhenAsync("Derive.", factory => factory.DeriveAsync())
            .Then("Check result.", () =>
            {
                Assert.AreEqual(fact16, expectedValue);
            })
            .RunAsync();
        }
Example #6
0
        public async Task RunningAsynchronousRulesInParallelTestCase()
        {
            Input16Fact fact16        = null;
            const int   expectedValue = 16;

            await GivenCreateFactFactory()
            .AndAddRules(new Collection
            {
                {
                    async() =>
                    {
                        await Task.Delay(Timeouts.Millisecond.Hundred);
                        return(new Input10Fact(10));
                    }, FactWorkOption.CanExcecuteParallel | FactWorkOption.CanExecuteAsync
                },
                {
                    async() =>
                    {
                        await Task.Delay(Timeouts.Millisecond.Hundred);
                        return(new Input6Fact(6));
                    }, FactWorkOption.CanExcecuteParallel | FactWorkOption.CanExecuteAsync
                },
                (Input6Fact fact6, Input10Fact fact10) =>
                {
                    return(new Input16Fact(fact6 + fact10));
                }
            })
            .And("Want actions.", factory => factory.WantFacts((Input16Fact fact) =>
            {
                fact16 = fact;
            }))
            .WhenAsync("Derive.", factory => factory.DeriveAsync())
            .Then("Check result.", () =>
            {
                Assert.AreEqual(fact16, expectedValue);
            })
            .RunAsync();
        }
Example #7
0
        public void DeriveFactsAfterRunDeriveFactTestCase()
        {
            Input6Fact  fact6  = null;
            Input16Fact fact16 = null;
            Input7Fact  fact7  = null;

            GetcuReone.FactFactory.FactFactory factory = null;
            var container = new Container();

            GivenCreateFactFactory()
            .AndAddRules(new Collection
            {
                () => new Input6Fact(6),
                () => new Input16Fact(16),
                () => new Input7Fact(7),
            })
            .And("Want facts.", factFactory =>
            {
                factFactory.WantFacts((Input6Fact fact) => fact6   = fact, container);
                factFactory.WantFacts((Input16Fact fact) => fact16 = fact, container);
                factFactory.WantFacts((Input7Fact fact) => fact7   = fact, container);
                factory = factFactory;
            })
            .And("Derive fact.", factFactory =>
                 factFactory.DeriveFact <Input7Fact>(container))
            .When("Derive facts", fact =>
            {
                factory.Derive();
            })
            .Then("Check Input7Fact.", fact => Assert.AreEqual(fact, fact7))
            .And("Check result.", _ =>
            {
                Assert.IsNotNull(fact7, "fact7 must derived");
                Assert.IsNotNull(fact16, "fact16 must derived");
                Assert.IsNotNull(fact6, "fact6 must derived");
            })
            .Run();
        }