コード例 #1
0
        public void TestBuildingWhatIsMutualSequenceOfProcesses()
        {
            // arrange
            var language        = Language.Default;
            var semanticNetwork = new TestSemanticNetwork(language);

            var processA = ConceptCreationHelper.CreateConcept();

            processA.WithAttribute(IsProcessAttribute.Value);
            var processB = ConceptCreationHelper.CreateConcept();

            processB.WithAttribute(IsProcessAttribute.Value);
            semanticNetwork.SemanticNetwork.DeclareThat(processA).StartsBeforeOtherStarted(processB);
            semanticNetwork.SemanticNetwork.DeclareThat(processA).FinishesAfterOtherFinished(processB);

            // act
            var questionRegular = new ProcessesQuestion(processA, processB);
            var answerRegular   = (StatementsAnswer <ProcessesStatement>)questionRegular.Ask(semanticNetwork.SemanticNetwork.Context);

            var answerBuilder = (StatementsAnswer <ProcessesStatement>)semanticNetwork.SemanticNetwork.Ask().WhatIsMutualSequenceOfProcesses(processA, processB);

            // assert
            Assert.IsTrue(answerRegular.Result.SequenceEqual(answerBuilder.Result));
            Assert.IsTrue(answerRegular.Explanation.Statements.SequenceEqual(answerBuilder.Explanation.Statements));
        }
コード例 #2
0
        public void ConceptWithSubjectAreaCanFindIt()
        {
            // arrange
            var language        = Language.Default;
            var semanticNetwork = new TestSemanticNetwork(language);

            IList <IConcept> subjectAreas = new IConcept[]
            {
                semanticNetwork.SubjectArea_Transport,
                semanticNetwork.SubjectArea_Numbers,
                semanticNetwork.SubjectArea_Processes,
            };

            var conceptsWithoutSubjectArea = new List <IConcept>(SystemConcepts.GetAll());

            conceptsWithoutSubjectArea.AddRange(subjectAreas);

            foreach (var concept in semanticNetwork.SemanticNetwork.Concepts.Except(conceptsWithoutSubjectArea))
            {
                // act
                var answer = semanticNetwork.SemanticNetwork.Ask().ToWhichSubjectAreasBelongs(concept);

                // assert
                Assert.IsFalse(answer.IsEmpty);

                var groupStatement = (GroupStatement)answer.Explanation.Statements.Single();
                Assert.IsTrue(subjectAreas.Contains(groupStatement.Area));
                Assert.AreSame(concept, groupStatement.Concept);

                var conceptsAnswer = (ConceptsAnswer)answer;
                Assert.AreSame(groupStatement.Area, conceptsAnswer.Result.Single());
            }
        }
コード例 #3
0
        public void MultipleSubjectAreas()
        {
            // arrange
            var language        = Language.Default;
            var semanticNetwork = new TestSemanticNetwork(language);
            var concept         = semanticNetwork.Base_Vehicle;

            var secondSubjectArea = Modules.Boolean.Concepts.LogicalValues.True;

            semanticNetwork.SemanticNetwork.DeclareThat(concept).BelongsToSubjectArea(secondSubjectArea);

            // act
            var answer = semanticNetwork.SemanticNetwork.Ask().ToWhichSubjectAreasBelongs(concept);

            // assert
            Assert.IsFalse(answer.IsEmpty);

            Assert.AreEqual(2, answer.Explanation.Statements.Count);
            Assert.IsTrue(answer.Explanation.Statements.OfType <GroupStatement>().Any(s => s.Area == semanticNetwork.SubjectArea_Transport && s.Concept == concept));
            Assert.IsTrue(answer.Explanation.Statements.OfType <GroupStatement>().Any(s => s.Area == secondSubjectArea && s.Concept == concept));
            var conceptsAnswer = (ConceptsAnswer)answer;

            Assert.IsTrue(conceptsAnswer.Result.Contains(semanticNetwork.SubjectArea_Transport));
            Assert.IsTrue(conceptsAnswer.Result.Contains(secondSubjectArea));
        }
