public void NestedObjects_NestedInputObject_Output()
        {
            dynamic jsContext = new DynamicJavascriptContext(new Noesis.Javascript.JavascriptContext());

            jsContext.i = jsContext.Object(
                new {
                a = jsContext.Object(new { LastName = "Torres", Age = 46 }),
                b = jsContext.Object(new Person("Ferry", 47)),
            }
                );
            string script = @"
                var p1 = {
                    Name : i.a.LastName,
                    Age  : i.a.Age
                }
                var p2 = {
                    Name : i.b.LastName,
                    Age  : i.b.Age
                }
            ";

            jsContext.Run(script);
            Assert.AreEqual("Torres", jsContext.p1.Name);
            Assert.AreEqual("Torres", jsContext.p1["Name"]);
            Assert.AreEqual("Torres", jsContext["p1"]["Name"]);

            Assert.AreEqual(46, jsContext.p1.Age);
            Assert.AreEqual(46, jsContext.p1["Age"]);
            Assert.AreEqual(46, jsContext["p1"]["Age"]);

            Assert.AreEqual("Ferry", jsContext.p2.Name);
            Assert.AreEqual("Ferry", jsContext.p2["Name"]);
            Assert.AreEqual("Ferry", jsContext["p2"]["Name"]);

            Assert.AreEqual(47, jsContext.p2.Age);
            Assert.AreEqual(47, jsContext.p2["Age"]);
            Assert.AreEqual(47, jsContext["p2"]["Age"]);
        }
        static void Main(string[] args)
        {
            dynamic jsContext = new DynamicJavascriptContext(new JavascriptContext());

            jsContext.message   = "Hello World !";
            jsContext.number    = 1;
            jsContext.array     = jsContext.Array(1, 2, 3);
            jsContext.instance  = jsContext.Object(new { b = 2 });
            jsContext.instance2 = jsContext.Object(new { a = 1, b = 2 });

            string script = @"
                number           = 123;
                instance['a']    = 1;
                instance['Date'] = new Date();                
                instance2['a']   = 123;
                console.log('Hello log '+instance['Date']);
                console.log('array.length:'+array.length);
                
                array.push(4);
                for(var i=0; i<array.length; i++)
                    console.log(array[i]);
            ";

            jsContext.Run(script);

            Console.WriteLine("number: " + jsContext.number);
            Console.WriteLine("instance: " + jsContext.instance);
            Console.WriteLine("instance.a: " + jsContext.instance.a);
            Console.WriteLine("instance.b: " + jsContext.instance.b);
            Console.WriteLine("instance.Date: " + jsContext.instance.Date);
            Console.WriteLine("instance2.a: " + jsContext.instance2.a);
            Console.WriteLine("array:" + jsContext.array.Length);
            Console.WriteLine("array[3]:" + jsContext.array[3]);

            FunctionCall();
            Console.ReadLine();
        }