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