public BooleanAnswer SelectBoolean( Func <ICollection <StatementT>, Boolean> valueGetter, Func <ILanguage, String> trueFormat, Func <ILanguage, String> falseFormat, IDictionary <String, IKnowledge> parameters) { ProcessChildrenIfNeed(); Boolean value = valueGetter(Statements); var answer = new BooleanAnswer( value, new FormattedText( value ? trueFormat : falseFormat, parameters), new Explanation(Statements.OfType <IStatement>())); answer.Explanation.Expand(AdditionalTransitives); return(answer); }
public void GivenNoExplanationWhenGetDescriptionWithExplanationThenReturnPlainDescription() { // arrange var language = Language.Default; language.Extensions.Add(LanguageBooleanModule.CreateDefault()); language.Extensions.Add(LanguageClassificationModule.CreateDefault()); language.Extensions.Add(LanguageSetModule.CreateDefault()); var representer = new PlainStringTextRepresenter(); var text = new FormattedText(l => "Just text answer."); string initialText = representer.Represent(text, language).ToString(); // act var answer = new BooleanAnswer(true, text, new Explanation(Array.Empty <IStatement>())); var explainedAnswer = answer.GetDescriptionWithExplanation(); string explainedText = representer.Represent(explainedAnswer, language).ToString(); // assert Assert.AreEqual(initialText, explainedText); }
public BooleanAnswer SelectBooleanIncludingChildren( Func <ICollection <StatementT>, Boolean> valueGetter, Func <ILanguage, String> trueFormat, Func <ILanguage, String> falseFormat, IDictionary <String, IKnowledge> parameters) { ProcessChildrenIfNeed(); Boolean result = false; var explanation = new List <IStatement>(Statements.OfType <IStatement>()); if (Statements.Count > 0) { result = true; } foreach (var childAnswer in ChildAnswers) { if (((BooleanAnswer)childAnswer.Answer).Result) { result = true; explanation.AddRange(childAnswer.Answer.Explanation.Statements); explanation.AddRange(childAnswer.TransitiveStatements); } } var answer = new BooleanAnswer( result, new FormattedText( result ? trueFormat : falseFormat, parameters), new Explanation(explanation)); answer.Explanation.Expand(AdditionalTransitives); return(answer); }
public void GivenExplanationStatementsWhenGetDescriptionWithExplanationThenReturnExplainedDescription() { // arrange var language = Language.Default; language.Extensions.Add(LanguageBooleanModule.CreateDefault()); language.Extensions.Add(LanguageClassificationModule.CreateDefault()); language.Extensions.Add(LanguageSetModule.CreateDefault()); var representer = new PlainStringTextRepresenter(); var text = new FormattedText(l => "Some answer, which required detailed explanation."); string initialText = representer.Represent(text, language).ToString(); var concept = new Concept("CONCEPT", new LocalizedStringConstant(l => "CoNcEpT")); var statements = new IStatement[] { new HasPartStatement("HasPartStatement", concept, concept), new IsStatement("IsStatement", concept, concept), new GroupStatement("GroupStatement", concept, concept), }; // act var answer = new BooleanAnswer(true, text, new Explanation(statements)); var explainedAnswer = answer.GetDescriptionWithExplanation(); string explainedText = representer.Represent(explainedAnswer, language).ToString(); // assert Assert.IsTrue(explainedText.Contains(initialText)); Assert.IsTrue(explainedText.Contains(language.Questions.Answers.Explanation)); foreach (var statement in statements) { string statementText = representer.Represent(statement.DescribeTrue(), language).ToString(); Assert.IsTrue(explainedText.Contains(statementText)); } }