コード例 #4
0
        public void CheckEquality()
        {
            // arrange
            var language        = Language.Default;
            var semanticNetwork = new TestSemanticNetwork(language);

            // act
            var answer1 = semanticNetwork.SemanticNetwork.Ask().HowCompared(semanticNetwork.Number0, semanticNetwork.NumberZero);

            var answer2 = semanticNetwork.SemanticNetwork.Ask().HowCompared(semanticNetwork.NumberZero, semanticNetwork.Number0);

            // assert
            var explanation1 = (ComparisonStatement)answer1.Explanation.Statements.Single();
            var explanation2 = (ComparisonStatement)answer2.Explanation.Statements.Single();

            Assert.AreSame(explanation1, explanation2);
            Assert.IsTrue(explanation1.GetChildConcepts().Contains(semanticNetwork.Number0));
            Assert.IsTrue(explanation1.GetChildConcepts().Contains(semanticNetwork.NumberZero));
            Assert.IsTrue(explanation1.GetChildConcepts().Contains(ComparisonSigns.IsEqualTo));

            var statement1 = (ComparisonStatement)((StatementAnswer)answer1).Result;

            Assert.AreSame(semanticNetwork.Number0, statement1.LeftValue);
            Assert.AreSame(semanticNetwork.NumberZero, statement1.RightValue);
            Assert.AreSame(ComparisonSigns.IsEqualTo, statement1.ComparisonSign);

            var statement2 = (ComparisonStatement)((StatementAnswer)answer2).Result;

            Assert.AreSame(semanticNetwork.NumberZero, statement2.LeftValue);
            Assert.AreSame(semanticNetwork.Number0, statement2.RightValue);
            Assert.AreSame(ComparisonSigns.IsEqualTo, statement2.ComparisonSign);
        }
コード例 #5
0
        public void ReturnAllSignsIfRecursive()
        {
            // arrange
            var language        = Language.Default;
            var semanticNetwork = new TestSemanticNetwork(language);

            var ownSign = ConceptCreationHelper.CreateConcept();

            ownSign.WithAttribute(IsSignAttribute.Value);
            semanticNetwork.SemanticNetwork.Concepts.Add(ownSign);

            var ownSignStatement = semanticNetwork.SemanticNetwork.DeclareThat(semanticNetwork.Vehicle_Motorcycle).HasSign(ownSign);

            // act
            var answerOwnSign       = semanticNetwork.SemanticNetwork.Ask().IfHasSign(semanticNetwork.Vehicle_Motorcycle, ownSign);
            var answerInheritedSign = semanticNetwork.SemanticNetwork.Ask().IfHasSign(semanticNetwork.Vehicle_Motorcycle, semanticNetwork.Sign_AreaType);

            // assert
            Assert.IsFalse(answerOwnSign.IsEmpty);
            Assert.IsTrue(((BooleanAnswer)answerOwnSign).Result);
            Assert.AreSame(ownSignStatement, answerOwnSign.Explanation.Statements.Single());

            Assert.IsFalse(answerInheritedSign.IsEmpty);
            Assert.IsTrue(((BooleanAnswer)answerInheritedSign).Result);
            Assert.AreEqual(2, answerInheritedSign.Explanation.Statements.Count);
            Assert.AreEqual(1, answerInheritedSign.Explanation.Statements.OfType <HasSignStatement>().Count());
            Assert.AreEqual(1, answerInheritedSign.Explanation.Statements.OfType <IsStatement>().Count());
        }
コード例 #6
0
        public void ReturnOwnSignsOnlyIfNoRecursion()
        {
            // arrange
            var language        = Language.Default;
            var semanticNetwork = new TestSemanticNetwork(language);

            var ownSign = ConceptCreationHelper.CreateConcept();

            ownSign.WithAttribute(IsSignAttribute.Value);
            semanticNetwork.SemanticNetwork.Concepts.Add(ownSign);

            var ownSignStatement = semanticNetwork.SemanticNetwork.DeclareThat(semanticNetwork.Vehicle_Motorcycle).HasSign(ownSign);

            var questionOwnSign       = new HasSignsQuestion(semanticNetwork.Base_Vehicle, false);
            var questionInheritedSign = new HasSignsQuestion(semanticNetwork.Vehicle_Motorcycle, false);

            // act
            var answerOwnSign       = questionOwnSign.Ask(semanticNetwork.SemanticNetwork.Context);
            var answerInheritedSign = questionInheritedSign.Ask(semanticNetwork.SemanticNetwork.Context);

            // assert
            Assert.IsFalse(answerOwnSign.IsEmpty);
            Assert.IsTrue(((BooleanAnswer)answerOwnSign).Result);
            Assert.AreEqual(2, answerOwnSign.Explanation.Statements.Count);

            Assert.IsFalse(answerInheritedSign.IsEmpty);
            Assert.IsTrue(((BooleanAnswer)answerInheritedSign).Result);
            Assert.AreSame(ownSignStatement, answerInheritedSign.Explanation.Statements.Single());
        }
