Ejemplo n.º 1
0
        public void DefineMethod_AsRecordFunction()
        {
            var t = new DWSTypeDefinition("TCustomType");

            t.Fields.Add(new DWSFieldDefinition("x", "Integer"));
            t.Fields.Add(new DWSFieldDefinition("y", "Integer"));
            t.IsStruct = true;
            context.DefineType(t);

            var f = new DWSMethodDefinition("Test", (x, a) => {
                var v  = x.CreateTypedValue("TCustomType");
                v["x"] = 123;
                return(v);
            });

            f.ReturnTypeName = "TCustomType";
            context.DefineMethod(f);

            string rv = context.EvaluateScript(@"var a : TCustomType = Test(); Print(IntToStr(a.x));");

            Assert.IsNull(this.LastErrorMessage);
            Assert.AreEqual("123", rv);

            GC.KeepAlive(f);
        }
Ejemplo n.º 2
0
        private static void Test1(DWSContext context)
        {
            var t = new DWSTypeDefinition("TPoint");

            t.Fields.Add(new DWSFieldDefinition("x", "Integer"));
            t.Fields.Add(new DWSFieldDefinition("y", "Integer"));


            var m = new DWSMethodDefinition("ReturnFirstArg", (c, a) =>
            {
                var v = c.CreateTypedValue("TPoint");

                object o = v.Value;
                v["x"]   = 10;
                return(v);
            });

            m.Args.Add(new DWSParameterDefinition("a", "Integer"));
            m.ReturnTypeName = "TPoint";

            context.DefineType(t);
            context.DefineMethod(m);
            string s = context.EvaluateScript("var t : TPoint = ReturnFirstArg(2); ReturnFirstArg(t.x);");

            GC.KeepAlive(m);
        }
Ejemplo n.º 3
0
        public void DefineType_AsType()
        {
            var t = new DWSTypeDefinition("TCustomType");

            t.Fields.Add(new DWSFieldDefinition("x", "Integer"));
            t.Fields.Add(new DWSFieldDefinition("y", "Integer"));
            context.DefineType(t);

            context.EvaluateScript(@"var a : TCustomType; a := TCustomType.Create(); a.x := 1; a.y := 2; a.Free();");
            Assert.IsNull(this.LastErrorMessage);
        }