Add binding expressions tests.

This commit is contained in:
Vasil Chimev
2015-07-15 17:04:51 +03:00
parent f328638b7c
commit 1fa042189b
19 changed files with 272 additions and 0 deletions

View File

@ -220,8 +220,33 @@
<TypeScriptCompile Include="apps\tests\ui\bindingContext_testPage.ts">
<DependentUpon>bindingContext_testPage.xml</DependentUpon>
</TypeScriptCompile>
<TypeScriptCompile Include="apps\tests\ui\test-pages\bindingExpressions_logicalComparisonOperators_testPage.ts">
<DependentUpon>bindingExpressions_logicalComparisonOperators_testPage.xml</DependentUpon>
</TypeScriptCompile>
<TypeScriptCompile Include="apps\tests\ui\test-pages\bindingExpressions_comparisonOperators_testPage.ts">
<DependentUpon>bindingExpressions_comparisonOperators_testPage.xml</DependentUpon>
</TypeScriptCompile>
<TypeScriptCompile Include="apps\tests\ui\test-pages\bindingExpressions_binaryOperators_testPage.ts">
<DependentUpon>bindingExpressions_binaryOperators_testPage.xml</DependentUpon>
</TypeScriptCompile>
<TypeScriptCompile Include="apps\tests\ui\test-pages\bindingExpressions_ternaryOperator_testPage.ts">
<DependentUpon>bindingExpressions_ternaryOperator_testPage.xml</DependentUpon>
</TypeScriptCompile>
<TypeScriptCompile Include="apps\tests\ui\test-pages\bindingExpressions_groupingParenthesis_testPage.ts">
<DependentUpon>bindingExpressions_groupingParenthesis_testPage.xml</DependentUpon>
</TypeScriptCompile>
<TypeScriptCompile Include="apps\tests\ui\test-pages\bindingExpressions_unaryOperators_testPage.ts">
<DependentUpon>bindingExpressions_unaryOperators_testPage.xml</DependentUpon>
</TypeScriptCompile>
<TypeScriptCompile Include="apps\tests\ui\test-pages\bindingExpressions_logicalOperators_testPage.ts">
<DependentUpon>bindingExpressions_logicalOperators_testPage.xml</DependentUpon>
</TypeScriptCompile>
<TypeScriptCompile Include="apps\tests\ui\test-pages\bindingExpressions_arrayAccess_testPage.ts">
<DependentUpon>bindingExpressions_arrayAccess_testPage.xml</DependentUpon>
</TypeScriptCompile>
<TypeScriptCompile Include="apps\tests\ui\bindingContext_testPage1.ts" />
<TypeScriptCompile Include="apps\tests\ui\bindingContext_testPage2.ts" />
<TypeScriptCompile Include="apps\tests\ui\binding-expressions-tests.ts" />
<TypeScriptCompile Include="apps\tests\ui\repeater\repeater-tests.ts" />
<TypeScriptCompile Include="apps\tests\ui\time-picker\time-picker-tests-native.android.ts">
<DependentUpon>time-picker-tests-native.d.ts</DependentUpon>
@ -792,6 +817,14 @@
<Content Include="apps\tests\pages\page18.xml" />
<Content Include="apps\tests\pages\test2.png" />
<Content Include="apps\tests\ui\bindingContext_testPage.xml" />
<Content Include="apps\tests\ui\test-pages\bindingExpressions_logicalComparisonOperators_testPage.xml" />
<Content Include="apps\tests\ui\test-pages\bindingExpressions_comparisonOperators_testPage.xml" />
<Content Include="apps\tests\ui\test-pages\bindingExpressions_binaryOperators_testPage.xml" />
<Content Include="apps\tests\ui\test-pages\bindingExpressions_ternaryOperator_testPage.xml" />
<Content Include="apps\tests\ui\test-pages\bindingExpressions_groupingParenthesis_testPage.xml" />
<Content Include="apps\tests\ui\test-pages\bindingExpressions_unaryOperators_testPage.xml" />
<Content Include="apps\tests\ui\test-pages\bindingExpressions_logicalOperators_testPage.xml" />
<Content Include="apps\tests\ui\test-pages\bindingExpressions_arrayAccess_testPage.xml" />
<Content Include="apps\tests\ui\bindingContext_testPage1.xml" />
<Content Include="apps\tests\ui\bindingContext_testPage2.xml" />
<Content Include="apps\tests\ui\label\label-tests-wrong.css" />

View File

@ -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");

View File

@ -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 = <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 = <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);
}

View File

@ -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 = <pages.Page>args.object;
page.bindingContext = { strArray: strArr, numArray: numArr };
}

View File

@ -0,0 +1,6 @@
<Page loaded="pageLoaded">
<StackLayout>
<TextField id="textField1" text="{{ strArray[1] }}" />
<TextField id="textField2" text="{{ numArray[2] }}" />
</StackLayout>
</Page>

