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); }
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); }
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); }