コード例 #7
0
        public void CheckGreaterAndLessConditions()
        {
            // arrange
            var language        = Language.Default;
            var semanticNetwork = new TestSemanticNetwork(language);

            var orderedNumbersWith0 = new List <IConcept>
            {
                semanticNetwork.Number0,
                semanticNetwork.Number1,
                semanticNetwork.Number2,
                semanticNetwork.Number3,
                semanticNetwork.Number4,
            };

            var orderedNumbersWithZero = new List <IConcept>
            {
                semanticNetwork.NumberZero,
                semanticNetwork.Number1,
                semanticNetwork.Number2,
                semanticNetwork.Number3,
                semanticNetwork.Number4,
            };

            foreach (var orderedNumbers in new[] { orderedNumbersWith0, orderedNumbersWithZero })
            {
                for (int l = 0; l < orderedNumbers.Count; l++)
                {
                    for (int r = 0; r < orderedNumbers.Count; r++)
                    {
                        if (l != r)                         // because "A=A" automatic precondition is not defined
                        {
                            // act
                            var answer = semanticNetwork.SemanticNetwork.Ask().HowCompared(orderedNumbers[l], orderedNumbers[r]);

                            // assert
                            var explanation = answer.Explanation.Statements;
                            int expectedExplanationStatementsCount = Math.Abs(l - r);
                            if (orderedNumbers == orderedNumbersWithZero && (l == 0 || r == 0))
                            {
                                expectedExplanationStatementsCount++;
                            }
                            Assert.AreEqual(expectedExplanationStatementsCount, explanation.Count);
                            Assert.AreEqual(explanation.Count, explanation.OfType <ComparisonStatement>().Count());

                            var statement = (ComparisonStatement)((StatementAnswer)answer).Result;
                            Assert.AreSame(orderedNumbers[l], statement.LeftValue);
                            Assert.AreSame(orderedNumbers[r], statement.RightValue);
                            Assert.AreSame(l > r ? ComparisonSigns.IsGreaterThan : ComparisonSigns.IsLessThan, statement.ComparisonSign);
                        }
                    }
                }
            }
        }
コード例 #8
0
        public void DescribeRulesEnumeratesThem()
        {
            // arrange
            var language        = Language.Default;
            var semanticNetwork = new TestSemanticNetwork(language).SemanticNetwork;

            // act
            var result = semanticNetwork.DescribeRules().ToString();

            // assert
            Assert.Less(4000, result.Length);
        }
コード例 #9
0
        public void GivenConsistentSemanticNetworkWhenCheckConsistensyThenReturnEmptyText()
        {
            // arrange
            var language        = Language.Default;
            var semanticNetwork = new TestSemanticNetwork(language).SemanticNetwork;

            // act
            var result = semanticNetwork.CheckConsistency();

            // assert
            Assert.IsTrue(result.ToString().Contains(language.Statements.Consistency.CheckOk));
        }
コード例 #10
0
        public void ReturnUnknownIfNoInformation()
        {
            // arrange
            var language        = Language.Default;
            var semanticNetwork = new TestSemanticNetwork(language);

            // act
            var answer = semanticNetwork.SemanticNetwork.Ask().WhatIsSignValue(semanticNetwork.Base_Vehicle, semanticNetwork.Sign_AreaType);

            // assert
            Assert.IsTrue(answer.IsEmpty);
            Assert.AreEqual(0, answer.Explanation.Statements.Count);
        }
コード例 #11
0
        public void ReturnEmptyIfConceptsCanNotBeCompared()
        {
            // arrange
            var language        = Language.Default;
            var semanticNetwork = new TestSemanticNetwork(language);

            // act
            var answer = semanticNetwork.SemanticNetwork.Ask().WhatIsTheDifference(semanticNetwork.AreaType_Air, semanticNetwork.MotorType_Jet);

            // assert
            Assert.IsTrue(answer.IsEmpty);
            Assert.AreEqual(0, answer.Explanation.Statements.Count);
        }