View File

@ -0,0 +1,6 @@
import pages = require("ui/page");
export function pageLoaded(args) {
var page = <pages.Page>args.object;
page.bindingContext = { var0: 0, var1: 1 };
}

View File

@ -0,0 +1,11 @@
<Page loaded="pageLoaded">
<StackLayout>
<TextField id="textField1" text="{{ var0 + var1 }}" />
<TextField id="textField2" text="{{ var0 - var1 }}" />
<TextField id="textField3" text="{{ var0 * var1 }}" />
<TextField id="textField4" text="{{ var0 / var1 }}" />
<TextField id="textField5" text="{{ var1 / var0 }}" />
<TextField id="textField6" text="{{ var0 % var1 }}" />
<TextField id="textField7" text="{{ var1 % var0 }}" />
</StackLayout>
</Page>

View File

@ -0,0 +1,6 @@
import pages = require("ui/page");
export function pageLoaded(args) {
var page = <pages.Page>args.object;
page.bindingContext = { var0: 0, var1: 1};
}

View File

@ -0,0 +1,12 @@
<Page loaded="pageLoaded">
<StackLayout>
<TextField id="textField1" text="{{ var0 < var1 }}" />
<!--<TextField id="textField2" text="{{ var0 > var1 }}" />-->
<TextField id="textField3" text="{{ var0 <= var1 }}" />
<!--<TextField id="textField4" text="{{ var0 >= var1 }}" />-->
<TextField id="textField5" text="{{ var0 == var1 }}" />
<TextField id="textField6" text="{{ var0 != var1 }}" />
<TextField id="textField7" text="{{ var0 === var1 }}" />
<TextField id="textField8" text="{{ var0 !== var1 }}" />
</StackLayout>
</Page>

View File

@ -0,0 +1,6 @@
import pages = require("ui/page");
export function pageLoaded(args) {
var page = <pages.Page>args.object;
page.bindingContext = { var1: 1, var2: 2, var3: 3, var4: 4 };
}

View File

@ -0,0 +1,6 @@
<Page loaded="pageLoaded">
<StackLayout>
<TextField id="textField1" text="{{ (var1 + var2) * ( var3 + var4) }}" />
<TextField id="textField2" text="{{ ((var1 + var3) * var4) / var2 }}" />
</StackLayout>
</Page>

View File

@ -0,0 +1,6 @@
import pages = require("ui/page");
export function pageLoaded(args) {
var page = <pages.Page>args.object;
page.bindingContext = { varFalse: false, varTrue: true, varText: "Text" };
}

View File

@ -0,0 +1,7 @@
<Page loaded="pageLoaded">
<StackLayout>
<TextField id="textField1" text="{{ varTrue && varFalse }}" />
<TextField id="textField2" text="{{ varTrue || varFalse }}" />
<TextField id="textField3" text="{{ varTrue && varFalse || varText }}" />
</StackLayout>
</Page>

View File

@ -0,0 +1,6 @@
import pages = require("ui/page");
export function pageLoaded(args) {
var page = <pages.Page>args.object;
page.bindingContext = { varFalse: false, varTrue: true, varText: "Text" };
}

View File

@ -0,0 +1,7 @@
<Page loaded="pageLoaded">
<StackLayout>
<TextField id="textField1" text="{{ !varFalse }}" />
<TextField id="textField2" text="{{ !varTrue }}" />
<TextField id="textField3" text="{{ !!varText }}" />
</StackLayout>
</Page>

View File

@ -0,0 +1,6 @@
import pages = require("ui/page");
export function pageLoaded(args) {
var page = <pages.Page>args.object;
page.bindingContext = { author: "Pratchett" };
}

View File

@ -0,0 +1,5 @@
<Page loaded="pageLoaded">
<StackLayout>
<TextField id="textField1" text="{{ author ? 'by ' + author : '[no author]' }}" />
</StackLayout>
</Page>

View File

@ -0,0 +1,6 @@
import pages = require("ui/page");
export function pageLoaded(args) {
var page = <pages.Page>args.object;
page.bindingContext = { varStr: "5", varNum: 3, varTrue: true, varText: "Text"};
}

View File

@ -0,0 +1,12 @@
<Page loaded="pageLoaded">
<StackLayout>
<TextField id="textField1" text="{{ +varStr }}" />
<TextField id="textField2" text="{{ -varStr }}" />
<TextField id="textField3" text="{{ +varNum }}" />
<TextField id="textField4" text="{{ -varNum }}" />
<TextField id="textField5" text="{{ +varTrue }}" />
<TextField id="textField6" text="{{ -varTrue }}" />
<TextField id="textField7" text="{{ +varText }}" />
<TextField id="textField8" text="{{ -varText }}" />
</StackLayout>
</Page>