diff --git a/CrossPlatformModules.csproj b/CrossPlatformModules.csproj index eee46e931..7ac220658 100644 --- a/CrossPlatformModules.csproj +++ b/CrossPlatformModules.csproj @@ -220,8 +220,33 @@ bindingContext_testPage.xml + + bindingExpressions_logicalComparisonOperators_testPage.xml + + + bindingExpressions_comparisonOperators_testPage.xml + + + bindingExpressions_binaryOperators_testPage.xml + + + bindingExpressions_ternaryOperator_testPage.xml + + + bindingExpressions_groupingParenthesis_testPage.xml + + + bindingExpressions_unaryOperators_testPage.xml + + + bindingExpressions_logicalOperators_testPage.xml + + + bindingExpressions_arrayAccess_testPage.xml + + time-picker-tests-native.d.ts @@ -792,6 +817,14 @@ + + + + + + + + diff --git a/apps/tests/testRunner.ts b/apps/tests/testRunner.ts index f9facf84a..59680937e 100644 --- a/apps/tests/testRunner.ts +++ b/apps/tests/testRunner.ts @@ -47,6 +47,7 @@ allTests["VIRTUAL-ARRAY"] = require("./virtual-array-tests"); allTests["OBSERVABLE"] = require("./ui/observable-tests"); allTests["DEPENDENCY-OBSERVABLE"] = require("./ui/dependency-observable-tests"); allTests["BINDABLE"] = require("./ui/bindable-tests"); +allTests["BINDING-EXPRESSIONS"] = require("./ui/binding-expressions-tests"); allTests["XML-PARSER"] = require("./xml-parser-tests/xml-parser-tests"); allTests["VIEW"] = require("./ui/view/view-tests"); allTests["STYLE"] = require("./ui/style/style-tests"); diff --git a/apps/tests/ui/binding-expressions-tests.ts b/apps/tests/ui/binding-expressions-tests.ts new file mode 100644 index 000000000..62f30d037 --- /dev/null +++ b/apps/tests/ui/binding-expressions-tests.ts @@ -0,0 +1,122 @@ +import frameModule = require("ui/frame"); +import textFieldModule = require("ui/text-field"); +import fs = require("file-system"); +import helper = require("../ui/helper"); + +export var test_BindingExpressions_ArrayAccess = function () { + navigateToPage("bindingExpressions_arrayAccess_testPage"); + try { + assertElementString("textField1", "bindings"); + assertElementString("textField2", "1"); + } finally { + helper.goBack(); + } +} + +export var test_BindingExpressions_LogicalOperators = function () { + navigateToPage("bindingExpressions_logicalOperators_testPage"); + try { + assertElementString("textField1", "true"); + assertElementString("textField2", "false"); + assertElementString("textField3", "true"); + } finally { + helper.goBack(); + } +} + +export var test_BindingExpressions_UnaryOperators = function () { + navigateToPage("bindingExpressions_unaryOperators_testPage"); + try { + assertElementString("textField1", "5"); + assertElementString("textField2", "-5"); + assertElementString("textField3", "3"); + assertElementString("textField4", "-3"); + assertElementString("textField5", "1"); + assertElementString("textField6", "-1"); + assertElementValueIsNaN("textField7"); + assertElementValueIsNaN("textField8"); + } finally { + helper.goBack(); + } +} + +export var test_BindingExpressions_BinaryOperators = function () { + navigateToPage("bindingExpressions_binaryOperators_testPage"); + try { + assertElementString("textField1", "1"); + assertElementString("textField2", "-1"); + assertElementString("textField3", "0"); + assertElementString("textField4", "0"); + assertElementString("textField5", "Infinity"); + assertElementString("textField6", "0"); + assertElementValueIsNaN("textField7"); + } finally { + helper.goBack(); + } +} + +export var test_BindingExpressions_ComparisonOperators = function () { + navigateToPage("bindingExpressions_comparisonOperators_testPage"); + try { + assertElementString("textField1", "true"); + //assertElementString("textField2", "false"); + assertElementString("textField3", "true"); + //assertElementString("textField4", "false"); + assertElementString("textField5", "false"); + assertElementString("textField6", "true"); + assertElementString("textField7", "false"); + assertElementString("textField8", "true"); + } finally { + helper.goBack(); + } +} + +export var test_BindingExpressions_LogicalComparisonOperators = function () { + navigateToPage("bindingExpressions_logicalComparisonOperators_testPage"); + try { + assertElementString("textField1", "false"); + assertElementString("textField2", "true"); + assertElementString("textField3", "Text"); + } finally { + helper.goBack(); + } +} + +export var test_BindingExpressions_TernaryOperator = function () { + navigateToPage("bindingExpressions_ternaryOperator_testPage"); + try { + assertElementString("textField1", "by Pratchett"); + } finally { + helper.goBack(); + } +} + +export var test_BindingExpressions_GroupingParenthesis = function () { + navigateToPage("bindingExpressions_groupingParenthesis_testPage"); + try { + assertElementString("textField1", "21"); + assertElementString("textField2", "8"); + } finally { + helper.goBack(); + } +} + +export var assertElementString = function (elementId: string, value: any) { + var element: textFieldModule.TextField = (frameModule.topmost().currentPage.getViewById(elementId)); + if (element.text.toString() !== value) { + throw new Error(" Actual: " + element.text.toString() + " Expected: " + value); + } +} + +export var assertElementValueIsNaN = function (elementId: string) { + var element: textFieldModule.TextField = (frameModule.topmost().currentPage.getViewById(elementId)); + var value: any = element.text; + if (isNaN(value) !== true) { + throw new Error(" Actual: " + value + " is not NaN"); + } +} + +export var navigateToPage = function (pageName: string) { + var path = __dirname.substr(fs.knownFolders.currentApp().path.length); + helper.navigateToModule(path + "/test-pages/" + pageName); +} \ No newline at end of file diff --git a/apps/tests/ui/test-pages/bindingExpressions_arrayAccess_testPage.ts b/apps/tests/ui/test-pages/bindingExpressions_arrayAccess_testPage.ts new file mode 100644 index 000000000..7ac8a688b --- /dev/null +++ b/apps/tests/ui/test-pages/bindingExpressions_arrayAccess_testPage.ts @@ -0,0 +1,8 @@ +import pages = require("ui/page"); + +export function pageLoaded(args) { + var strArr: string[] = ["tests", "bindings", "tests"]; + var numArr: number[] = [-1, 0, 1]; + var page = args.object; + page.bindingContext = { strArray: strArr, numArray: numArr }; +} \ No newline at end of file diff --git a/apps/tests/ui/test-pages/bindingExpressions_arrayAccess_testPage.xml b/apps/tests/ui/test-pages/bindingExpressions_arrayAccess_testPage.xml new file mode 100644 index 000000000..e79a23786 --- /dev/null +++ b/apps/tests/ui/test-pages/bindingExpressions_arrayAccess_testPage.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/apps/tests/ui/test-pages/bindingExpressions_binaryOperators_testPage.ts b/apps/tests/ui/test-pages/bindingExpressions_binaryOperators_testPage.ts new file mode 100644 index 000000000..0f5981e6b --- /dev/null +++ b/apps/tests/ui/test-pages/bindingExpressions_binaryOperators_testPage.ts @@ -0,0 +1,6 @@ +import pages = require("ui/page"); + +export function pageLoaded(args) { + var page = args.object; + page.bindingContext = { var0: 0, var1: 1 }; +} \ No newline at end of file diff --git a/apps/tests/ui/test-pages/bindingExpressions_binaryOperators_testPage.xml b/apps/tests/ui/test-pages/bindingExpressions_binaryOperators_testPage.xml new file mode 100644 index 000000000..dddeac4c7 --- /dev/null +++ b/apps/tests/ui/test-pages/bindingExpressions_binaryOperators_testPage.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/apps/tests/ui/test-pages/bindingExpressions_comparisonOperators_testPage.ts b/apps/tests/ui/test-pages/bindingExpressions_comparisonOperators_testPage.ts new file mode 100644 index 000000000..0ab289a84 --- /dev/null +++ b/apps/tests/ui/test-pages/bindingExpressions_comparisonOperators_testPage.ts @@ -0,0 +1,6 @@ +import pages = require("ui/page"); + +export function pageLoaded(args) { + var page = args.object; + page.bindingContext = { var0: 0, var1: 1}; +} \ No newline at end of file diff --git a/apps/tests/ui/test-pages/bindingExpressions_comparisonOperators_testPage.xml b/apps/tests/ui/test-pages/bindingExpressions_comparisonOperators_testPage.xml new file mode 100644 index 000000000..d008e24d7 --- /dev/null +++ b/apps/tests/ui/test-pages/bindingExpressions_comparisonOperators_testPage.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/apps/tests/ui/test-pages/bindingExpressions_groupingParenthesis_testPage.ts b/apps/tests/ui/test-pages/bindingExpressions_groupingParenthesis_testPage.ts new file mode 100644 index 000000000..7a25d8ad6 --- /dev/null +++ b/apps/tests/ui/test-pages/bindingExpressions_groupingParenthesis_testPage.ts @@ -0,0 +1,6 @@ +import pages = require("ui/page"); + +export function pageLoaded(args) { + var page = args.object; + page.bindingContext = { var1: 1, var2: 2, var3: 3, var4: 4 }; +} \ No newline at end of file diff --git a/apps/tests/ui/test-pages/bindingExpressions_groupingParenthesis_testPage.xml b/apps/tests/ui/test-pages/bindingExpressions_groupingParenthesis_testPage.xml new file mode 100644 index 000000000..d130c8fe8 --- /dev/null +++ b/apps/tests/ui/test-pages/bindingExpressions_groupingParenthesis_testPage.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/apps/tests/ui/test-pages/bindingExpressions_logicalComparisonOperators_testPage.ts b/apps/tests/ui/test-pages/bindingExpressions_logicalComparisonOperators_testPage.ts new file mode 100644 index 000000000..66b0245ec --- /dev/null +++ b/apps/tests/ui/test-pages/bindingExpressions_logicalComparisonOperators_testPage.ts @@ -0,0 +1,6 @@ +import pages = require("ui/page"); + +export function pageLoaded(args) { + var page = args.object; + page.bindingContext = { varFalse: false, varTrue: true, varText: "Text" }; +} \ No newline at end of file diff --git a/apps/tests/ui/test-pages/bindingExpressions_logicalComparisonOperators_testPage.xml b/apps/tests/ui/test-pages/bindingExpressions_logicalComparisonOperators_testPage.xml new file mode 100644 index 000000000..b22a68571 --- /dev/null +++ b/apps/tests/ui/test-pages/bindingExpressions_logicalComparisonOperators_testPage.xml @@ -0,0 +1,7 @@ + + + + + + + diff --git a/apps/tests/ui/test-pages/bindingExpressions_logicalOperators_testPage.ts b/apps/tests/ui/test-pages/bindingExpressions_logicalOperators_testPage.ts new file mode 100644 index 000000000..66b0245ec --- /dev/null +++ b/apps/tests/ui/test-pages/bindingExpressions_logicalOperators_testPage.ts @@ -0,0 +1,6 @@ +import pages = require("ui/page"); + +export function pageLoaded(args) { + var page = args.object; + page.bindingContext = { varFalse: false, varTrue: true, varText: "Text" }; +} \ No newline at end of file diff --git a/apps/tests/ui/test-pages/bindingExpressions_logicalOperators_testPage.xml b/apps/tests/ui/test-pages/bindingExpressions_logicalOperators_testPage.xml new file mode 100644 index 000000000..7724d37d9 --- /dev/null +++ b/apps/tests/ui/test-pages/bindingExpressions_logicalOperators_testPage.xml @@ -0,0 +1,7 @@ + + + + + + + diff --git a/apps/tests/ui/test-pages/bindingExpressions_ternaryOperator_testPage.ts b/apps/tests/ui/test-pages/bindingExpressions_ternaryOperator_testPage.ts new file mode 100644 index 000000000..2a34cbe5e --- /dev/null +++ b/apps/tests/ui/test-pages/bindingExpressions_ternaryOperator_testPage.ts @@ -0,0 +1,6 @@ +import pages = require("ui/page"); + +export function pageLoaded(args) { + var page = args.object; + page.bindingContext = { author: "Pratchett" }; +} \ No newline at end of file diff --git a/apps/tests/ui/test-pages/bindingExpressions_ternaryOperator_testPage.xml b/apps/tests/ui/test-pages/bindingExpressions_ternaryOperator_testPage.xml new file mode 100644 index 000000000..df396c344 --- /dev/null +++ b/apps/tests/ui/test-pages/bindingExpressions_ternaryOperator_testPage.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/apps/tests/ui/test-pages/bindingExpressions_unaryOperators_testPage.ts b/apps/tests/ui/test-pages/bindingExpressions_unaryOperators_testPage.ts new file mode 100644 index 000000000..5967032ca --- /dev/null +++ b/apps/tests/ui/test-pages/bindingExpressions_unaryOperators_testPage.ts @@ -0,0 +1,6 @@ +import pages = require("ui/page"); + +export function pageLoaded(args) { + var page = args.object; + page.bindingContext = { varStr: "5", varNum: 3, varTrue: true, varText: "Text"}; +} \ No newline at end of file diff --git a/apps/tests/ui/test-pages/bindingExpressions_unaryOperators_testPage.xml b/apps/tests/ui/test-pages/bindingExpressions_unaryOperators_testPage.xml new file mode 100644 index 000000000..0d9601596 --- /dev/null +++ b/apps/tests/ui/test-pages/bindingExpressions_unaryOperators_testPage.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + +