예제 #1
0
        public void TestUnifyVA()
        {
            var a = Var.NewVar();
            var v = new BasicVal {
                Value = rng.Next()
            };
            var g = Goal.Unify(v, a);
            var s = Goal.Eval(g).First();

            Assert.AreEqual(v.Value, s[a].Value);
        }
예제 #2
0
        public void TestUnifyVVb()
        {
            var a = Var.NewVar();
            var b = Var.NewVar();
            var v = new BasicVal {
                Value = rng.Next()
            };
            var g = Goal.Conj(Goal.Unify <BasicVal>(a, b), Goal.Unify(b, v));
            var s = Goal.Eval(g).First();

            Assert.AreEqual(v.Value, s[a].Value);
        }
예제 #3
0
        public void TestDisjunction()
        {
            var a  = Var.NewVar();
            var v1 = new BasicVal {
                Value = rng.Next()
            };
            var v2 = new BasicVal {
                Value = rng.Next()
            };
            var g = Goal.Disj(Goal.Unify(a, v1), Goal.Unify(a, v2));
            var s = Goal.Eval(g).ToArray();

            Assert.AreEqual(v1.Value, s[0][a].Value);
            Assert.AreEqual(v2.Value, s[1][a].Value);
        }