public void Looks_up_a_n_part_identifier_path_from_the_scope()
        {
            //Assert
            var obj = new JavascriptObject
            {
                {
                    "key", new JavascriptObject
                    {
                        {
                            "key2", new JavascriptObject
                            {
                                {
                                    "key3", new JavascriptObject
                                    {
                                        { "key4", 42 }
                                    }
                                }
                            }
                        }
                    }
                }
            };
            var method = _compiler.Parse <object>("key.key2.key3.key4");

            method(obj, null).Should().Be(42);
        }
Exemple #2
0
        public Form1()
        {
            InitializeComponent();

            CefSharp.CefSharpSettings.LegacyJavascriptBindingEnabled = true;
            //CefSharpSettings.WcfEnabled = true;
            //var obj = new CSObj(System.Threading.SynchronizationContext.Current);

            string url      = "http://127.0.0.1:9090/page/index.html";
            string rootPath = Application.StartupPath.ToString();
            string filePath = rootPath + "\\web\\page\\index.html";

            this.chromiumWebBrowser1.Load(url);
            //ChromiumWebBrowser webview = new ChromiumWebBrowser(url)
            //{
            //    Dock = DockStyle.Fill,
            //};
            //webview.JavascriptObjectRepository.Settings.LegacyBindingEnabled = true;

            JavascriptObjectTest test = new JavascriptObjectTest();

            JavascriptObject javascriptObject = new JavascriptObject();

            chromiumWebBrowser1.JavascriptObjectRepository.Register("googleBrower", test, isAsync: true, options: BindingOptions.DefaultBinder);

            //webview.JavascriptObjectRepository.Register("googleBrower", new CSObj(), false, CefSharp.BindingOptions.DefaultBinder);
            this.Controls.Add(chromiumWebBrowser1);
        }
Exemple #3
0
        public void Can_created_with_dynamic_features()
        {
            //Assert
            var javascriptObject = new JavascriptObject();

            javascriptObject.Should().BeAssignableTo(typeof(DynamicObject));
            javascriptObject.Should().BeAssignableTo(typeof(IDictionary <string, object>));
        }
Exemple #4
0
        public void Returns_undefined_on_non_defined_indexer()
        {
            //Assert
            // ReSharper disable once CollectionNeverUpdated.Local
            var obj = new JavascriptObject();

            obj["nothing"].Should().BeSameAs(JavascriptObject.Undefined);
        }
        public void Handles_undefined_on_2_part_identifier_path()
        {
            //Assert
            var obj    = new JavascriptObject();
            var method = _compiler.Parse <object>("key.key2");

            method(obj, null).Should().BeSameAs(JavascriptObject.Undefined);
        }
        public void Will_parse_this()
        {
            //Assert
            var scope  = new JavascriptObject();
            var method = _compiler.Parse <JavascriptObject>("this");

            method(scope, null).Should().BeSameAs(scope);
        }
Exemple #7
0
        public void Returns_undefined_on_non_defined_dynamic()
        {
            //Assert
            var     obj     = new JavascriptObject();
            dynamic dyn     = obj;
            object  nothing = dyn.nothing;

            nothing.Should().BeSameAs(JavascriptObject.Undefined);
        }
        public void Looks_up_an_property_from_the_scope()
        {
            //Assert
            var method = _compiler.Parse <int>("aKey");
            //Assert
            var     obj = new JavascriptObject();
            dynamic dyn = obj;

            dyn.aKey = 42;
            method(obj, null).Should().Be(42);
        }
Exemple #9
0
        public void Parses_a_computed_numeric_array_access()
        {
            //Assert
            var method = _compiler.Parse <object>("aKey[1]");
            var scope  = new JavascriptObject
            {
                { "aKey", new [] { 1, 2, 3 } }
            };

            method(scope, null).Should().Be(2);
        }
Exemple #10
0
        public void Can_use_concrete_type_on_JavascriptObject()
        {
            var o = new DummyClass(0);
            var r = new JavascriptObject
            {
                { "AProperty", o }
            };
            var method = _compiler.Parse <JavascriptObject, DummyClass, object>("AProperty.SetKey(42)");

            method(r, null).Should().Be(42);
            o.Key.Should().Be(42);
        }
Exemple #11
0
        public void Parses_computed_property_access_on_this()
        {
            //Assert
            var obj = new JavascriptObject
            {
                {
                    "key", 42
                }
            };
            var method = _compiler.Parse <int>("this['key']");

            method(obj, null).Should().Be(42);
        }
Exemple #12
0
        public BattlelogBase(string battlelogURL, string battlefieldName, string battlefieldShortname, string[] executableNames, int originCode, string javascriptPath)
        {
            this.javascriptObject = new JavascriptObject();
            this.javascriptURL    = javascriptPath;

            this.battlelogURL         = battlelogURL;
            this.battlefieldName      = battlefieldName;
            this.battlefieldShortname = battlefieldShortname;
            this.executableNames      = executableNames;
            this.gameId = originCode;

            this.InitListenGame();
        }
        public BattlelogBase(string battlelogURL, string battlefieldName, string battlefieldShortname, string[] executableNames, int originCode, string javascriptPath)
        {
            this.javascriptObject = new JavascriptObject();
            this.javascriptURL = javascriptPath;

            this.battlelogURL = battlelogURL;
            this.battlefieldName = battlefieldName;
            this.battlefieldShortname = battlefieldShortname;
            this.executableNames = executableNames;
            this.gameId = originCode;

            this.InitListenGame();

        }
