public void ParseEmptyModule() { Parser parser = new Parser("module Module1; a=1; end"); var expected = new ModuleExpression("Module1", new AssignExpression("a", new ConstantExpression(1))); var result = parser.ParseExpression(); Assert.IsNotNull(result); Assert.AreEqual(expected, result); Assert.IsNull(parser.ParseCommand()); }
public void EvaluateModuleExpressionWithInternalAssignment() { Machine machine = new Machine(); ModuleExpression expr = new ModuleExpression("Module1", new AssignExpression("one", new ConstantExpression(1))); Assert.AreEqual(1, expr.Evaluate(machine.RootContext)); var result = machine.RootContext.GetValue("Module1"); Assert.IsNotNull(result); Assert.IsInstanceOfType(result, typeof(DynamicClass)); var module = (DynamicClass)result; Assert.IsFalse(module.Constants.HasLocalValue("one")); }
public void EvaluateModuleExpression() { Machine machine = new Machine(); ModuleExpression expr = new ModuleExpression("Module1", new ConstantExpression(1)); Assert.AreEqual(1, expr.Evaluate(machine.RootContext)); var result = machine.RootContext.GetValue("Module1"); Assert.IsNotNull(result); Assert.IsInstanceOfType(result, typeof(DynamicClass)); var module = (DynamicClass)result; var method = module.GetMethod("name"); Assert.IsNotNull(method); Assert.AreEqual("Module1", method.Apply(module, module.Constants, null)); }
public void Equals() { ModuleExpression mexpr1 = new ModuleExpression("Module1", new ConstantExpression(1)); ModuleExpression mexpr2 = new ModuleExpression("Module1", new ConstantExpression(2)); ModuleExpression mexpr3 = new ModuleExpression("Module2", new ConstantExpression(1)); ModuleExpression mexpr4 = new ModuleExpression("Module1", new ConstantExpression(1)); Assert.IsFalse(mexpr1.Equals(null)); Assert.IsFalse(mexpr1.Equals(123)); Assert.IsFalse(mexpr1.Equals("foo")); Assert.IsTrue(mexpr1.Equals(mexpr4)); Assert.IsTrue(mexpr4.Equals(mexpr1)); Assert.AreEqual(mexpr1.GetHashCode(), mexpr4.GetHashCode()); Assert.IsFalse(mexpr1.Equals(mexpr2)); Assert.IsFalse(mexpr2.Equals(mexpr1)); Assert.IsFalse(mexpr1.Equals(mexpr3)); Assert.IsFalse(mexpr3.Equals(mexpr1)); }
public void EvaluateModuleExpressionWithClassDefinition() { Machine machine = new Machine(); ModuleExpression expr = new ModuleExpression("Module1", new ClassExpression(new NameExpression("Foo"), new ConstantExpression(1))); Assert.AreEqual(null, expr.Evaluate(machine.RootContext)); var result = machine.RootContext.GetValue("Module1"); Assert.IsNotNull(result); Assert.IsInstanceOfType(result, typeof(DynamicClass)); var module = (DynamicClass)result; var @class = module.Constants.GetLocalValue("Foo"); Assert.IsNotNull(@class); Assert.IsInstanceOfType(@class, typeof(DynamicClass)); Assert.AreEqual("Foo", ((DynamicClass)@class).Name); Assert.AreEqual("Module1::Foo", ((DynamicClass)@class).FullName); }