public void CreateInstance()
        {
            DefinedClass klass  = new DefinedClass("Spam");
            var          result = klass.Apply(null, null, null);

            Assert.IsNotNull(result);
            Assert.IsInstanceOfType(result, typeof(DynamicObject));
            Assert.AreEqual(klass, ((DynamicObject)result).Class);
        }
        public void GetDynamicObjectType()
        {
            DefinedClass  klass = new DefinedClass("Spam");
            DynamicObject foo   = (DynamicObject)klass.Apply(null, null, null);

            var result = Types.GetType(foo);

            Assert.IsNotNull(result);
            Assert.AreEqual(klass, result);
        }
Exemple #3
0
        public void EvaluateMethodCall()
        {
            DefinedClass    klass    = new DefinedClass("Spam");
            DefinedFunction function = new DefinedFunction("get", new Parameter[] { new Parameter("self", null, false), new Parameter("a", null, false) }, new ReturnCommand(new NameExpression("a")), null);

            klass.SetMethod(function.Name, function);
            DynamicObject foo = (DynamicObject)klass.Apply(this.machine.Environment, null, null);

            this.machine.Environment.SetValue("foo", foo);
            Assert.AreEqual(2, this.Evaluate("foo.get(2)"));
        }
Exemple #4
0
        public void CallObjectMethod()
        {
            DefinedClass       klass       = DynamicObjectTests.CreateClassWithMethods("Spam");
            DynamicObject      dynobj      = (DynamicObject)klass.Apply(null, null, null);
            BindingEnvironment environment = new BindingEnvironment();

            environment.SetValue("foo", dynobj);
            CallExpression expression = new CallExpression(new AttributeExpression(new NameExpression("foo"), "getSelf"), null);

            var result = expression.Evaluate(environment);

            Assert.IsNotNull(result);
            Assert.AreEqual(dynobj, result);
        }
        public void CreateInstanceWithConstructor()
        {
            DefinedClass    klass       = new DefinedClass("Spam");
            ICommand        body        = new SetAttributeCommand(new NameExpression("self"), "name", new NameExpression("name"));
            DefinedFunction constructor = new DefinedFunction("__init__", new Parameter[] { new Parameter("self", null, false), new Parameter("name", null, false) }, body, null);

            klass.SetMethod(constructor.Name, constructor);
            var result = klass.Apply(null, new object[] { "Adam" }, null);

            Assert.IsNotNull(result);
            Assert.IsInstanceOfType(result, typeof(DynamicObject));

            var dynobj = (DynamicObject)result;

            Assert.AreEqual(klass, dynobj.Class);
            Assert.IsTrue(dynobj.HasValue("name"));
            var name = dynobj.GetValue("name");

            Assert.IsNotNull(name);
            Assert.AreEqual("Adam", name);
        }