コード例 #12
0
        public void ReturnEmptyWithExplanationIfNoDifferenceFound()
        {
            // arrange
            var language        = Language.Default;
            var semanticNetwork = new TestSemanticNetwork(language);

            // act
            var answer = semanticNetwork.SemanticNetwork.Ask().WhatIsTheDifference(semanticNetwork.Vehicle_Car, semanticNetwork.Vehicle_Motorcycle);

            // assert
            Assert.IsTrue(answer.IsEmpty);
            Assert.Greater(answer.Explanation.Statements.Count, 0);
        }
コード例 #13
0
        public void ReturnEmptyWithExplanationIfNoCommonFound()
        {
            // arrange
            var language        = Language.Default;
            var semanticNetwork = new TestSemanticNetwork(language);

            // act
            var answer = semanticNetwork.SemanticNetwork.Ask().WhatInCommon(semanticNetwork.Vehicle_Car, semanticNetwork.Vehicle_JetFighter);

            // assert
            Assert.IsTrue(answer.IsEmpty);
            Assert.Greater(answer.Explanation.Statements.Count, 0);
        }
コード例 #14
0
        public void CheckUncomparableValues()
        {
            // arrange
            var language        = Language.Default;
            var semanticNetwork = new TestSemanticNetwork(language);

            // act
            var answer = semanticNetwork.SemanticNetwork.Ask().HowCompared(ComparisonSigns.IsNotEqualTo, SequenceSigns.Causes);

            // assert
            Assert.IsTrue(answer.IsEmpty);
            Assert.AreEqual(0, answer.Explanation.Statements.Count);
        }
コード例 #15
0
        public void AnswerNotFound()
        {
            // arrange
            var language        = Language.Default;
            var semanticNetwork = new TestSemanticNetwork(language);

            // act
            var answer = semanticNetwork.SemanticNetwork.Ask().IfIs(semanticNetwork.Sign_AreaType, semanticNetwork.Base_Vehicle);

            // assert
            Assert.IsFalse(answer.IsEmpty);
            Assert.IsFalse(((BooleanAnswer)answer).Result);
            Assert.AreEqual(0, answer.Explanation.Statements.Count);
        }
コード例 #16
0
        public void ReturnFalseIfNotFound()
        {
            // arrange
            var language        = Language.Default;
            var semanticNetwork = new TestSemanticNetwork(language);

            // act
            var answer = semanticNetwork.SemanticNetwork.Ask().IfConceptBelongsToSubjectArea(semanticNetwork.Base_Vehicle, semanticNetwork.SubjectArea_Numbers);

            // assert
            Assert.IsFalse(answer.IsEmpty);
            Assert.IsFalse(((BooleanAnswer)answer).Result);
            Assert.AreEqual(0, answer.Explanation.Statements.Count);
        }
コード例 #17
0
        public void ReturnDirectSignValue()
        {
            // arrange
            var language        = Language.Default;
            var semanticNetwork = new TestSemanticNetwork(language);

            // act
            var answer = semanticNetwork.SemanticNetwork.Ask().WhatIsSignValue(semanticNetwork.Vehicle_Car, semanticNetwork.Sign_AreaType);

            // assert
            Assert.IsFalse(answer.IsEmpty);
            Assert.AreSame(semanticNetwork.AreaType_Ground, ((ConceptAnswer)answer).Result);
            Assert.AreSame(typeof(SignValueStatement), answer.Explanation.Statements.Single().GetType());
        }
