public void GetImplicationRules_ReturnsImplicationRulesList() { // Arrange Optional <Dictionary <int, ImplicationRule> > expectedImplicationRules = Optional <Dictionary <int, ImplicationRule> > .For(PrepareExpectedImplicationRules()); // Act Optional <Dictionary <int, ImplicationRule> > actualImplicationRules = _implicationRuleManager.GetImplicationRules(_profileName); // Assert Assert.IsTrue(actualImplicationRules.IsPresent); Assert.AreEqual(expectedImplicationRules.Value.Count, actualImplicationRules.Value.Count); for (int i = 1; i <= expectedImplicationRules.Value.Count; i++) { Assert.IsTrue(ObjectComparer.ImplicationRulesAreEqual(expectedImplicationRules.Value[i], actualImplicationRules.Value[i])); } }
public void CreateImplicationRuleEntity_ReturnsImplicationRule() { // Arrange string ifStatementPart = "(A=a|(B=b&C=c))"; string thenStatementPart = "(D=d)"; string implicationRule = $"IF{ifStatementPart}THEN{thenStatementPart}"; ImplicationRuleStrings implicationRuleStrings = new ImplicationRuleStrings(ifStatementPart, thenStatementPart); _implicationRuleParser.Expect(x => x.ExtractStatementParts(implicationRule)).Return(implicationRuleStrings); // (A=a|(B=b&C=c)) List <StatementCombination> ifStatementCombinations = new List <StatementCombination> { new StatementCombination(new List <UnaryStatement> { new UnaryStatement("A", ComparisonOperation.Equal, "a") }), new StatementCombination(new List <UnaryStatement> { new UnaryStatement("B", ComparisonOperation.Equal, "b"), new UnaryStatement("C", ComparisonOperation.Equal, "c") }) }; // (D=d) StatementCombination thenStatementCombination = new StatementCombination(new List <UnaryStatement> { new UnaryStatement("D", ComparisonOperation.Equal, "d") }); ImplicationRule expectedImplicationRule = new ImplicationRule(ifStatementCombinations, thenStatementCombination); List <string> ifStatementParts = new List <string> { "A=a", "B=b&C=c" }; _implicationRuleParser.Expect(irp => irp.ParseImplicationRule(ref ifStatementPart)) .Return(ifStatementParts); List <string> thenStatementParts = new List <string> { "D=d" }; _implicationRuleParser.Expect(irp => irp.ParseStatementCombination(thenStatementPart)) .Return(thenStatementParts); List <string> aIfUnaryStatementStrings = new List <string> { "A=a" }; List <string> bcIfUnaryStatementStrings = new List <string> { "B=b", "C=c" }; _implicationRuleParser.Expect(irp => irp.ParseStatementCombination("A=a")).Return(aIfUnaryStatementStrings); _implicationRuleParser.Expect(irp => irp.ParseStatementCombination("B=b&C=c")).Return(bcIfUnaryStatementStrings); UnaryStatement aUnaryStatement = new UnaryStatement("A", ComparisonOperation.Equal, "a"); UnaryStatement bUnaryStatement = new UnaryStatement("B", ComparisonOperation.Equal, "b"); UnaryStatement cUnaryStatement = new UnaryStatement("C", ComparisonOperation.Equal, "c"); UnaryStatement dUnaryStatement = new UnaryStatement("D", ComparisonOperation.Equal, "d"); _implicationRuleParser.Expect(irp => irp.ParseUnaryStatement("A=a")).Return(aUnaryStatement); _implicationRuleParser.Expect(irp => irp.ParseUnaryStatement("B=b")).Return(bUnaryStatement); _implicationRuleParser.Expect(irp => irp.ParseUnaryStatement("C=c")).Return(cUnaryStatement); _implicationRuleParser.Expect(irp => irp.ParseUnaryStatement("D=d")).Return(dUnaryStatement); // Act ImplicationRule actualImplicationRule = _implicationRuleCreator.CreateImplicationRuleEntity(implicationRule); // Assert Assert.IsTrue(ObjectComparer.ImplicationRulesAreEqual(expectedImplicationRule, actualImplicationRule)); }