Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
        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));
            }
        }