public void t_callback_with_subQuery() { Delegate d = new DelegateParameter1(assert_fact); PlEngine.RegisterForeign(d); Assert.IsTrue(PlQuery.PlCall("assert( (test(Result) :- member(X,[1,2,3]), assert_fact(X), findall(E, fact(E), Result)) )")); int count = 1; var q = new PlQuery("test(L)"); foreach (PlTermV s in q.Solutions) { switch (count) { case 1: Assert.AreEqual("[1]", s[0].ToString()); break; case 2: Assert.AreEqual("[1,2]", s[0].ToString()); break; case 3: Assert.AreEqual("[1,2,3]", s[0].ToString()); break; } //Console.WriteLine(s[0].ToString()); count++; } }
public void t_succeed_and_fail() { Delegate d = new DelegateParameter1(odd); PlEngine.RegisterForeign(d); Assert.IsFalse(PlQuery.PlCall("odd(as)")); Assert.IsFalse(PlQuery.PlCall("odd(4)")); Assert.IsTrue(PlQuery.PlCall("odd(5)")); }
public void t_creating_a_list() { Delegate d = new DelegateParameter1(create_list); PlEngine.RegisterForeign(d); for (int i = 1; i < 10; i++) { PlTerm t = PlQuery.PlCallQuery("create_list(L)"); Assert.AreEqual("[a,b,c]", t.ToString(), "create_list failed!"); } }