public void CompileArithModule()
{
Machine machine = new Machine();
CompileModuleFunction func = new CompileModuleFunction(machine);
var result = func.Apply(machine.RootContext, new object[] { new Atom("arith") });
Assert.IsNotNull(result);
Assert.IsInstanceOfType(result, typeof(Tuple));
var tuple = (Tuple)result;
Assert.AreEqual(2, tuple.Arity);
var elem1 = tuple.ElementAt(0);
Assert.IsNotNull(elem1);
Assert.IsInstanceOfType(elem1, typeof(Atom));
Assert.AreEqual("ok", ((Atom)elem1).Name);
var elem2 = tuple.ElementAt(1);
Assert.IsNotNull(elem2);
Assert.IsInstanceOfType(elem2, typeof(Atom));
Assert.AreEqual("arith", ((Atom)elem2).Name);
var result2 = machine.RootContext.GetValue("arith");
Assert.IsNotNull(result2);
Assert.IsInstanceOfType(result2, typeof(Module));
Assert.AreEqual("arith", ((Module)result2).Name);
}