Exemple #14
0
        public void Can_use_JavascriptObject_on_concrete_type()
        {
            var r = new JavascriptObject
            {
                { "AProperty", 42 }
            };
            var o = new DummyClass(0)
            {
                DynamicProp = r
            };
            var method = _compiler.Parse <DummyClass, DummyClass, object>("DynamicProp.AProperty");

            method(o, null).Should().Be(42);
        }
Exemple #15
0
        public void Properties_should_be_settable_through_dynamic()
        {
            //Assert
            var     javascriptObject = new JavascriptObject();
            dynamic dyn = javascriptObject;

            dyn.a = 1;
            dyn.b = "c";
            javascriptObject.ShouldBeEquivalentTo(new Dictionary <string, object>()
            {
                { "a", 1 },
                { "b", "c" }
            });
        }
Exemple #16
0
        public void Should_act_like_dictionary()
        {
            var javascriptObject = new JavascriptObject
            {
                { "a", 1 },
                { "b", "c" }
            };

            javascriptObject.ShouldBeEquivalentTo(new Dictionary <string, object>()
            {
                { "a", 1 },
                { "b", "c" }
            });
        }
Exemple #17
0
        public void Parses_a_function_call()
        {
            //Assert
            var value = new Func <int>(() => 42);
            var scope = new JavascriptObject
            {
                {
                    "aFunction",
                    value
                }
            };
            var method = _compiler.Parse <int>("aFunction()");

            method(scope, null).Should().Be(42);
        }
Exemple #18
0
        public void Parses_a_function_call_with_a_single_number_argument()
        {
            //Assert
            var value = new Func <double, double>(i => i);
            var scope = new JavascriptObject
            {
                {
                    "aFunction",
                    value
                }
            };
            var method = _compiler.Parse <double>("aFunction(42)");

            method(scope, null).Should().Be(42);
        }
Exemple #19
0
        public void Does_not_use_locals_instead_of_scope_when_no_matching_key()
        {
            //Assert
            var method = _compiler.Parse <int>("aKey");
            var scope  = new JavascriptObject
            {
                { "aKey", 43 }
            };
            var locals = new JavascriptObject
            {
                { "anotherKey", 42 }
            };

            method(scope, locals).Should().Be(43);
        }
Exemple #20
0
        public void Properties_should_be_gettable_through_dynamic()
        {
            //Assert
            var javascriptObject = new JavascriptObject
            {
                { "a", 1 },
                { "b", "c" }
            };
            dynamic dyn = javascriptObject;
            object  a   = dyn.a;
            object  b   = dyn.b;

            a.Should().Be(1);
            b.Should().Be("c");
        }
Exemple #21
0
        public void Parses_a_simple_computed_property_access()
        {
            //Assert
            var obj = new JavascriptObject
            {
                {
                    "key", new JavascriptObject
                    {
                        { "key2", 42 }
                    }
                }
            };
            var method = _compiler.Parse <int>("key['key2']");

            method(obj, null).Should().Be(42);
        }
Exemple #22
0
        public void Can_assign_a_computed_object_property()
        {
            var o = new JavascriptObject
            {
                {
                    "key", "property"
                },
                {
                    "property", 0
                }
            };
            var method = _compiler.Parse <object>("this[this.key] = 42");

            method(o, null).Should().Be(42);
            o["property"].Should().Be(42);
        }
Exemple #23
0
        public void Uses_locals_instead_of_scope_when_the_first_part_matches()
        {
            //Assert
            var method = _compiler.Parse <object>("aKey.anotherKey");
            var scope  = new JavascriptObject
            {
                { "aKey", new JavascriptObject
                  {
                      { "anotherKey", 42 }
                  } }
            };
            var locals = new JavascriptObject
            {
                { "aKey", null }
            };

            method(scope, locals).Should().Be(JavascriptObject.Undefined);
        }
Exemple #24
0
        public void Parses_a_computed_access_with_another_key_as_property()
        {
            //Assert
            var obj = new JavascriptObject
            {
                {
                    "lock", new JavascriptObject
                    {
                        { "key2", 42 }
                    }
                },
                {
                    "key", "key2"
                }
            };
            var method = _compiler.Parse <int>("lock[key]");

            method(obj, null).Should().Be(42);
        }
Exemple #25
0
        public void Parses_a_function_call_with_multiple_arguments()
        {
            var aFunction       = new Func <double, double, double, double>((i, j, k) => i + j + k);
            var anotherFunction = new Func <double>(() => 30);
            var scope           = new JavascriptObject
            {
                {
                    "aFunction",
                    aFunction
                },
                {
                    "anotherFunction",
                    anotherFunction
                },
                {
                    "n",
                    10
                }
            };
            var method = _compiler.Parse <double>("aFunction(2, n, anotherFunction())");

            method(scope, null).Should().Be(42);
        }