コード例 #18
0
        public void CheckConditionsWithLeAndGe()
        {
            // arrange
            var language        = Language.Default;
            var semanticNetwork = new TestSemanticNetwork(language);

            var comparisons = new[]
            {
                new Tuple <IConcept, IConcept, IConcept>(semanticNetwork.Number1or2, semanticNetwork.Number0, ComparisonSigns.IsGreaterThan),
                new Tuple <IConcept, IConcept, IConcept>(semanticNetwork.Number1or2, semanticNetwork.Number1, ComparisonSigns.IsGreaterThanOrEqualTo),
                new Tuple <IConcept, IConcept, IConcept>(semanticNetwork.Number1or2, semanticNetwork.Number2, ComparisonSigns.IsLessThanOrEqualTo),
                new Tuple <IConcept, IConcept, IConcept>(semanticNetwork.Number1or2, semanticNetwork.Number3, ComparisonSigns.IsLessThan),
                new Tuple <IConcept, IConcept, IConcept>(semanticNetwork.Number1or2, semanticNetwork.Number4, ComparisonSigns.IsLessThan),
                new Tuple <IConcept, IConcept, IConcept>(semanticNetwork.Number1or2, semanticNetwork.Number2or3, ComparisonSigns.IsLessThanOrEqualTo),
                new Tuple <IConcept, IConcept, IConcept>(semanticNetwork.Number1or2, semanticNetwork.Number3or4, ComparisonSigns.IsLessThan),
                new Tuple <IConcept, IConcept, IConcept>(semanticNetwork.Number2or3, semanticNetwork.Number0, ComparisonSigns.IsGreaterThan),
                new Tuple <IConcept, IConcept, IConcept>(semanticNetwork.Number2or3, semanticNetwork.Number1, ComparisonSigns.IsGreaterThan),
                new Tuple <IConcept, IConcept, IConcept>(semanticNetwork.Number2or3, semanticNetwork.Number2, ComparisonSigns.IsGreaterThanOrEqualTo),
                new Tuple <IConcept, IConcept, IConcept>(semanticNetwork.Number2or3, semanticNetwork.Number3, ComparisonSigns.IsLessThanOrEqualTo),
                new Tuple <IConcept, IConcept, IConcept>(semanticNetwork.Number2or3, semanticNetwork.Number4, ComparisonSigns.IsLessThan),
                new Tuple <IConcept, IConcept, IConcept>(semanticNetwork.Number2or3, semanticNetwork.Number1or2, ComparisonSigns.IsGreaterThanOrEqualTo),
                new Tuple <IConcept, IConcept, IConcept>(semanticNetwork.Number2or3, semanticNetwork.Number3or4, ComparisonSigns.IsLessThanOrEqualTo),
                new Tuple <IConcept, IConcept, IConcept>(semanticNetwork.Number3or4, semanticNetwork.Number0, ComparisonSigns.IsGreaterThan),
                new Tuple <IConcept, IConcept, IConcept>(semanticNetwork.Number3or4, semanticNetwork.Number1, ComparisonSigns.IsGreaterThan),
                new Tuple <IConcept, IConcept, IConcept>(semanticNetwork.Number3or4, semanticNetwork.Number2, ComparisonSigns.IsGreaterThan),
                new Tuple <IConcept, IConcept, IConcept>(semanticNetwork.Number3or4, semanticNetwork.Number3, ComparisonSigns.IsGreaterThanOrEqualTo),
                new Tuple <IConcept, IConcept, IConcept>(semanticNetwork.Number3or4, semanticNetwork.Number4, ComparisonSigns.IsLessThanOrEqualTo),
                new Tuple <IConcept, IConcept, IConcept>(semanticNetwork.Number3or4, semanticNetwork.Number1or2, ComparisonSigns.IsGreaterThan),
                new Tuple <IConcept, IConcept, IConcept>(semanticNetwork.Number3or4, semanticNetwork.Number2or3, ComparisonSigns.IsGreaterThanOrEqualTo),
            };

            foreach (var comparison in comparisons)
            {
                // act
                var answer1    = semanticNetwork.SemanticNetwork.Ask().HowCompared(comparison.Item1, comparison.Item2);
                var statement1 = (ComparisonStatement)((StatementAnswer)answer1).Result;

                var answer2    = semanticNetwork.SemanticNetwork.Ask().HowCompared(comparison.Item2, comparison.Item1);
                var statement2 = (ComparisonStatement)((StatementAnswer)answer2).Result;

                // assert
                Assert.AreSame(comparison.Item1, statement1.LeftValue);
                Assert.AreSame(comparison.Item2, statement1.RightValue);
                Assert.AreSame(comparison.Item3, statement1.ComparisonSign);

                Assert.AreSame(comparison.Item2, statement2.LeftValue);
                Assert.AreSame(comparison.Item1, statement2.RightValue);
                Assert.AreSame(ComparisonSigns.Revert(comparison.Item3), statement2.ComparisonSign);
            }
        }
コード例 #19
0
        public void SubjectAreaWithoutConceptsHasNoConcepts()
        {
            // arrange
            var language             = Language.Default;
            var semanticNetwork      = new TestSemanticNetwork(language);
            var noSubjectAreaConcept = SystemConcepts.GetAll().First();

            // act
            var answer = semanticNetwork.SemanticNetwork.Ask().WhichConceptsBelongToSubjectArea(noSubjectAreaConcept);

            // assert
            Assert.IsTrue(answer.IsEmpty);
            Assert.AreEqual(0, answer.Explanation.Statements.Count);
        }
