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(); }
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(); }
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(); }
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(); }
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(); }
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(); }
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(); }