Example #1
0
        public void Can_read_properties_from_js_object()
        {
            var     testObject = new JsTestsQml.TestObject();
            dynamic result     = null;

            Mock.Setup(x => x.Method(It.IsAny <INetJsValue>())).Callback(new Action <dynamic>(jsValue =>
            {
                result = jsValue;
            }));
            Mock.Setup(x => x.GetTestObject()).Returns(testObject);

            RunQmlTest(
                "test",
                @"
                    var netObject = test.getTestObject()
                    test.method({
                        test1: 34,
                        test2: 'test3',
                        test3: netObject,
                        test4: {
                            test5: 'test5'
                        }
                    })
                ");

            Mock.Verify(x => x.Method(It.IsAny <INetJsValue>()), Times.Exactly(1));
            Mock.Verify(x => x.GetTestObject(), Times.Exactly(1));
            ((object)result.nonExistant).Should().BeNull();
            ((int)result.test1).Should().Be(34);
            ((string)result.test2).Should().Be("test3");
            ((object)result.test3).Should().BeSameAs(testObject);
            ((string)result.test4.test5).Should().Be("test5");
        }
Example #2
0
        public void Can_get_return_value_from_js_function()
        {
            var testObject = new JsTestsQml.TestObject();
            var results    = new List <object>();

            Mock.Setup(x => x.GetTestObject()).Returns(testObject);
            Mock.Setup(x => x.Method(It.IsAny <INetJsValue>())).Callback(new Action <dynamic>(jsValue =>
            {
                results.Add((object)jsValue());
            }));

            NetTestHelper.RunQml(qmlApplicationEngine,
                                 @"
                    import QtQuick 2.0
                    import tests 1.0
                    JsTestsQml {
                        id: test
                        Component.onCompleted: function() {
                            var jsObject = {
                            }
                            test.method(function() {
                                return 'test'
                            })
                            test.method(function() {
                                return 32
                            })
                            test.method(function() {
                                return jsObject
                            })
                            test.method(function() {
                                return function() {}
                            })
                            var netObject = test.getTestObject()
                            test.method(function() {
                                return netObject
                            })
                        }
                    }
                ");

            Mock.Verify(x => x.Method(It.IsAny <INetJsValue>()), Times.Exactly(5));
            Mock.Verify(x => x.GetTestObject(), Times.Once);
            results.Should().HaveCount(5);
            results[0].Should().Be("test");
            results[1].Should().Be(32);
            results[2].Should().BeAssignableTo <INetJsValue>().And.Subject.As <INetJsValue>().IsCallable.Should().BeFalse();
            results[3].Should().BeAssignableTo <INetJsValue>().And.Subject.As <INetJsValue>().IsCallable.Should().BeTrue();
            results[4].Should().BeSameAs(testObject);
        }