Пример #1
0
        public void CompileWithLocals()
        {
            Machine machine = new Machine();
            IClass cls = machine.CreateClass("TestClass");
            cls.DefineInstanceVariable("x");

            Method mth;

            mth = new Method(cls, "x:");
            mth.CompileArgument("newX");
            mth.CompileLocal("l");
            mth.CompileGet("newX");
            mth.CompileSet("l");
            mth.CompileGet("l");
            mth.CompileSet("x");

            cls.DefineInstanceMethod(mth);

            Assert.AreEqual(mth, cls.GetInstanceMethod("x:"));
        }
Пример #2
0
        public void CompileWithLocalsAndRun()
        {
            Machine machine = new Machine();
            IClass cls = machine.CreateClass("TestClass");
            cls.DefineInstanceVariable("x");

            Method mth;

            mth = new Method(cls, "x:");
            mth.CompileArgument("newX");
            mth.CompileLocal("l");
            mth.CompileGet("newX");
            mth.CompileSet("l");
            mth.CompileGet("l");
            mth.CompileSet("x");

            cls.DefineInstanceMethod(mth);

            IObject obj = (IObject)cls.NewObject();

            mth.Execute(machine, obj, new object[] { 10 });

            Assert.AreEqual(10, obj[0]);
        }