Exemplo n.º 1
0
        public void ReflectionTest()
        {
            var  jsEnv = new JsEnv(new TxtLoader());
            bool ret   = jsEnv.Eval <bool>(@"
                const CS = require('csharp');
                let a = new CS.Puerts.UnitTest.RefInClass.Vector3(1, 2, 3);
                let b = new CS.Puerts.UnitTest.RefInClass.Vector3(1, 2, 3);

                CS.Puerts.UnitTest.RefInClass.Normalize(a).ToString() == `(1.0, 2.0, 3.0)` &&
                CS.Puerts.UnitTest.RefInClass.Multiply(a, b).ToString() == `(1.0, 4.0, 9.0)` &&
                CS.Puerts.UnitTest.RefInClass.Divide(a, b).ToString() == `(1.0, 1.0, 1.0)`;
            ");

            Assert.AreEqual(true, ret);
            jsEnv.Dispose();
        }
Exemplo n.º 2
0
        public void AbstractRefParamTest()
        {
            var    jsEnv = new JsEnv(new TxtLoader());
            string name  = jsEnv.Eval <string>(@"
                const CS = require('csharp');
                const PUERTS = require('puerts');
                let obj = new CS.Puerts.UnitTest.C();
                let name = PUERTS.$ref ('gyx');
                let res =  PUERTS.$ref ('');
                obj.TestRef(name,res);
                PUERTS.$unref (name) + PUERTS.$unref(res);
            ");

            jsEnv.Dispose();
            Assert.AreEqual(name, "annagyx23");
        }
Exemplo n.º 3
0
        public void PropertyTest()
        {
            var jsEnv = new JsEnv(new TxtLoader());

            PuertsStaticWrap.AutoStaticCodeRegister.Register(jsEnv);
            string ret = jsEnv.Eval <string>(@"
                const CS = require('csharp');
                const i1 = CS.Puerts.UnitTest.WrapperGenTest.StaticProperty;
                CS.Puerts.UnitTest.WrapperGenTest.StaticProperty = 'Puerts'
                i1 + ' ' + CS.Puerts.UnitTest.WrapperGenTest.StaticProperty;
            ");

            jsEnv.Dispose();

            Assert.AreEqual("StaticProperty Puerts", ret);
        }
Exemplo n.º 4
0
        public void ESModuleImportCSharp()
        {
            var loader = new TxtLoader();

            loader.AddMockFileContent("whatever.mjs", @"
                import csharp from 'csharp';
                const func = function() { return csharp.System.String.Join(' ', 'hello', 'world') }
                export { func };
            ");
            var           jsEnv = new JsEnv(loader);
            Func <string> func  = jsEnv.ExecuteModule <Func <string> >("whatever.mjs", "func");

            Assert.True(func() == "hello world");

            jsEnv.Dispose();
        }
Exemplo n.º 5
0
        public void ExtensionGenerateDerivedDerived1Test_2()
        {
            var jsEnv = new JsEnv(new TxtLoader());
            var res   = jsEnv.Eval <string>(@"
                const CS = require('csharp');
                const PUERTS = require('puerts');
                let obj = new CS.Puerts.UnitTest.DerivedClass();
                let obj1 = new CS.Puerts.UnitTest.DerivedClass1();
                PUERTS.$extension(CS.Puerts.UnitTest.BaseClass, CS.Puerts.UnitTest.BaseClassExtension);
                let res = obj.Extension2(obj1);
                res;
            ");

            jsEnv.Dispose();
            Assert.AreEqual(res, "Extension2<Puerts.UnitTest.BaseClass,Puerts.UnitTest.BaseClass1>");
        }
Exemplo n.º 6
0
        public void WarpTest12()
        {
            var jsEnv = new JsEnv(new TxtLoader());

            PuertsStaticWrap.AutoStaticCodeRegister.Register(jsEnv);
            int ret = jsEnv.Eval <int>(@"
                const CS = require('csharp');
                let temp = new CS.Puerts.UnitTest.OptionalParametersClass();
                let ret = 0;                
                try{temp.Test4('1',1);}catch(e){ret = 1;}
                ret;
            ");

            Assert.AreEqual(0, ret);
            jsEnv.Dispose();
        }
Exemplo n.º 7
0
 public void CatchByNextLevelTest()
 {
     var jsEnv = new JsEnv(new TxtLoader());
     string res = jsEnv.Eval<string>(@"
         const CS = require('csharp');
         const PUERTS = require('puerts');
         let obj = new CS.Puerts.UnitTest.DerivedClass();
         let f1 = PUERTS.$ref(false);
         let f2 = PUERTS.$ref(false);
         let f3 = PUERTS.$ref(false);
         let res = obj.CatchByNextLevel(f1,f2, f3);
         res;
     ");
     jsEnv.Dispose();
     Assert.AreEqual(res, "try-try-finally-catch-finally");
 }
Exemplo n.º 8
0
 public void Reentrant()
 {
     var jsEnv = new JsEnv(new TxtLoader());
     jsEnv.Eval(@"
         const CS = require('csharp');
         let obj = new CS.Puerts.UnitTest.Reentrant();
         function dosomething(){}
         obj.Callback = () => {
             obj.Call(false);
             dosomething();// 注释这行,或者Call没返回值就没事
         }
         obj.Call(true);
         
     ");
     jsEnv.Dispose();
 }
Exemplo n.º 9
0
        public void OperatorAddTest()
        {
            var jsEnv = new JsEnv(new TxtLoader());
            var res   = jsEnv.Eval <int>(@"
                const CS = require('csharp');
                let obj1 = new CS.Puerts.UnitTest.BaseClass();
                let obj2 = new CS.Puerts.UnitTest.BaseClass();
                obj1.baseIntField = 11;
                obj2.baseIntField = 22;
                let obj3 = CS.Puerts.UnitTest.BaseClass.op_Addition(obj1, obj2);
                obj3.baseIntField;
            ");

            jsEnv.Dispose();
            Assert.AreEqual(res, 33);
        }
Exemplo n.º 10
0
        public void NestTypeStaticMethodTest()
        {
            var jsEnv = new JsEnv(new TxtLoader());

            int ret = jsEnv.Eval <int>(@"
                const CS = require('csharp');
                const PUERTS = require('puerts');
                let res = PUERTS.$ref(0);
                CS.Puerts.UnitTest.DerivedClass.Inner.Sub(10,5,res);
                PUERTS.$unref (res);
            ");

            jsEnv.Dispose();

            Assert.AreEqual(5, ret);
        }
Exemplo n.º 11
0
        public void Test4()
        {
            var jsEnv = new JsEnv(new TxtLoader());

            int ret = jsEnv.Eval <int>(@"
                const CS = require('csharp');
                let obj = new CS.Puerts.UnitTest.ArrayBufferClass();
                let ab = obj.AB;
                let arr = new Uint8Array(ab,1);
                obj.Sum(arr.buffer);
            ");

            jsEnv.Dispose();

            Assert.AreEqual(6, ret);
        }
Exemplo n.º 12
0
        public void Test6()
        {
            var jsEnv = new JsEnv(new TxtLoader());

            ArrayBufferClass ret = jsEnv.Eval <ArrayBufferClass>(@"
                const CS = require('csharp');
                let obj = new CS.Puerts.UnitTest.ArrayBufferClass();
                let arr = new Uint8Array(obj.AB);
                arr[1] = 100;
                obj;
            ");

            jsEnv.Dispose();

            Assert.AreEqual(2, ret.AB.Bytes[1]);
        }
Exemplo n.º 13
0
 public void ParamIntArrayTest()
 {
     var jsEnv = new JsEnv(new TxtLoader());
     int res = jsEnv.Eval<int>(@"
         const CS = require('csharp');
         const PUERTS = require('puerts');
         let obj = new CS.Puerts.UnitTest.ISubA();
         let arrayInt = CS.System.Array.CreateInstance(PUERTS.$typeof(CS.System.Int32), 3);
         arrayInt.set_Item(0, 111);
         arrayInt.set_Item(1, 222);
         arrayInt.set_Item(2, 333);
         let res = obj.TestArrInt(arrayInt);
         res;
     ");
     jsEnv.Dispose();
     Assert.AreEqual(res, 666);
 }
Exemplo n.º 14
0
 public void TryCatchFinallyTest()
 {
     var jsEnv = new JsEnv(new TxtLoader());
     string res = jsEnv.Eval<string>(@"
         const CS = require('csharp');
         const PUERTS = require('puerts');
         let obj = new CS.Puerts.UnitTest.DerivedClass();
         let t = PUERTS.$ref(false);
         let c = PUERTS.$ref(false);
         let f = PUERTS.$ref(false);
         let e = PUERTS.$ref(false);
         let res = obj.TryCatchFinally(true, t, c, f, e);
         res;
     ");
     jsEnv.Dispose();
     Assert.AreEqual(res, "cfe");
 }
Exemplo n.º 15
0
 public void Dispose()
 {
     JsOnDispose?.Invoke();
     if (jsEnv != null)
     {
         try
         {
             jsEnv.Dispose();
             jsEnv = null;
         }
         catch (Exception ex)
         {
             string msg = string.Format("js exception : {0}\n {1}", ex.Message, ex.StackTrace);
             Debug.Log(msg);
         }
     }
 }
Exemplo n.º 16
0
 public void EventTest()
 {
     var jsEnv = new JsEnv(new TxtLoader());
     var res = jsEnv.Eval<string>(@"
         const CS = require('csharp');
         const PUERTS = require('puerts');
         let obj = new CS.Puerts.UnitTest.EventTest();
         let dele = new CS.Puerts.UnitTest.MyCallBack((str) => { return str; });
         obj.myCallBack = CS.System.Delegate.Combine(obj.myCallBack, dele);
         obj.add_myEvent(dele);
         CS.Puerts.UnitTest.EventTest.add_myStaticEvent(dele);
         let res = obj.Trigger();
         res;
     ");
     jsEnv.Dispose();
     Assert.AreEqual(res, "start  delegate  event  static-event  end");
 }
Exemplo n.º 17
0
 public void InterfaceTest()
 {
     var jsEnv = new JsEnv(new TxtLoader());
     string ret = jsEnv.Eval<string>(@"
         const CS = require('csharp');
         const PUERTS = require('puerts');
         let iSubObj = new CS.Puerts.UnitTest.ISubA();
         let iSubObj1 = PUERTS.$ref(new CS.Puerts.UnitTest.ISubA());
         let iSubObj2 = PUERTS.$ref(new CS.Puerts.UnitTest.ISubA());
         let deriveObj = new CS.Puerts.UnitTest.DerivedClass();
         deriveObj.OutRefFunc(iSubObj,iSubObj1,iSubObj2);
         let res = iSubObj.TestDerivedObj(deriveObj,3,'gyx') + iSubObj.TestArr(iSubObj.a8) + iSubObj.running + PUERTS.$unref(iSubObj1).cmpTarget;
         res;
     ");
     jsEnv.Dispose();
     Assert.AreEqual(ret, "gyx30 10789true100");
 }
Exemplo n.º 18
0
        public void ESModuleImportCSharpNamespace()
        {
            var loader = new TxtLoader();

            loader.AddMockFileContent("whatever.mjs", @"
                import csharp from 'csharp';
                const func = function() { return csharp.System.String.Join(' ', 'hello', 'world') }
                export { func };
            ");
            var jsEnv = new JsEnv(loader);
            var ns    = jsEnv.ExecuteModule <JSObject>("whatever.mjs");

            Assert.True(ns != null);
            Assert.True(ns.GetType() == typeof(JSObject));

            jsEnv.Dispose();
        }
Exemplo n.º 19
0
        public void Test5()
        {
            var jsEnv = new JsEnv(new TxtLoader());

            int ret = jsEnv.Eval <int>(@"
                const CS = require('csharp');
                let obj = new CS.Puerts.UnitTest.ArrayBufferClass();
                let arr = new Uint16Array([1,2,3]);
                let ab = obj.GetMe(arr);
                let arr2 = new Uint8Array(ab);
                arr2[1]
            ");

            jsEnv.Dispose();

            Assert.AreEqual(0, ret);
        }
Exemplo n.º 20
0
        public void ESModuleImportCSharp()
        {
            var loader = new TxtLoader();

            loader.AddMockFileContent("whatever.mjs", @"import csharp from 'csharp'; csharp.System.Console.WriteLine('ESModuleImportCSharp')");
            var jsEnv = new JsEnv(loader);

            try
            {
                jsEnv.ExecuteModule("whatever.mjs");
            }
            catch (Exception e)
            {
                Assert.True(false);
            }
            jsEnv.Dispose();
        }
Exemplo n.º 21
0
 public void ListRangeTest()
 {
     Assert.Catch(() => {
         var jsEnv = new JsEnv(new TxtLoader());
         jsEnv.Eval(@"
             const CS = require('csharp');
             const PUERTS = require('puerts');
             let obj = new CS.Puerts.UnitTest.DerivedClass();
             let List = PUERTS.$generic(CS.System.Collections.Generic.List$1, CS.System.Int32);
             let ls = new List();
             ls.Add(1);
             ls.Add(2);
             let res = obj.testListRange(ls,2);"
                    );
         jsEnv.Dispose();
     });
 }
Exemplo n.º 22
0
 public void ListGenericTest()
 {
     var jsEnv = new JsEnv(new TxtLoader());
     var res = jsEnv.Eval<int>(@"
         const CS = require('csharp');
         const PUERTS = require('puerts');
         let obj = new CS.Puerts.UnitTest.DerivedClass();
         let List = PUERTS.$generic(CS.System.Collections.Generic.List$1,CS.System.Int32);
         let ls = new List();
         ls.Add(1);
         ls.Add(2);
         ls.Add(3);
         let res = obj.TestList(ls);
         res;
     ");
     jsEnv.Dispose();
     Assert.AreEqual(res, 6);
 }
Exemplo n.º 23
0
    public override void Dispose()
    {
        base.Dispose();
        JsOnDispose?.Invoke();

        if (jsEnv != null)
        {
            try
            {
                jsEnv.Dispose();
                jsEnv = null;
            }catch (Exception ex)
            {
                string msg = string.Format("js exception : {0}\n {1}", ex.Message, ex.StackTrace);
                Logger.LogError(msg, null);
            }
        }
    }
Exemplo n.º 24
0
        public void TimerTest4()
        {
            var jsEnv = new JsEnv(new TxtLoader());

            jsEnv.Eval(@"
                const CS = require('csharp');
                let obj = CS.Puerts.UnitTest.Timer;
                let i = 0;
                let id = setInterval(()=>{obj.TimerTest4Num = ++i;},500);
                setTimeout(()=>{clearInterval(id);},200);
            ");
            for (int i = 0; i < 100; i++)
            {
                Assert.AreEqual(0, TimerTest4Num);
                jsEnv.Tick();
            }
            jsEnv.Dispose();
        }
Exemplo n.º 25
0
 public void ErrorParamStringArrayTest()
 {
     var jsEnv = new JsEnv(new TxtLoader());
     int res = jsEnv.Eval<int>(@"
         const CS = require('csharp');
         const PUERTS = require('puerts');
         let obj = new CS.Puerts.UnitTest.ISubA();
         let arrayString = CS.System.Array.CreateInstance(PUERTS.$typeof(CS.System.String), 3);
         arrayString.set_Item(0, '111');
         arrayString.set_Item(1, '222');
         arrayString.set_Item(2, '333');
         let res;
         try {res = obj.TestArrInt(arrayString); } catch(e){res = -1;}
         res;
     ");
     jsEnv.Dispose();
     Assert.AreEqual(res, -1);
 }
Exemplo n.º 26
0
 public void UnhandledRejectionCancel()
 {
     var jsEnv = new JsEnv(new TxtLoader());
     jsEnv.Eval(@"
         const CS = require('csharp');
         const puerts = require('puerts');
         global.catched = false;
         puerts.on('unhandledRejection', function(reason) {
             global.catched = true;
         });
         new Promise((resolve, reject)=>{
             throw new Error('unhandled rejection');
         }).catch(error => {});
     ");
     var res = jsEnv.Eval<bool>("global.catched");
     jsEnv.Dispose();
     Assert.False(res);
 }
Exemplo n.º 27
0
 public void OperatorGreaterThanOrEqualTest()
 {
     var jsEnv = new JsEnv(new TxtLoader());
     var res = jsEnv.Eval<string>(@"
         const CS = require('csharp');
         let obj1 = new CS.Puerts.UnitTest.BaseClass();
         let obj2 = new CS.Puerts.UnitTest.BaseClass();
         obj1.baseIntField = 11;
         obj2.baseIntField = 22;
         let flag = CS.Puerts.UnitTest.BaseClass.op_GreaterThanOrEqual(obj1, obj2);
         let res = flag + '-';
         flag = CS.Puerts.UnitTest.BaseClass.op_LessThanOrEqual(obj1, obj2);
         res = res + flag;
         res;
     ");
     jsEnv.Dispose();
     Assert.AreEqual(res, "false-true");
 }
Exemplo n.º 28
0
        public void SetIntervalTest()
        {
            SetIntervalTestNum = 0;
            var jsEnv = new JsEnv(new TxtLoader());

            jsEnv.Eval(@"
                const CS = require('csharp');
                let obj = CS.Puerts.UnitTest.Timer;
                let i = 0;
                setInterval(()=>{obj.SetIntervalTestNum = ++i;},1000);
            ");
            for (int i = 0; i < 100; i++)
            {
                Assert.AreEqual(i / 10, SetIntervalTestNum);
                jsEnv.Tick();
            }

            jsEnv.Dispose();
        }
Exemplo n.º 29
0
 void Dispose()
 {
     if (JsEnv != null)
     {
         //Dispose
         JsEnv.Dispose();
         JsEnv = null;
         //GC
         System.GC.Collect();
         System.GC.WaitForPendingFinalizers();
     }
     if (Loader != null)
     {
         Loader.Dispose();
         Loader = null;
     }
     //GC
     System.GC.Collect();
     System.GC.WaitForPendingFinalizers();
 }
Exemplo n.º 30
0
        public void DelegateGC()
        {
            var jsEnv = new JsEnv(new TxtLoader());

            jsEnv.Eval(@"
                const CS = require('csharp');
                let obj = new CS.Puerts.UnitTest.BaseClass();
                obj.ActionParam(Math.floor);
                ");
            System.GC.Collect();
            System.GC.WaitForPendingFinalizers();

            jsEnv.Eval(@"
                obj.ActionParam(Math.floor);
                ");
            System.GC.Collect();
            System.GC.WaitForPendingFinalizers();
            jsEnv.Tick();
            jsEnv.Dispose();
        }