Inheritance: IQueryable, ICustomSerialization
Example #1
0
 public void Test_DynamicProperty_Regist_Fail_ConstantProperties()
 {
     var kb = new KB((Name)"Me");
     Assert.Throws<ArgumentException>(() =>
     {
         kb.Tell((Name)"Count(John)", Name.BuildName(3));
         kb.RegistDynamicProperty((Name)"Count", DummyCount);
     });
 }
        public void ConditionEvaluatorSet_Test_Universal_Pass(params string[] beliefs)
        {
            var kb = new KB((Name)"Me");
            foreach (var s in beliefs.Select(b => b.Split(':')))
                kb.Tell((Name)s[0], (Name)s[1]);

            var set = new ConditionSet(LogicalQuantifier.Universal, TEST_CONDITIONS);
            Assert.True(set.Evaluate(kb, Name.SELF_SYMBOL, null));
        }
Example #3
0
        public void Test_Tell_Pass_Add_Self_Belief_and_Change_Perspective_02()
        {
            var kb = new KB(Name.BuildName("Mark"));
            kb.Tell(Name.BuildName("IsPerson(Self)"), Name.BuildName(true),Name.BuildName("John(Self)"));

            kb.SetPerspective(Name.BuildName("Mary"));

            Assert.Null(kb.AskProperty(Name.BuildName("IsPerson(Mark)"), Name.BuildName("John(Self)")));

            var n = kb.AskProperty(Name.BuildName("IsPerson(Mary)"), Name.BuildName("John(Self)"));
            bool b;
            if(!n.TryConvertToValue(out b))
                Assert.Fail();
            Assert.True(b);
        }
Example #4
0
 public void Test_Tell_Fail_Property_ToM_Transform(string property,string perspective)
 {
     var kb = new KB((Name)"John");
     Assert.Throws<ArgumentException>(() => kb.Tell((Name) property, Name.BuildName(true),(Name)perspective));
 }
Example #5
0
 public void Test_Tell_Fail_Primitive_Property(string primitiveName)
 {
     var kb = new KB((Name)"John");
     Assert.Throws<ArgumentException>(() => kb.Tell((Name)primitiveName, Name.BuildName(true)));
 }
        public void Test_Fail_FalsePerdicate()
        {
            var kb = new KB((Name)"John");
            var c = Condition.Parse("Likes(Formal) = false");

            Assert.False(c.Evaluate(kb, Name.SELF_SYMBOL, new[] {new SubstitutionSet()}));
        }
Example #7
0
 public void Test_DynamicProperty_Regist_Fail_Null_Surogate()
 {
     var kb = new KB((Name)"Me");
     Assert.Throws<ArgumentNullException>(() => kb.RegistDynamicProperty((Name)"Count", (DynamicPropertyCalculator_T1)null));
 }
Example #8
0
 public void Test_AskProperty_Self()
 {
     var kb = new KB((Name)"John");
     var value = Name.BuildName(kb.AskProperty(Name.SELF_SYMBOL).ToString());
     Assert.AreEqual(value, kb.Perspective);
 }
Example #9
0
 public void Test_Simple_Tell_Valid(Name name, object value)
 {
     var kb = new KB((Name)"Me");
     kb.Tell(name, Name.BuildName(value));
 }
Example #10
0
 public void Test_Simple_Tell_Invalid(Name name, object value, Type expectedException)
 {
     var kb = new KB((Name)"Me");
     Assert.Throws(expectedException, () => kb.Tell(name, Name.BuildName(value)));
 }
Example #11
0
        public void Test_PrimitiveValuesAsk(string str, object expect)
        {
            Name v = (Name)str;
            KB kb = new KB((Name)"Me");
            var value = kb.AskProperty(v);
            Assert.NotNull(value);

            Assert.AreEqual(value, Name.BuildName(expect));
        }
Example #12
0
 public void Test_Fail_Tell_With_Nil_Perspective()
 {
     var kb = new KB(Name.BuildName("Mark"));
     Assert.Throws<ArgumentException>(() => kb.Tell(Name.BuildName("IsPerson(Self)"), Name.BuildName(true), Name.NIL_SYMBOL));
 }
        private static KB CreateKB()
        {
            var kb = new KB((Name)"Me");

            kb.Tell((Name)"Strength(John)",Name.BuildName(5));
            kb.Tell((Name)"Strength(Mary)", Name.BuildName(3));
            kb.Tell((Name)"Strength(Leonidas)", Name.BuildName(500));
            kb.Tell((Name)"Strength(Goku)", Name.BuildName(9001f));
            kb.Tell((Name)"Strength(SuperMan)", Name.BuildName(ulong.MaxValue));
            kb.Tell((Name)"Strength(Saitama)", Name.BuildName(float.MaxValue));
            kb.Tell((Name)"Race(Saitama)", Name.BuildName("human"));
            kb.Tell((Name)"Race(Superman)", Name.BuildName("kriptonian"));
            kb.Tell((Name)"Race(Goku)",Name.BuildName("sayian"));
            kb.Tell((Name)"Race(Leonidas)", Name.BuildName("human"));
            kb.Tell((Name)"Race(Mary)", Name.BuildName("human"));
            kb.Tell((Name)"Race(John)", Name.BuildName("human"));
            kb.Tell((Name)"Job(Saitama)", Name.BuildName("super-hero"));
            kb.Tell((Name)"Job(Superman)", Name.BuildName("super-hero"));
            kb.Tell((Name)"Job(Leonidas)", Name.BuildName("Spartan"));
            kb.Tell((Name)"AKA(Saitama)", Name.BuildName("One-Punch_Man"));
            kb.Tell((Name)"AKA(Superman)", Name.BuildName("Clark_Kent"));
            kb.Tell((Name)"AKA(Goku)", Name.BuildName("Kakarot"));
            kb.Tell((Name)"Hobby(Saitama)", Name.BuildName("super-hero"));
            kb.Tell((Name)"Hobby(Goku)", Name.BuildName("training"));
            kb.Tell((Name)"IsAlive(Leonidas)", Name.BuildName(false));
            kb.Tell((Name)"IsAlive(Saitama)", Name.BuildName(true));
            kb.Tell((Name)"IsAlive(Superman)", Name.BuildName(true));
            kb.Tell((Name)"IsAlive(John)", Name.BuildName(true));

            return kb;
        }