コード例 #20
0
        public void ReturnTrueWithtExplanation()
        {
            // arrange
            var language        = Language.Default;
            var semanticNetwork = new TestSemanticNetwork(language);

            // act
            var answer = semanticNetwork.SemanticNetwork.Ask().IfIsSign(semanticNetwork.Sign_AreaType);

            // assert
            Assert.IsFalse(answer.IsEmpty);
            Assert.IsTrue(((BooleanAnswer)answer).Result);
            Assert.IsTrue(answer.Explanation.Statements.OfType <HasSignStatement>().Any());
        }
コード例 #21
0
        public void ReturnEmptyAnswerIfThereAreParentSignsButNotRecursive()
        {
            // arrange
            var language        = Language.Default;
            var semanticNetwork = new TestSemanticNetwork(language);

            var question = new EnumerateSignsQuestion(semanticNetwork.Vehicle_Motorcycle, false);

            // act
            var answer = question.Ask(semanticNetwork.SemanticNetwork.Context);

            // assert
            Assert.IsTrue(answer.IsEmpty);
            Assert.AreEqual(0, answer.Explanation.Statements.Count);
        }
コード例 #22
0
        public void ReturnAllCommon()
        {
            // arrange
            var language        = Language.Default;
            var semanticNetwork = new TestSemanticNetwork(language);

            // act
            var answer = semanticNetwork.SemanticNetwork.Ask().WhatInCommon(semanticNetwork.Vehicle_Steamboat, semanticNetwork.Vehicle_SteamLocomotive);

            // assert
            Assert.IsFalse(answer.IsEmpty);

            Assert.AreSame(semanticNetwork.Sign_MotorType, (((ConceptsAnswer)answer).Result).Single());

            Assert.Greater(answer.Explanation.Statements.Count, 0);
        }
コード例 #23
0
        public void TestBuildingWhichContainersInclude()
        {
            // arrange
            var language        = Language.Default;
            var semanticNetwork = new TestSemanticNetwork(language);

            // act
            var questionRegular = new EnumerateContainersQuestion(semanticNetwork.Part_Engine);
            var answerRegular   = (ConceptsAnswer)questionRegular.Ask(semanticNetwork.SemanticNetwork.Context);

            var answerBuilder = (ConceptsAnswer)semanticNetwork.SemanticNetwork.Ask().WhichContainersInclude(semanticNetwork.Part_Engine);

            // assert
            Assert.IsTrue(answerRegular.Result.SequenceEqual(answerBuilder.Result));
            Assert.IsTrue(answerRegular.Explanation.Statements.SequenceEqual(answerBuilder.Explanation.Statements));
        }
コード例 #24
0
        public void TestBuildingToWhichSubjectAreasBelongs()
        {
            // arrange
            var language        = Language.Default;
            var semanticNetwork = new TestSemanticNetwork(language);

            // act
            var questionRegular = new FindSubjectAreaQuestion(semanticNetwork.Vehicle_Car);
            var answerRegular   = (ConceptsAnswer)questionRegular.Ask(semanticNetwork.SemanticNetwork.Context);

            var answerBuilder = (ConceptsAnswer)semanticNetwork.SemanticNetwork.Ask().ToWhichSubjectAreasBelongs(semanticNetwork.Vehicle_Car);

            // assert
            Assert.IsTrue(answerRegular.Result.SequenceEqual(answerBuilder.Result));
            Assert.IsTrue(answerRegular.Explanation.Statements.SequenceEqual(answerBuilder.Explanation.Statements));
        }
コード例 #25
0
        public void TestBuildingWhichDescendantsHas()
        {
            // arrange
            var language        = Language.Default;
            var semanticNetwork = new TestSemanticNetwork(language);

            // act
            var questionRegular = new EnumerateDescendantsQuestion(semanticNetwork.Base_Vehicle);
            var answerRegular   = (ConceptsAnswer)questionRegular.Ask(semanticNetwork.SemanticNetwork.Context);

            var answerBuilder = (ConceptsAnswer)semanticNetwork.SemanticNetwork.Ask().WhichDescendantsHas(semanticNetwork.Base_Vehicle);

            // assert
            Assert.IsTrue(answerRegular.Result.SequenceEqual(answerBuilder.Result));
            Assert.IsTrue(answerRegular.Explanation.Statements.SequenceEqual(answerBuilder.Explanation.Statements));
        }
