Example #1
0
        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());
        }
Example #2
0
        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"));
        }
Example #3
0
        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));
        }
Example #4
0
        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));
        }
Example #5
0
        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);
        }