Example #14
0
        public void Test_Tell_Pass_Add_With_Perspective(string nativePerspective, string tellPerdicate, string tellPerspective, string queryPerdicate, string queryPerspective)
        {
            var kb = new KB(Name.BuildName(nativePerspective));
            kb.Tell(Name.BuildName(tellPerdicate), Name.BuildName(true), Name.BuildName(tellPerspective));

            using (var stream = new MemoryStream())
            {
                var formater = new JSONSerializer();
                formater.Serialize(stream, kb);
                stream.Seek(0, SeekOrigin.Begin);
                Console.WriteLine(new StreamReader(stream).ReadToEnd());
            }

            var r = kb.AskProperty(Name.BuildName(queryPerdicate), Name.BuildName(queryPerspective));
            bool b;
            if (!r.TryConvertToValue(out b))
                Assert.Fail();

            Assert.IsTrue(b);
        }
Example #15
0
 public void Test_Tell_Fail_Add_Self_To_Universal()
 {
     var kb = new KB(Name.BuildName("Matt"));
     Assert.Throws<InvalidOperationException>(() => { kb.Tell((Name)"IsPerson(Self)", Name.BuildName(true), Name.UNIVERSAL_SYMBOL); });
 }
Example #16
0
 public void Test_Tell_Pass_Basic_Property_With_ToM()
 {
     const string property = "ToM(Mary,ToM(Self,Has(Ball)))";
     var kb = new KB((Name)"John");
     kb.Tell((Name) property, Name.BuildName(true));
 }
Example #17
0
 public void Test_Tell_Fail_Add_Self_To_Universal_Context()
 {
     var kb = new KB((Name)"John");
     Assert.Throws<InvalidOperationException>(() => kb.Tell((Name)"Likes(Self)", Name.BuildName(true),Name.UNIVERSAL_SYMBOL));
 }
Example #18
0
 //public static int NumOfPersistentEntries()
 //{
 //    return MemoryData().Count(d =>
 //        d.Arguments.Length > 2 && (bool) d.Arguments[2]
 //        );
 //}
 public static KB PopulatedTestMemory()
 {
     KB kb = new KB((Name)"Me");
     foreach (var t in MemoryData())
     {
         Name property = (Name) t.Arguments[0];
         Name value = Name.BuildName(t.Arguments[1]);
         try
         {
             //if(t.Arguments.Length>2)
             //	kb.Tell((Name)t.Arguments[0], PrimitiveValue.Cast(t.Arguments[1]),(bool)t.Arguments[2]);
             //else
             kb.Tell(property, value);
         }
         catch (Exception e)
         {
             if (t.Arguments.Length > 2)
                 Assert.AreEqual(e.GetType(), t.Arguments[2]);
             else
                 Assert.Fail($"An exception was thrown unexpectedly while evaluating {property} = {value}: {e}");
         }
     }
     return kb;
 }
Example #19
0
        public void Test_Tell_Fail_Assert_Perspective(string perspective,Type exceptionType)
        {
            var kb = new KB((Name)"John");

            Assert.Throws(exceptionType,() => kb.Tell((Name)"Likes(Mary)", Name.BuildName(true), (Name)perspective));
        }
Example #20
0
 public void Test_DynamicProperty_Regist_Fail_InvalidTemplate()
 {
     var kb = new KB((Name)"Me");
     Assert.Throws<ArgumentException>(() => kb.RegistDynamicProperty((Name)"Count(John)", DummyCount));
 }
Example #21
0
 public void Test_Tell_Fail_Complext_Property_With_ToM()
 {
     const string property = "ToM(Mary,ToM(Self,Has(ToM(Mary,Ball))))";
     var kb = new KB((Name)"John");
     Assert.Throws<ArgumentException>(() => kb.Tell((Name)property, Name.BuildName(true)));
 }
Example #22
0
        public void Test_Fail_Change_Perspective_To_Invalid_Perspective(string perspective)
        {
            var kb = new KB(Name.BuildName("Mark"));
            kb.Tell(Name.BuildName("IsPerson(Self)"), Name.BuildName(true), Name.BuildName("John(Self)"));

            Assert.Throws<ArgumentException>(() => kb.SetPerspective(Name.BuildName(perspective)));
        }
Example #23
0
 public void BindCalls(KB kb)
 {
     kb.RegistDynamicProperty(EVENT_ID_PROPERTY_NAME, EventIdPropertyCalculator, "Returns the ids of all events that unify with the property's name");
     kb.RegistDynamicProperty(EVENT_ELAPSED_TIME_PROPERTY_NAME, EventAgePropertyCalculator, "The number of ticks passed since the event associated to [id] occured");
     kb.RegistDynamicProperty(LAST_EVENT_ID_PROPERTY_NAME, LastEventIdPropertyCalculator, "Returns the id of the last event if it unifies with the property's name");
 }