コード例 #26
0
        public void TestBuildingWhichConceptsBelongToSubjectArea()
        {
            // arrange
            var language        = Language.Default;
            var semanticNetwork = new TestSemanticNetwork(language);

            // act
            var questionRegular = new DescribeSubjectAreaQuestion(semanticNetwork.SubjectArea_Transport);
            var answerRegular   = (ConceptsAnswer)questionRegular.Ask(semanticNetwork.SemanticNetwork.Context);

            var answerBuilder = (ConceptsAnswer)semanticNetwork.SemanticNetwork.Ask().WhichConceptsBelongToSubjectArea(semanticNetwork.SubjectArea_Transport);

            // assert
            Assert.IsTrue(answerRegular.Result.SequenceEqual(answerBuilder.Result));
            Assert.IsTrue(answerRegular.Explanation.Statements.SequenceEqual(answerBuilder.Explanation.Statements));
        }
コード例 #27
0
        public void TestBuildingHowCompared()
        {
            // arrange
            var language        = Language.Default;
            var semanticNetwork = new TestSemanticNetwork(language);

            // act
            var questionRegular = new ComparisonQuestion(semanticNetwork.Number0, semanticNetwork.Number2);
            var answerRegular   = (StatementAnswer)questionRegular.Ask(semanticNetwork.SemanticNetwork.Context);

            var answerBuilder = (StatementAnswer)semanticNetwork.SemanticNetwork.Ask().HowCompared(semanticNetwork.Number0, semanticNetwork.Number2);

            // assert
            Assert.AreEqual(answerRegular.Result, answerBuilder.Result);
            Assert.IsTrue(answerRegular.Explanation.Statements.SequenceEqual(answerBuilder.Explanation.Statements));
        }
コード例 #28
0
        public void TestBuildingIfIsValue()
        {
            // arrange
            var language        = Language.Default;
            var semanticNetwork = new TestSemanticNetwork(language);

            // act
            var questionRegular = new IsValueQuestion(semanticNetwork.AreaType_Air);
            var answerRegular   = (BooleanAnswer)questionRegular.Ask(semanticNetwork.SemanticNetwork.Context);

            var answerBuilder = (BooleanAnswer)semanticNetwork.SemanticNetwork.Ask().IfIsValue(semanticNetwork.AreaType_Air);

            // assert
            Assert.AreEqual(answerRegular.Result, answerBuilder.Result);
            Assert.IsTrue(answerRegular.Explanation.Statements.SequenceEqual(answerBuilder.Explanation.Statements));
        }
コード例 #29
0
        public void TestBuildingIfConceptBelongsToSubjectArea()
        {
            // arrange
            var language        = Language.Default;
            var semanticNetwork = new TestSemanticNetwork(language);

            // act
            var questionRegular = new IsSubjectAreaQuestion(semanticNetwork.Vehicle_Car, semanticNetwork.SubjectArea_Transport);
            var answerRegular   = (BooleanAnswer)questionRegular.Ask(semanticNetwork.SemanticNetwork.Context);

            var answerBuilder = (BooleanAnswer)semanticNetwork.SemanticNetwork.Ask().IfConceptBelongsToSubjectArea(semanticNetwork.Vehicle_Car, semanticNetwork.SubjectArea_Transport);

            // assert
            Assert.AreEqual(answerRegular.Result, answerBuilder.Result);
            Assert.IsTrue(answerRegular.Explanation.Statements.SequenceEqual(answerBuilder.Explanation.Statements));
        }
コード例 #30
0
        public void TestBuildingWhatIsSignValue()
        {
            // arrange
            var language        = Language.Default;
            var semanticNetwork = new TestSemanticNetwork(language);

            // act
            var questionRegular = new SignValueQuestion(semanticNetwork.Vehicle_Car, semanticNetwork.Sign_MotorType);
            var answerRegular   = (ConceptAnswer)questionRegular.Ask(semanticNetwork.SemanticNetwork.Context);

            var answerBuilder = (ConceptAnswer)semanticNetwork.SemanticNetwork.Ask().WhatIsSignValue(semanticNetwork.Vehicle_Car, semanticNetwork.Sign_MotorType);

            // assert
            Assert.AreSame(answerRegular.Result, answerBuilder.Result);
            Assert.IsTrue(answerRegular.Explanation.Statements.SequenceEqual(answerBuilder.Explanation.Statements));
        }