public void CreateSimpleTuple()
{
Context context = new Context();
context.SetValue("X", 2);
var expr = new TupleExpression(new IExpression[] { new ConstantExpression(1), new VariableExpression(new Variable("X")), new AtomExpression(new Atom("y")) });
Assert.IsTrue(expr.HasVariable());
var result = expr.Evaluate(context);
Assert.IsNotNull(result);
Assert.IsInstanceOfType(result, typeof(Tuple));
var tuple = (Tuple)result;
Assert.AreEqual(3, tuple.Arity);
Assert.AreEqual(1, tuple.ElementAt(0));
Assert.AreEqual(2, tuple.ElementAt(1));
Assert.IsInstanceOfType(tuple.ElementAt(2), typeof(Atom));
Assert.AreEqual("y", ((Atom)tuple.ElementAt(2)).Name);
}