diff --git a/apps/tests/TKUnit.ts b/apps/tests/TKUnit.ts
index af2e7752e..4b134e044 100644
--- a/apps/tests/TKUnit.ts
+++ b/apps/tests/TKUnit.ts
@@ -193,7 +193,7 @@ export function assertNotEqual(actual: any, expected: any, message?: string) {
if (types.isUndefined(actual) && types.isUndefined(expected)) {
equals = true;
}
- else if (!types.isUndefined(actual) && !types.isUndefined(expected)) {
+ else if (!types.isNullOrUndefined(actual) && !types.isNullOrUndefined(expected)) {
if (types.isFunction(actual.equals)) {
// Use the equals method
diff --git a/apps/tests/frame-tests.ts b/apps/tests/frame-tests.ts
index cbefa8232..6cce6dfd3 100644
--- a/apps/tests/frame-tests.ts
+++ b/apps/tests/frame-tests.ts
@@ -9,8 +9,6 @@ var topmost = frameModule.topmost();
import labelModule = require("ui/label");
import pagesModule = require("ui/page");
-import TKUnit = require("./TKUnit");
-
export var ignore_test_DummyTestForSnippetOnly0 = function () {
//
// ### Navigating to a Module
@@ -57,9 +55,4 @@ export var ignore_test_DummyTestForSnippetOnly3 = function () {
topmost.goBack();
// ```
//
-}
-
-export function test_currentEntry() {
- var moduleName = frameModule.topmost().currentEntry.moduleName;
- TKUnit.assert(moduleName === "tests/app/mainPage" || moduleName === "app/mainPage", "Expected frameModule.topmost().currentEntry.moduleName to return tests/app/mainPage or app/mainPage but instead returned " + moduleName);
}
\ No newline at end of file
diff --git a/apps/tests/navigation/navigation-tests.ts b/apps/tests/navigation/navigation-tests.ts
index 6ad351ac2..659a3bce2 100644
--- a/apps/tests/navigation/navigation-tests.ts
+++ b/apps/tests/navigation/navigation-tests.ts
@@ -84,6 +84,10 @@ export var test_ClearHistory = function () {
var currentPage: Page;
+ currentPage = topmostFrame().currentPage;
+ topmostFrame().navigate({ create: pageFactory, clearHistory: true });
+ TKUnit.waitUntilReady(() => { return topmostFrame().currentPage !== currentPage; });
+
currentPage = topmostFrame().currentPage;
topmostFrame().navigate({ create: pageFactory });
TKUnit.waitUntilReady(() => { return topmostFrame().currentPage !== currentPage; });
diff --git a/apps/tests/navigation/transition-tests.ts b/apps/tests/navigation/transition-tests.ts
index 2e01bce21..1911249ca 100644
--- a/apps/tests/navigation/transition-tests.ts
+++ b/apps/tests/navigation/transition-tests.ts
@@ -3,7 +3,6 @@ import * as helper from "../ui/helper";
import * as platform from "platform";
import * as trace from "trace";
import {Color} from "color";
-import {GC} from "utils/utils";
import {NavigationEntry, NavigationTransition} from "ui/frame";
import {Page} from "ui/page";
import {AnimationCurve} from "ui/enums"
@@ -13,7 +12,7 @@ function _testTransition(navigationTransition: NavigationTransition) {
trace.write(`Testing ${testId}`, trace.categories.Test);
var navigationEntry: NavigationEntry = {
create: function (): Page {
- var page = new Page();
+ let page = new Page();
page.id = testId;
page.style.backgroundColor = new Color(255, Math.round(Math.random() * 255), Math.round(Math.random() * 255), Math.round(Math.random() * 255));
return page;
@@ -24,9 +23,6 @@ function _testTransition(navigationTransition: NavigationTransition) {
helper.navigateWithEntry(navigationEntry);
TKUnit.wait(0.100);
- helper.goBack();
- TKUnit.wait(0.100);
- GC();
}
// Extremely slow. Run only if needed.
@@ -79,6 +75,4 @@ export var test_Transitions = function () {
var customTransition = new customTransitionModule.CustomTransition();
_testTransition({ instance: customTransition });
}
-
- helper.goBack();
}
diff --git a/apps/tests/testRunner.ts b/apps/tests/testRunner.ts
index 64712dc63..ffdd3ef1a 100644
--- a/apps/tests/testRunner.ts
+++ b/apps/tests/testRunner.ts
@@ -110,6 +110,7 @@ var testsWithLongDelay = {
testLoadInvalidUrl: 10000
}
+var duration;
var running = false;
var testsQueue = new Array();
@@ -127,7 +128,7 @@ function printRunTestStats() {
for (j = 0; j < allTests.length; j++) {
let testName = allTests[j].testName;
- let duration = allTests[j].duration / 1000;
+ let duration = Math.round(allTests[j].duration / 1000);
if (!allTests[j].isPassed) {
failedTestCount++;
@@ -144,7 +145,7 @@ function printRunTestStats() {
}
- let finalMessage = "=== ALL TESTS COMPLETE === \n" + (allTests.length - failedTestCount) + " OK, " + failedTestCount + " failed" + "\n";
+ let finalMessage = `=== ALL TESTS COMPLETE for ${Math.round(TKUnit.time() - duration)} ms === \n${(allTests.length - failedTestCount)} OK, ${failedTestCount} failed\n`;
TKUnit.write(finalMessage, messageType.info);
for (j = 0; j < failedTestInfo.length; j++) {
let failureMessage = failedTestInfo[j];
@@ -210,7 +211,7 @@ export var runAll = function (testSelector?: string) {
var totalSuccess = 0;
var totalFailed: Array = [];
- testsQueue.push(new TestInfo(function () { running = true; }));
+ testsQueue.push(new TestInfo(() => { running = true; duration = TKUnit.time(); }));
for (var name in allTests) {
if (singleModuleName && (singleModuleName !== name.toLowerCase())) {
continue;
diff --git a/apps/tests/ui-test.ts b/apps/tests/ui-test.ts
index 04d8fe876..fa52f0a03 100644
--- a/apps/tests/ui-test.ts
+++ b/apps/tests/ui-test.ts
@@ -54,7 +54,6 @@ export class UITest implements trace.TraceWriter {
this._testPage = null;
this._testView = null;
trace.removeWriter(this);
- navHelper.goBack();
}
public setUp() {
diff --git a/apps/tests/ui/action-bar/action-bar-tests-common.ts b/apps/tests/ui/action-bar/action-bar-tests-common.ts
index 5d61b3a5e..28b695332 100644
--- a/apps/tests/ui/action-bar/action-bar-tests-common.ts
+++ b/apps/tests/ui/action-bar/action-bar-tests-common.ts
@@ -179,12 +179,7 @@ export function test_actionItem_inherit_bindingContext() {
helper.navigate(pageFactory);
- try {
- TKUnit.assertEqual(page.actionBar.actionItems.getItemAt(0).text, "item", "actionItem.text");
- }
- finally {
- helper.goBack();
- }
+ TKUnit.assertEqual(page.actionBar.actionItems.getItemAt(0).text, "item", "actionItem.text");
}
export function test_actionBar_inherit_bindingContext_inXML() {
@@ -325,12 +320,7 @@ export function test_ActionBarItemBindingToEvent() {
}
helper.navigate(function () { return p; });
- try {
- testAction([p]);
- }
- finally {
- helper.goBack();
- }
+ testAction([p]);
}
export function test_Setting_ActionItems_doesnt_thrown() {
@@ -358,12 +348,7 @@ export function test_Setting_ActionItems_doesnt_thrown() {
gotException = true;
}
- try {
- TKUnit.assert(!gotException, "Expected: false, Actual: " + gotException);
- }
- finally {
- helper.goBack();
- }
+ TKUnit.assert(!gotException, "Expected: false, Actual: " + gotException);
}
export function test_Setting_ActionItemsWithNumberAsText_doesnt_thrown() {
@@ -379,12 +364,7 @@ export function test_Setting_ActionItemsWithNumberAsText_doesnt_thrown() {
gotException = true;
}
- try {
- TKUnit.assert(!gotException, "Expected: false, Actual: " + gotException);
- }
- finally {
- helper.goBack();
- }
+ TKUnit.assert(!gotException, "Expected: false, Actual: " + gotException);
}
export function test_CanDefineEverythingAsContentBetweenTheTwoTags() {
@@ -432,13 +412,8 @@ export function test_LoadedEventsOrder() {
helper.navigate(pageFactory);
- try {
- TKUnit.arrayAssert(loadedEvents, new Array("content", "action-bar", "page"));
- }
- finally {
- helper.goBack();
- }
-};
+ TKUnit.arrayAssert(loadedEvents, new Array("content", "action-bar", "page"));
+}
export function test_LoadedEventsOrder_WithoutPageContent() {
var loadedEvents = new Array();
@@ -457,13 +432,8 @@ export function test_LoadedEventsOrder_WithoutPageContent() {
helper.navigate(pageFactory);
- try {
- TKUnit.arrayAssert(loadedEvents, new Array("action-bar", "page"));
- }
- finally {
- helper.goBack();
- }
-};
+ TKUnit.arrayAssert(loadedEvents, new Array("action-bar", "page"));
+}
export function test_setId() {
var pageFactory = function (): PageModule.Page {
@@ -479,10 +449,7 @@ export function test_setId() {
catch (e) {
TKUnit.assert(false, "Failed to apply property 'id' to actionBar before its nativeView is ready.");
}
- finally {
- helper.goBack();
- }
-};
+}
export function createPageAndNavigate() {
var page: PageModule.Page;
diff --git a/apps/tests/ui/action-bar/action-bar-tests.android.ts b/apps/tests/ui/action-bar/action-bar-tests.android.ts
index 19fbea9fd..d498a4127 100644
--- a/apps/tests/ui/action-bar/action-bar-tests.android.ts
+++ b/apps/tests/ui/action-bar/action-bar-tests.android.ts
@@ -1,5 +1,4 @@
import actionTestsCommon = require("./action-bar-tests-common");
-import helper = require("../helper");
import TKUnit = require("../../TKUnit");
import { ActionItem } from "ui/action-bar";
import { Visibility } from "ui/enums";
@@ -10,34 +9,24 @@ export function test_actionItem_visibility() {
var actionItem = new ActionItem();
actionItem.text = "Test";
var page = actionTestsCommon.createPageAndNavigate();
- try {
- page.actionBar.actionItems.addItem(actionItem);
- var toolbar = (page.actionBar)._toolbar;
- var menu = toolbar.getMenu();
+ page.actionBar.actionItems.addItem(actionItem);
+ var toolbar = (page.actionBar)._toolbar;
+ var menu = toolbar.getMenu();
- TKUnit.assertTrue(menu.hasVisibleItems(), "Visibility does not work");
- actionItem.visibility = Visibility.collapse;
- TKUnit.assertFalse(menu.hasVisibleItems(), "Visibility does not work");
- }
- finally {
- helper.goBack();
- }
+ TKUnit.assertTrue(menu.hasVisibleItems(), "Visibility does not work");
+ actionItem.visibility = Visibility.collapse;
+ TKUnit.assertFalse(menu.hasVisibleItems(), "Visibility does not work");
}
export function test_navigationButton_visibility() {
var actionItem = new ActionItem();
actionItem.icon = "~/small-image.png";
var page = actionTestsCommon.createPageAndNavigate();
- try {
- page.actionBar.navigationButton = actionItem;
+ page.actionBar.navigationButton = actionItem;
- var toolbar = (page.actionBar)._toolbar;
+ var toolbar = (page.actionBar)._toolbar;
- TKUnit.assertNotNull(toolbar.getNavigationIcon(), "Visibility does not work");
- actionItem.visibility = Visibility.collapse;
- TKUnit.assertNull(toolbar.getNavigationIcon(), "Visibility does not work");
- }
- finally {
- helper.goBack();
- }
-}
+ TKUnit.assertNotNull(toolbar.getNavigationIcon(), "Visibility does not work");
+ actionItem.visibility = Visibility.collapse;
+ TKUnit.assertNull(toolbar.getNavigationIcon(), "Visibility does not work");
+}
\ No newline at end of file
diff --git a/apps/tests/ui/action-bar/action-bar-tests.ios.ts b/apps/tests/ui/action-bar/action-bar-tests.ios.ts
index 20ca9f473..badc27c16 100644
--- a/apps/tests/ui/action-bar/action-bar-tests.ios.ts
+++ b/apps/tests/ui/action-bar/action-bar-tests.ios.ts
@@ -40,7 +40,6 @@ export function test_NavBar_isVisible_when_MenuItems_areSet() {
}
finally {
page.off(view.View.loadedEvent, handler);
- helper.goBack();
}
}
@@ -79,7 +78,6 @@ export function test_NavBarItemsAreClearedFromNativeWhenClearedFromNativeScript(
}
finally {
page.off(view.View.loadedEvent, handler);
- helper.goBack();
}
}
@@ -89,50 +87,41 @@ export function test_actionItem_visibility() {
actionItem.ios.position = "left";
var page = actionTestsCommon.createPageAndNavigate();
- try {
- page.actionBar.actionItems.addItem(actionItem);
+ page.actionBar.actionItems.addItem(actionItem);
- var viewController = (page.ios);
- var navigationItem: UINavigationItem = viewController.navigationItem;
+ var viewController = (page.ios);
+ var navigationItem: UINavigationItem = viewController.navigationItem;
- var leftBarButtonItemsCount = navigationItem.leftBarButtonItems ? navigationItem.leftBarButtonItems.count : 0;
- TKUnit.assertEqual(leftBarButtonItemsCount, 1, "Visibility does not work");
- actionItem.visibility = Visibility.collapse;
-
- TKUnit.waitUntilReady(() => {
- leftBarButtonItemsCount = navigationItem.leftBarButtonItems ? navigationItem.leftBarButtonItems.count : 0;
-
- return leftBarButtonItemsCount === 0;
- });
+ var leftBarButtonItemsCount = navigationItem.leftBarButtonItems ? navigationItem.leftBarButtonItems.count : 0;
+ TKUnit.assertEqual(leftBarButtonItemsCount, 1, "Visibility does not work");
+ actionItem.visibility = Visibility.collapse;
+ TKUnit.waitUntilReady(() => {
leftBarButtonItemsCount = navigationItem.leftBarButtonItems ? navigationItem.leftBarButtonItems.count : 0;
- TKUnit.assertEqual(leftBarButtonItemsCount, 0, "Visibility does not work");
- }
- finally {
- helper.goBack();
- }
+
+ return leftBarButtonItemsCount === 0;
+ });
+
+ leftBarButtonItemsCount = navigationItem.leftBarButtonItems ? navigationItem.leftBarButtonItems.count : 0;
+ TKUnit.assertEqual(leftBarButtonItemsCount, 0, "Visibility does not work");
}
export function test_navigationButton_visibility() {
var actionItem = new actionBar.ActionItem();
actionItem.text = "Test";
var page = actionTestsCommon.createPageAndNavigate();
- try {
- page.actionBar.navigationButton = actionItem;
- var viewController = (page.ios);
- var navigationItem: UINavigationItem = viewController.navigationItem;
+ page.actionBar.navigationButton = actionItem;
- TKUnit.assertFalse(navigationItem.hidesBackButton, "Visibility does not work");
- actionItem.visibility = Visibility.collapse;
+ var viewController = (page.ios);
+ var navigationItem: UINavigationItem = viewController.navigationItem;
- TKUnit.waitUntilReady(() => {
- return navigationItem.hidesBackButton;
- });
+ TKUnit.assertFalse(navigationItem.hidesBackButton, "Visibility does not work");
+ actionItem.visibility = Visibility.collapse;
- TKUnit.assertTrue(navigationItem.hidesBackButton, "Visibility does not work");
- }
- finally {
- helper.goBack();
- }
-}
+ TKUnit.waitUntilReady(() => {
+ return navigationItem.hidesBackButton;
+ });
+
+ TKUnit.assertTrue(navigationItem.hidesBackButton, "Visibility does not work");
+}
\ No newline at end of file
diff --git a/apps/tests/ui/animation/animation-tests.ts b/apps/tests/ui/animation/animation-tests.ts
index a27a35c2c..47e5df0e4 100644
--- a/apps/tests/ui/animation/animation-tests.ts
+++ b/apps/tests/ui/animation/animation-tests.ts
@@ -49,14 +49,12 @@ export var test_AnimatingProperties = function(done) {
////console.log("Animation finished.");
//
assertIOSNativeTransformIsCorrect(label);
- helper.goBack();
done();
//
})
.catch((e) => {
console.log(e.message);
//
- helper.goBack();
done(e);
//
});
@@ -94,7 +92,6 @@ export var test_CancellingAnimation = function(done) {
.catch((e) => {
////console.log("Animation cancelled");
//
- helper.goBack();
if (!e) {
done(new Error("Cancel path did not have proper error"));
} else if (e.toString() === "Error: Animation cancelled.") {
@@ -138,7 +135,6 @@ export var test_CancellingAnimate = function(done) {
.catch((e) => {
////console.log("Animation cancelled");
//
- helper.goBack();
if (!e) {
done(new Error("Cancel path did not have proper error"));
} else if (e.toString() === "Error: Animation cancelled.") {
@@ -183,14 +179,12 @@ export var test_ChainingAnimations = function(done) {
////console.log("Animation finished");
//
assertIOSNativeTransformIsCorrect(label);
- helper.goBack();
done();
//
})
.catch((e) => {
console.log(e.message);
//
- helper.goBack();
done(e);
//
});
@@ -230,14 +224,12 @@ export var test_ReusingAnimations = function(done) {
////console.log("Animation finished");
//
assertIOSNativeTransformIsCorrect(label);
- helper.goBack();
done();
//
})
.catch((e) => {
console.log(e.message);
//
- helper.goBack();
done(e);
//
});
@@ -284,14 +276,12 @@ export var test_AnimatingMultipleViews = function(done) {
assertIOSNativeTransformIsCorrect(label1);
assertIOSNativeTransformIsCorrect(label2);
assertIOSNativeTransformIsCorrect(label3);
- helper.goBack();
done();
//
})
.catch((e) => {
console.log(e.message);
//
- helper.goBack();
done(e);
//
});
@@ -318,11 +308,9 @@ export var test_AnimateOpacity = function(done) {
label.animate({ opacity: 0.75 })
.then(() => {
TKUnit.assertEqual(label.opacity, 0.75, "label.opacity");
- helper.goBack();
done();
})
.catch((e) => {
- helper.goBack();
done(e);
});
}
@@ -419,11 +407,9 @@ export var test_AnimateBackgroundColor = function(done) {
label.animate({ backgroundColor: red })
.then(() => {
TKUnit.assert(label.backgroundColor.equals(red));
- helper.goBack();
done();
})
.catch((e) => {
- helper.goBack();
done(e);
});
}
@@ -450,11 +436,9 @@ export var test_AnimateBackgroundColor_FromString = function(done) {
label.animate({ backgroundColor: expected })
.then(() => {
TKUnit.assert(label.backgroundColor.equals(clr));
- helper.goBack();
done();
})
.catch((e) => {
- helper.goBack();
done(e);
});
}
@@ -480,11 +464,9 @@ export var test_AnimateTranslate = function(done) {
TKUnit.assertEqual(label.translateX, 100, "label.translateX");
TKUnit.assertEqual(label.translateY, 200, "label.translateY");
assertIOSNativeTransformIsCorrect(label);
- helper.goBack();
done();
})
.catch((e) => {
- helper.goBack();
done(e);
});
}
@@ -510,11 +492,9 @@ export var test_AnimateScale = function(done) {
TKUnit.assertEqual(label.scaleX, 2, "label.scaleX");
TKUnit.assertEqual(label.scaleY, 3, "label.scaleY");
assertIOSNativeTransformIsCorrect(label);
- helper.goBack();
done();
})
.catch((e) => {
- helper.goBack();
done(e);
});
}
@@ -539,11 +519,9 @@ export var test_AnimateRotate = function(done) {
.then(() => {
TKUnit.assertEqual(label.rotate, 123, "label.rotate");
assertIOSNativeTransformIsCorrect(label);
- helper.goBack();
done();
})
.catch((e) => {
- helper.goBack();
done(e);
});
}
@@ -576,11 +554,9 @@ export var test_AnimateTranslateScaleAndRotateSimultaneously = function(done) {
TKUnit.assertEqual(label.scaleY, 3, "label.scaleY");
TKUnit.assertEqual(label.rotate, 123, "label.rotate");
assertIOSNativeTransformIsCorrect(label);
- helper.goBack();
done();
})
.catch((e) => {
- helper.goBack();
done(e);
});
}
@@ -623,11 +599,9 @@ export var test_AnimateTranslateScaleAndRotateSequentially = function(done) {
TKUnit.assertEqual(label.scaleY, 3, "label.scaleY");
TKUnit.assertEqual(label.rotate, 123, "label.rotate");
assertIOSNativeTransformIsCorrect(label);
- helper.goBack();
done();
})
.catch((e) => {
- helper.goBack();
done(e);
});
}
@@ -658,12 +632,10 @@ export var test_AnimationsAreAlwaysPlayed = function(done) {
})
.then(() => {
TKUnit.assert(label.opacity === 1, `Label opacity should be 1 after second animation, actual value is ${label.opacity}.`);
- helper.goBack();
done();
})
.catch((e) => {
console.log(e.message);
- helper.goBack();
done(e);
});
}
@@ -689,11 +661,9 @@ export var test_PlayPromiseIsResolvedWhenAnimationFinishes = function(done) {
animation.play()
.then(function onResolved() {
TKUnit.assert(animation.isPlaying === false, "Animation.isPlaying should be false when animation play promise is resolved.");
- helper.goBack();
done();
}, function onRejected(e) {
TKUnit.assert(1 === 2, "Animation play promise should be resolved, not rejected.");
- helper.goBack();
done(e);
});
}
@@ -719,11 +689,9 @@ export var test_PlayPromiseIsRejectedWhenAnimationIsCancelled = function(done) {
animation.play()
.then(function onResolved() {
TKUnit.assert(1 === 2, "Animation play promise should be rejected, not resolved.");
- helper.goBack();
done();
}, function onRejected(e) {
TKUnit.assert(animation.isPlaying === false, "Animation.isPlaying should be false when animation play promise is rejected.");
- helper.goBack();
done();
});
diff --git a/apps/tests/ui/animation/css-animation-tests.ts b/apps/tests/ui/animation/css-animation-tests.ts
index 2b13ac871..6aff374b5 100644
--- a/apps/tests/ui/animation/css-animation-tests.ts
+++ b/apps/tests/ui/animation/css-animation-tests.ts
@@ -247,7 +247,6 @@ exports.test_ExecuteCSSAnimation = function () {
label.className = "l";
TKUnit.waitUntilReady(function () { return new color.Color("green").equals(label.backgroundColor); }, 1);
TKUnit.assert(new color.Color("green").equals(label.backgroundColor));
- helper.goBack();
};
// exports.test_ExecuteFillMode = function () {
// let mainPage;
diff --git a/apps/tests/ui/bindable-tests.ts b/apps/tests/ui/bindable-tests.ts
index f41e1c91e..3af9b5712 100644
--- a/apps/tests/ui/bindable-tests.ts
+++ b/apps/tests/ui/bindable-tests.ts
@@ -185,57 +185,52 @@ export var test_bindingContext_Change_IsReflected_Properly = function () {
helper.do_PageTest_WithButton(test);
}
-export var test_WhenBindingIsSetToAnElement_AndElementIsRemoved_ShouldBeCollectedByGC = function (done) {
- var testFinished = false;
- var pageFactory = function () {
- var page = new pageModule.Page();
- var stack = new stackLayoutModule.StackLayout();
+export function test_WhenBindingIsSetToAnElement_AndElementIsRemoved_ShouldBeCollectedByGC(done) {
+ let testFinished = false;
- var expectedValue = "testValue";
- var sourcePropertyName = "testProperty";
- var targetPropertyName = "text";
+ let page = helper.getCurrentPage();
+ let stack = new stackLayoutModule.StackLayout();
- page.on(viewModule.View.loadedEvent, () => {
- var model = new observable.Observable();
- model.set(sourcePropertyName, expectedValue);
+ let expectedValue = "testValue";
+ let sourcePropertyName = "testProperty";
+ let targetPropertyName = "text";
- function createButton(bindContext) {
- var button = new buttonModule.Button();
- button.bind({
- sourceProperty: sourcePropertyName,
- targetProperty: targetPropertyName
- }, bindContext);
- return new WeakRef(button);
- }
+ stack.on(viewModule.View.loadedEvent, () => {
+ var model = new observable.Observable();
+ model.set(sourcePropertyName, expectedValue);
- var weakRef = createButton(model);
+ function createButton(bindContext) {
+ let button = new buttonModule.Button();
+ button.bind({
+ sourceProperty: sourcePropertyName,
+ targetProperty: targetPropertyName
+ }, bindContext);
+ return new WeakRef(button);
+ }
- try {
- stack.addChild(weakRef.get());
- TKUnit.assert(weakRef.get().text === expectedValue, "Binding is not working properly!");
- stack.removeChild(weakRef.get());
- TKUnit.waitUntilReady(() => { return !weakRef.get().isLoaded });
- utils.GC();
- TKUnit.assert(!weakRef.get(), "UIElement is still alive!");
- testFinished = true;
- }
- catch (e) {
- done(e);
- }
- });
+ var weakRef = createButton(model);
- page.content = stack;
- return page;
- };
+ try {
+ stack.addChild(weakRef.get());
+ TKUnit.assertEqual(weakRef.get().text, expectedValue, "Binding is not working properly!");
+ stack.removeChild(weakRef.get());
+ TKUnit.waitUntilReady(() => { return !weakRef.get().isLoaded });
+ utils.GC();
+ TKUnit.assert(!weakRef.get(), "UIElement is still alive!");
+ testFinished = true;
+ }
+ catch (e) {
+ done(e);
+ }
+ });
+
+ page.content = stack;
- helper.navigate(pageFactory);
-
TKUnit.waitUntilReady(() => { return testFinished });
- helper.goBack();
done(null);
}
-export var test_OneBindableToBindMoreThanOneProperty_ToSameSource = function () {
+export function test_OneBindableToBindMoreThanOneProperty_ToSameSource() {
var model = new observable.Observable();
var firstPropertyOptions: bindable.BindingOptions = {
@@ -255,8 +250,8 @@ export var test_OneBindableToBindMoreThanOneProperty_ToSameSource = function ()
model.set("name", "John");
model.set("sourceProperty", "testValue");
- TKUnit.assert(obj.get("test") === "John", "Binding does not updates target property.");
- TKUnit.assert(obj.get("targetProperty") === "testValue", "Binding does not updates target property1.");
+ TKUnit.assertEqual(obj.get("test"), "John", "Binding does not updates target property.");
+ TKUnit.assertEqual(obj.get("targetProperty"), "testValue", "Binding does not updates target property1.");
}
export var test_MoreThanOneBindables_BindToASameSourceAndProperty = function () {
@@ -275,8 +270,8 @@ export var test_MoreThanOneBindables_BindToASameSourceAndProperty = function ()
model.set("sourceProperty", "testValue");
- TKUnit.assert(obj1.get("targetProperty") === "testValue", "Binding does not updates target property for first object.");
- TKUnit.assert(obj2.get("targetProperty") === "testValue", "Binding does not updates target property for second object.");
+ TKUnit.assertEqual(obj1.get("targetProperty"), "testValue", "Binding does not updates target property for first object.");
+ TKUnit.assertEqual(obj2.get("targetProperty"), "testValue", "Binding does not updates target property for second object.");
}
class TestClass extends bindable.Bindable {
@@ -887,51 +882,42 @@ export function test_NestedPropertiesBindingTwoTargetsAndReplacingSomeNestedObje
}
export function test_NullSourcePropertyShouldNotCrash() {
- var expectedValue = "Expected Value";
- var target = new bindable.Bindable();
- var convFunc = function (value) {
- return value + "Converted";
- }
- var model = new observable.Observable();
- model.set("field", expectedValue);
- model.set("convFunc", convFunc);
- target.bind({
- sourceProperty: null,
- targetProperty: "targetProp",
- expression: "convFunc(field)"
- }, model);
+ var expectedValue = "Expected Value";
+ var target = new bindable.Bindable();
+ var convFunc = function (value) {
+ return value + "Converted";
+ }
+ var model = new observable.Observable();
+ model.set("field", expectedValue);
+ model.set("convFunc", convFunc);
+ target.bind({
+ sourceProperty: null,
+ targetProperty: "targetProp",
+ expression: "convFunc(field)"
+ }, model);
- TKUnit.assertEqual(target.get("targetProp"), convFunc(expectedValue));
+ TKUnit.assertEqual(target.get("targetProp"), convFunc(expectedValue));
}
-export var test_BindingContextOfAChildElementIsNotOverwrittenBySettingTheBindingContextOfPage = function (done) {
+export function test_BindingContextOfAChildElementIsNotOverwrittenBySettingTheBindingContextOfPage() {
var testFinished = false;
- var pageFactory = function () {
- var page = new pageModule.Page();
- var child = new stackLayoutModule.StackLayout();
- page.content = child;
- var childModel;
- page.on(pageModule.Page.navigatingToEvent, (args) => {
- childModel = new observable.Observable();
- child.bindingContext = childModel;
- TKUnit.assertEqual(child.bindingContext, childModel);
- page.off(pageModule.Page.navigatingToEvent);
- });
- page.on(pageModule.Page.loadedEvent, (args) => {
- TKUnit.assertEqual(child.bindingContext, childModel);
- (args.object).bindingContext = new observable.Observable();
- TKUnit.assertEqual(child.bindingContext, childModel);
- page.off(pageModule.Page.loadedEvent);
- testFinished = true;
- });
- return page;
- };
+ let page = helper.getCurrentPage();
+ let child = new stackLayoutModule.StackLayout();
+ let childModel = new observable.Observable();
+ child.bindingContext = childModel;
+ TKUnit.assertEqual(child.bindingContext, childModel);
- helper.navigate(pageFactory);
+ child.on(stackLayoutModule.StackLayout.loadedEvent, (args) => {
+ TKUnit.assertEqual(child.bindingContext, childModel);
+ page.bindingContext = new observable.Observable();
+ TKUnit.assertEqual(child.bindingContext, childModel);
+ child.off(stackLayoutModule.StackLayout.loadedEvent);
+ testFinished = true;
+ });
+
+ page.content = child;
TKUnit.waitUntilReady(() => { return testFinished });
- helper.goBack();
- done(null);
}
export var test_BindingHitsGetterTooManyTimes = function () {
@@ -970,21 +956,21 @@ export function test_SupportFunctionsInExpressions() {
return this.get("anyColor") === "red";
}
});
-
+
var bindableObj = new bindable.Bindable();
-
+
bindableObj.bind({
"sourceProperty": "$value",
"targetProperty": "test",
"expression": "isVisible() ? 'visible' : 'collapsed'"
}, model);
-
+
model.set("anyColor", "blue");
-
+
TKUnit.assertEqual(bindableObj.get("test"), "collapsed", "When anyColor is blue test property should be collapsed.");
-
+
model.set("anyColor", "red");
-
+
TKUnit.assertEqual(bindableObj.get("test"), "visible", "When anyColor is red test property should be visible.");
}
@@ -995,20 +981,20 @@ export function test_$ValueSupportWithinExpression() {
return this.get("anyColor") === "red";
}
});
-
+
var bindableObj = new bindable.Bindable();
-
+
bindableObj.bind({
"sourceProperty": "$value",
"targetProperty": "test",
"expression": "$value.anyColor === 'red' ? 'red' : 'blue'"
}, model);
-
+
model.set("anyColor", "blue");
-
+
TKUnit.assertEqual(bindableObj.get("test"), "blue", "When anyColor is blue test property should be blue too.");
-
+
model.set("anyColor", "red");
-
+
TKUnit.assertEqual(bindableObj.get("test"), "red", "When anyColor is red test property should be red too.");
}
\ No newline at end of file
diff --git a/apps/tests/ui/binding-expressions-tests.ts b/apps/tests/ui/binding-expressions-tests.ts
index 62f30d037..4e8bd96e9 100644
--- a/apps/tests/ui/binding-expressions-tests.ts
+++ b/apps/tests/ui/binding-expressions-tests.ts
@@ -5,100 +5,68 @@ 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();
- }
+ assertElementString("textField1", "bindings");
+ assertElementString("textField2", "1");
}
export var test_BindingExpressions_LogicalOperators = function () {
navigateToPage("bindingExpressions_logicalOperators_testPage");
- try {
- assertElementString("textField1", "true");
- assertElementString("textField2", "false");
- assertElementString("textField3", "true");
- } finally {
- helper.goBack();
- }
+ assertElementString("textField1", "true");
+ assertElementString("textField2", "false");
+ assertElementString("textField3", "true");
}
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();
- }
+ assertElementString("textField1", "5");
+ assertElementString("textField2", "-5");
+ assertElementString("textField3", "3");
+ assertElementString("textField4", "-3");
+ assertElementString("textField5", "1");
+ assertElementString("textField6", "-1");
+ assertElementValueIsNaN("textField7");
+ assertElementValueIsNaN("textField8");
}
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();
- }
+ assertElementString("textField1", "1");
+ assertElementString("textField2", "-1");
+ assertElementString("textField3", "0");
+ assertElementString("textField4", "0");
+ assertElementString("textField5", "Infinity");
+ assertElementString("textField6", "0");
+ assertElementValueIsNaN("textField7");
}
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();
- }
+ assertElementString("textField1", "true");
+ //assertElementString("textField2", "false");
+ assertElementString("textField3", "true");
+ //assertElementString("textField4", "false");
+ assertElementString("textField5", "false");
+ assertElementString("textField6", "true");
+ assertElementString("textField7", "false");
+ assertElementString("textField8", "true");
}
export var test_BindingExpressions_LogicalComparisonOperators = function () {
navigateToPage("bindingExpressions_logicalComparisonOperators_testPage");
- try {
- assertElementString("textField1", "false");
- assertElementString("textField2", "true");
- assertElementString("textField3", "Text");
- } finally {
- helper.goBack();
- }
+ assertElementString("textField1", "false");
+ assertElementString("textField2", "true");
+ assertElementString("textField3", "Text");
}
export var test_BindingExpressions_TernaryOperator = function () {
navigateToPage("bindingExpressions_ternaryOperator_testPage");
- try {
- assertElementString("textField1", "by Pratchett");
- } finally {
- helper.goBack();
- }
+ assertElementString("textField1", "by Pratchett");
}
export var test_BindingExpressions_GroupingParenthesis = function () {
navigateToPage("bindingExpressions_groupingParenthesis_testPage");
- try {
- assertElementString("textField1", "21");
- assertElementString("textField2", "8");
- } finally {
- helper.goBack();
- }
+ assertElementString("textField1", "21");
+ assertElementString("textField2", "8");
}
export var assertElementString = function (elementId: string, value: any) {
diff --git a/apps/tests/ui/helper.ts b/apps/tests/ui/helper.ts
index e2f471ea2..8e1fdbb7a 100644
--- a/apps/tests/ui/helper.ts
+++ b/apps/tests/ui/helper.ts
@@ -14,99 +14,148 @@ var DELTA = 0.1;
export var ASYNC = 0.2;
export var MEMORY_ASYNC = 2;
+function clearPage(): void {
+ let newPage = frame.topmost().currentPage;
+ if (!newPage) {
+ TKUnit.waitUntilReady(() => frame.topmost().currentPage !== null);
+ newPage = frame.topmost().currentPage;
+ }
+
+ if (!newPage) {
+ throw new Error("NO CURRENT PAGE!!!!");
+ }
+
+ newPage.style._resetValue(styling.properties.backgroundColorProperty);
+ newPage.style._resetValue(styling.properties.colorProperty);
+ newPage._resetValue(button.Button.bindingContextProperty);
+ newPage._resetValue(button.Button.cssClassProperty);
+ newPage._resetValue(button.Button.idProperty);
+}
+
export function do_PageTest(test: (views: Array) => void, content: view.View, secondView: view.View, thirdView: view.View) {
- var newPage: page.Page;
- var pageFactory = function (): page.Page {
- newPage = new page.Page();
- newPage.content = content;
- return newPage;
- };
-
- navigate(pageFactory);
-
- try {
- test([newPage, content, secondView, thirdView, newPage.actionBar]);
- }
- finally {
- goBack();
- }
+ clearPage();
+ let newPage = frame.topmost().currentPage;
+ newPage.content = content;
+ test([newPage, content, secondView, thirdView, newPage.actionBar]);
+ newPage.content = null;
}
export function do_PageTest_WithButton(test: (views: Array) => void) {
- var newPage: page.Page;
- var btn: button.Button;
- var pageFactory = function (): page.Page {
- newPage = new page.Page();
- btn = new button.Button();
- newPage.content = btn;
- return newPage;
- };
-
- navigate(pageFactory);
-
- try {
- test([newPage, btn, newPage.actionBar]);
- }
- finally {
- goBack();
- }
+ clearPage();
+ let newPage = frame.topmost().currentPage;
+ let btn = new button.Button();
+ newPage.content = btn;
+ test([newPage, btn, newPage.actionBar]);
+ newPage.content = null;
}
export function do_PageTest_WithStackLayout_AndButton(test: (views: Array) => void) {
- var newPage: page.Page;
- var stackLayout;
- var btn;
- var pageFactory = function (): page.Page {
- newPage = new page.Page();
- stackLayout = new stackLayoutModule.StackLayout();
- btn = new button.Button();
-
- stackLayout.addChild(btn);
- newPage.content = stackLayout;
- return newPage;
- };
-
- navigate(pageFactory);
-
- try {
- test([newPage, stackLayout, btn, newPage.actionBar]);
- }
- finally {
- goBack();
- }
+ clearPage();
+ let newPage = frame.topmost().currentPage;
+ let stackLayout = new stackLayoutModule.StackLayout();
+ let btn = new button.Button();
+ stackLayout.addChild(btn);
+ newPage.content = stackLayout;
+ test([newPage, stackLayout, btn, newPage.actionBar]);
+ newPage.content = null;
}
-export function do_PageTest_WithStackLayout_AndButton_NavigatedBack(test: (views: Array) => void,
- assert: (views: Array) => void) {
-
- var newPage: page.Page;
- var stackLayout;
- var btn;
- var pageFactory = function (): page.Page {
- newPage = new page.Page();
- stackLayout = new stackLayoutModule.StackLayout();
- btn = new button.Button();
- stackLayout.addChild(btn);
- newPage.content = stackLayout;
- return newPage;
- };
-
- navigate(pageFactory);
-
- try {
- test([newPage, stackLayout, btn, newPage.actionBar]);
- }
- finally {
- goBack();
+//export function buildUIAndRunTest(controlToTest, testFunction, pageCss?, testDelay?) {
+export function buildUIAndRunTest(controlToTest, testFunction, pageCss?) {
+ clearPage();
+ let newPage = frame.topmost().currentPage;
+ newPage.content = controlToTest;
+ if (pageCss) {
+ newPage.css = pageCss;
}
- try {
- assert([newPage, stackLayout, btn, newPage.actionBar]);
- }
- finally {
- // wait to ensure asynchronous navigation
- TKUnit.wait(ASYNC);
+ testFunction([controlToTest, newPage]);
+ newPage.content = null;
+ newPage.css = null;
+}
+
+export function buildUIWithWeakRefAndInteract(createFunc: () => T, interactWithViewFunc?: (view: T) => void, done?) {
+ clearPage();
+ let newPage = frame.topmost().currentPage;
+ let sp = new stackLayoutModule.StackLayout();
+ let testFinished = false;
+
+ sp.on("loaded", () => {
+ let weakRef = new WeakRef(createFunc());
+ try {
+ sp.addChild(weakRef.get());
+
+ if (interactWithViewFunc) {
+ interactWithViewFunc(weakRef.get());
+ }
+
+ sp.removeChild(weakRef.get());
+ if (newPage.ios) {
+ /* tslint:disable:no-unused-expression */
+ // Could cause GC on the next call.
+ // NOTE: Don't replace this with forceGC();
+ new ArrayBuffer(4 * 1024 * 1024);
+ }
+ utils.GC();
+
+ TKUnit.waitUntilReady(() => { return weakRef.get() ? !(weakRef.get().isLoaded) : true; }, MEMORY_ASYNC);
+ TKUnit.assert(!weakRef.get(), weakRef.get() + " leaked!");
+ testFinished = true;
+ }
+ catch (e) {
+ done(e);
+ }
+ });
+
+ newPage.content = sp;
+
+ TKUnit.waitUntilReady(() => { return testFinished; }, MEMORY_ASYNC);
+ done(null);
+}
+
+export function navigateToModuleAndRunTest(moduleName, context, testFunction) {
+ let page = navigateToModule(moduleName, context);
+ testFunction(page);
+}
+
+export function navigate(pageFactory: () => page.Page, navigationContext?: any): page.Page {
+ let entry: frame.NavigationEntry = { create: pageFactory, animated: false, context: navigationContext, clearHistory: true };
+ return navigateWithEntry(entry);
+}
+
+export function navigateWithHistory(pageFactory: () => page.Page, navigationContext?: any): page.Page {
+ let entry: frame.NavigationEntry = { create: pageFactory, animated: false, context: navigationContext, clearHistory: false };
+ return navigateWithEntry(entry);
+}
+
+export function navigateToModule(moduleName: string, context?: any): page.Page {
+ let entry: frame.NavigationEntry = { moduleName: moduleName, context: context, animated: false, clearHistory: true };
+ return navigateWithEntry(entry);
+}
+
+export function navigateWithEntry(entry: frame.NavigationEntry): page.Page {
+ let page = frame.resolvePageFromEntry(entry);
+ entry.moduleName = null;
+ entry.animated = false
+ entry.create = function () {
+ return page;
}
+
+ let currentPage = getCurrentPage();
+ frame.topmost().navigate(entry);
+ TKUnit.waitUntilReady(() => getCurrentPage() !== null && getCurrentPage() !== currentPage);
+ return page;
+}
+
+export function getCurrentPage(): page.Page {
+ return frame.topmost().currentPage;
+}
+
+export function assertAreClose(actual: number, expected: number, message: string): void {
+ var density = utils.layout.getDisplayDensity();
+ var delta = Math.floor(density) !== density ? 1.1 : DELTA;
+
+ TKUnit.assertAreClose(actual, expected, delta, message);
}
export function assertViewColor(testView: view.View, hexColor: string, valueSource?: number) {
@@ -123,119 +172,6 @@ export function assertViewBackgroundColor(testView: view.View, hexColor: string)
TKUnit.assertEqual(testView.style.backgroundColor.hex, hexColor, "backgroundColor property");
}
-//export function buildUIAndRunTest(controlToTest, testFunction, pageCss?, testDelay?) {
-export function buildUIAndRunTest(controlToTest, testFunction, pageCss?) {
- var newPage: page.Page;
- var pageFactory = function (): page.Page {
- newPage = new page.Page();
- newPage.content = controlToTest;
- if (pageCss) {
- newPage.css = pageCss;
- }
- return newPage;
- };
-
- navigate(pageFactory);
- TKUnit.assert(newPage.isLoaded, "The page should be loaded here.");
- try {
- testFunction([controlToTest, newPage]);
- }
- finally {
- goBack();
- }
-}
-
-export function navigateToModuleAndRunTest(moduleName, context, testFunction) {
- navigateToModule(moduleName, context);
- try {
- testFunction(frame.topmost().currentPage);
- }
- finally {
- goBack();
- }
-}
-
-export function buildUIWithWeakRefAndInteract(createFunc: () => T, interactWithViewFunc?: (view: T) => void, done?) {
- var newPage: page.Page;
- var testFinished = false;
- var pageFactory = function (): page.Page {
- newPage = new page.Page();
- var sp = new stackLayoutModule.StackLayout();
- newPage.content = sp;
- var loaded = false;
-
- newPage.on("loaded", () => {
- loaded = true;
- var weakRef = new WeakRef(createFunc());
- try {
- sp.addChild(weakRef.get());
-
- if (interactWithViewFunc) {
- interactWithViewFunc(weakRef.get());
- }
-
- sp.removeChild(weakRef.get());
- if (newPage.ios) {
- /* tslint:disable:no-unused-expression */
- // Could cause GC on the next call.
- // NOTE: Don't replace this with forceGC();
- new ArrayBuffer(4 * 1024 * 1024);
- }
- utils.GC();
-
- TKUnit.waitUntilReady(() => { return weakRef.get() ? !(weakRef.get().isLoaded) : true; }, MEMORY_ASYNC);
- TKUnit.assert(!weakRef.get(), weakRef.get() + " leaked!");
- testFinished = true;
- }
- catch (e) {
- done(e);
- }
- });
-
- return newPage;
- };
-
- try {
- navigate(pageFactory);
- TKUnit.waitUntilReady(() => { return testFinished; }, MEMORY_ASYNC);
- }
- finally {
- goBack();
- done(null);
- }
-}
-
-export function navigate(pageFactory: () => page.Page, navigationContext?: any) {
- var currentPage = frame.topmost().currentPage;
- frame.topmost().navigate({ create: pageFactory, animated: false, context: navigationContext });
- TKUnit.waitUntilReady(() => { return frame.topmost().currentPage !== currentPage && frame.topmost().currentPage.isLoaded && !currentPage.isLoaded; });
-}
-
-export function navigateToModule(moduleName: string, context?: any) {
- var currentPage = frame.topmost().currentPage;
- frame.topmost().navigate({ moduleName: moduleName, context: context, animated: false });
- TKUnit.waitUntilReady(() => { return frame.topmost().currentPage !== currentPage && frame.topmost().currentPage.isLoaded && !currentPage.isLoaded; });
-}
-
-export function navigateWithEntry(navigationEntry: frame.NavigationEntry) {
- var currentPage = frame.topmost().currentPage;
- frame.topmost().navigate(navigationEntry);
- TKUnit.waitUntilReady(() => { return frame.topmost().currentPage !== currentPage && frame.topmost().currentPage.isLoaded && !currentPage.isLoaded; });
-}
-
-export function goBack(): void {
- var currentPage = frame.topmost().currentPage;
- frame.topmost().goBack();
- TKUnit.waitUntilReady(() => { return frame.topmost().currentPage !== currentPage && frame.topmost().currentPage.isLoaded && !currentPage.isLoaded; });
-}
-
-export function assertAreClose(actual: number, expected: number, message: string): void {
- var density = utils.layout.getDisplayDensity();
- var delta = Math.floor(density) !== density ? 1.1 : DELTA;
-
- TKUnit.assertAreClose(actual, expected, delta, message);
-}
-
export function forceGC() {
if (platform.device.os === platform.platformNames.ios) {
/* tslint:disable:no-unused-expression */
@@ -243,5 +179,6 @@ export function forceGC() {
new ArrayBuffer(4 * 1024 * 1024);
TKUnit.wait(ASYNC);
}
+
utils.GC();
-}
+}
\ No newline at end of file
diff --git a/apps/tests/ui/html-view/html-view-tests.ts b/apps/tests/ui/html-view/html-view-tests.ts
index 141f1c3d8..a0fd6dfe7 100644
--- a/apps/tests/ui/html-view/html-view-tests.ts
+++ b/apps/tests/ui/html-view/html-view-tests.ts
@@ -1,6 +1,5 @@
import TKUnit = require("../../TKUnit");
import helper = require("../helper");
-import page = require("ui/page");
import types = require("utils/types");
//
@@ -32,15 +31,9 @@ var _createHtmlViewFunc = function (): htmlViewModule.HtmlView {
}
export var testLoadHTMLString = function () {
- var newPage: page.Page;
- var htmlView = _createHtmlViewFunc();
- var pageFactory = function (): page.Page {
- newPage = new page.Page();
- newPage.content = htmlView;
- return newPage;
- };
-
- helper.navigate(pageFactory);
+ let page = helper.getCurrentPage();
+ let htmlView = _createHtmlViewFunc();
+ page.content = htmlView;
//
// ### Using HtmlView
@@ -49,11 +42,9 @@ export var testLoadHTMLString = function () {
// ```
//
- helper.goBack();
-
if (htmlView.ios) {
TKUnit.assert(!types.isNullOrUndefined(htmlView.ios.attributedText), "HTML string not loaded properly. Actual: " + htmlView.ios.attributedText);
} else if (htmlView.android) {
TKUnit.assert(htmlView.android.getText(), "HTML string not loaded properly. Actual: " + htmlView.android.getText());
}
-}
+}
\ No newline at end of file
diff --git a/apps/tests/ui/list-picker/list-picker-tests.ts b/apps/tests/ui/list-picker/list-picker-tests.ts
index e5f6e9914..4795ea7b3 100644
--- a/apps/tests/ui/list-picker/list-picker-tests.ts
+++ b/apps/tests/ui/list-picker/list-picker-tests.ts
@@ -2,7 +2,6 @@
import helper = require("../helper");
import viewModule = require("ui/core/view");
import listPickerTestsNative = require("./list-picker-tests-native");
-import pageModule = require("ui/page");
import application = require("application");
//
@@ -174,29 +173,17 @@ export var testSettingSelectedIndexLargerThanCountShouldThrow = function () {
}
export var testWhenSelectingAnItemNativelySelectedIndexIsUpdatedProperly = function () {
- var listPicker: listPickerModule.ListPicker;
- var mainPage: pageModule.Page;
- var pageFactory = function (): pageModule.Page {
- listPicker = _createListPicker();
- listPicker.items = _createItems(2);
- mainPage = new pageModule.Page();
- mainPage.content = listPicker;
- return mainPage;
- };
+ let listPicker = _createListPicker();
+ let mainPage = helper.getCurrentPage();
+ listPicker.items = _createItems(2);
+ mainPage.content = listPicker;
- helper.navigate(pageFactory);
-
- var expectedValue = 1;
+ let expectedValue = 1;
listPickerTestsNative.selectNativeItem(listPicker, expectedValue);
- TKUnit.wait(helper.ASYNC);
+ TKUnit.waitUntilReady(() => listPicker.selectedIndex === 1);
- var actualValue = listPicker.selectedIndex;
- try {
- TKUnit.assert(actualValue === expectedValue, "Actual: " + actualValue + "; Expected: " + expectedValue);
- }
- finally {
- helper.goBack();
- }
+ let actualValue = listPicker.selectedIndex;
+ TKUnit.assert(actualValue === expectedValue, "Actual: " + actualValue + "; Expected: " + expectedValue);
}
export var test_Android_MaxValueIsOneLessThanItemsCount = function () {
diff --git a/apps/tests/ui/page/page-tests-common.ts b/apps/tests/ui/page/page-tests-common.ts
index f7872467f..37405011f 100644
--- a/apps/tests/ui/page/page-tests-common.ts
+++ b/apps/tests/ui/page/page-tests-common.ts
@@ -2,9 +2,9 @@
// # Page
// Using a page requires the Page module.
// ``` JavaScript
-import PageModule = require("ui/page");
+import pageModule = require("ui/page");
//// FrameModule is needed in order to have an option to navigate to the new page.
-import FrameModule = require("ui/frame");
+import frameModule = require("ui/frame");
// ```
// ### Attaching event handler for the Page loaded event to set bindingContext.
@@ -23,25 +23,25 @@ import FrameModule = require("ui/frame");
//
import TKUnit = require("../../TKUnit");
-import LabelModule = require("ui/label");
-import stackLayoutModule = require("ui/layouts/stack-layout");
+import labelModule = require("ui/label");
+import {StackLayout} from "ui/layouts/stack-layout";
import helper = require("../helper");
import view = require("ui/core/view");
import observable = require("data/observable");
-import {Page, ShownModallyData} from "ui/page";
+import {Page, ShownModallyData, NavigatedData} from "ui/page";
import {Label} from "ui/label";
import {EventData} from "data/observable";
-export function addLabelToPage(page: PageModule.Page, text?: string) {
- var label = new LabelModule.Label();
+export function addLabelToPage(page: Page, text?: string) {
+ var label = new Label();
label.text = text || "The quick brown fox jumps over the lazy dog.";
page.content = label;
}
export function test_AfterPageLoaded_is_called_NativeInstance_is_created() {
- var page: PageModule.Page;
- var label: LabelModule.Label;
+ var page: Page;
+ var label: Label;
var nativeInstanceCreated = false;
var handler = function (data) {
@@ -50,11 +50,11 @@ export function test_AfterPageLoaded_is_called_NativeInstance_is_created() {
}
}
- var pageFactory = function (): PageModule.Page {
- page = new PageModule.Page();
+ var pageFactory = function (): Page {
+ page = new Page();
page.on(view.View.loadedEvent, handler);
- label = new LabelModule.Label();
+ label = new Label();
label.text = "Text";
page.content = label;
return page;
@@ -62,32 +62,31 @@ export function test_AfterPageLoaded_is_called_NativeInstance_is_created() {
helper.navigate(pageFactory);
- TKUnit.assert(nativeInstanceCreated, "Expected: true, Actual: " + nativeInstanceCreated);
+ TKUnit.assertTrue(nativeInstanceCreated, "nativeInstanceCreated");
page.off(view.View.loadedEvent, handler);
- helper.goBack();
}
export function test_PageLoaded_is_called_once() {
- var page1: PageModule.Page;
- var page2: PageModule.Page;
+ var page1: Page;
+ var page2: Page;
var loaded = 0;
var handler = function (data) {
loaded++;
}
- var pageFactory = function (): PageModule.Page {
- page1 = new PageModule.Page();
+ var pageFactory = function (): Page {
+ page1 = new Page();
addLabelToPage(page1, "Page 1");
return page1;
};
helper.navigate(pageFactory);
- TKUnit.assert(loaded === 0, "Expected: 0, Actual: " + loaded);
+ TKUnit.assertEqual(loaded, 0);
- var pageFactory2 = function (): PageModule.Page {
- page2 = new PageModule.Page();
+ var pageFactory2 = function (): Page {
+ page2 = new Page();
addLabelToPage(page2, "Page 2");
page2.on(view.View.loadedEvent, handler);
return page2;
@@ -95,22 +94,22 @@ export function test_PageLoaded_is_called_once() {
helper.navigate(pageFactory2);
- TKUnit.assert(loaded === 1, "Expected: 1, Actual: " + loaded);
+ TKUnit.assertEqual(loaded, 1);
page2.off(view.View.loadedEvent, handler);
- helper.goBack();
- helper.goBack();
}
export function test_NavigateToNewPage() {
var currentPage;
- currentPage = FrameModule.topmost().currentPage;
+ var topFrame = frameModule.topmost();
+ currentPage = topFrame.currentPage;
+
//
// ### Creating and navigating to the created page.
// ``` JavaScript
- var testPage: PageModule.Page;
- var pageFactory = function (): PageModule.Page {
- testPage = new PageModule.Page();
- var label = new LabelModule.Label();
+ var testPage: Page;
+ var pageFactory = function (): Page {
+ testPage = new pageModule.Page();
+ let label = new labelModule.Label();
label.text = "The quick brown fox jumps over the lazy dog.";
testPage.content = label;
return testPage;
@@ -119,13 +118,11 @@ export function test_NavigateToNewPage() {
create: pageFactory,
animated: false
};
- var topFrame = FrameModule.topmost();
topFrame.navigate(navEntry);
// ```
//
- TKUnit.waitUntilReady(() => { return topFrame.currentPage !== currentPage });
- currentPage = topFrame.currentPage;
+ TKUnit.waitUntilReady(() => { return testPage.isLayoutValid });
//
// ### Navigating backward is as simple as calling a single method.
@@ -134,7 +131,7 @@ export function test_NavigateToNewPage() {
// ```
//
- TKUnit.waitUntilReady(() => { return topFrame.currentPage !== currentPage });
+ TKUnit.waitUntilReady(() => { return topFrame.currentPage !== null && topFrame.currentPage === currentPage });
TKUnit.assert(testPage.parent === undefined, "Page.parent should become undefined after navigating back");
TKUnit.assert(testPage._context === undefined, "Page._context should become undefined after navigating back");
TKUnit.assert(testPage.isLoaded === false, "Page.isLoaded should become false after navigating back");
@@ -151,79 +148,86 @@ export function test_PageNavigation_EventSequence_WithoutTransition() {
}
function _test_PageNavigation_EventSequence(withTransition: boolean) {
- var testPage: PageModule.Page;
+ var testPage: Page;
var context = { property: "this is the context" };
var eventSequence = [];
var pageFactory = function () {
- testPage = new PageModule.Page();
+ testPage = new Page();
addLabelToPage(testPage);
- testPage.on(PageModule.Page.navigatingToEvent, function (data: PageModule.NavigatedData) {
+ testPage.on(Page.navigatingToEvent, function (data: NavigatedData) {
eventSequence.push("navigatingTo");
TKUnit.assertEqual(data.context, context, "navigatingTo: navigationContext");
});
- testPage.on(PageModule.Page.loadedEvent, function (data: observable.EventData) {
+ testPage.on(Page.loadedEvent, function (data: observable.EventData) {
eventSequence.push("loaded");
- TKUnit.assertNotEqual(FrameModule.topmost().currentPage, data.object);
+ TKUnit.assertNotEqual(frameModule.topmost().currentPage, data.object);
});
- testPage.on(PageModule.Page.navigatedToEvent, function (data: PageModule.NavigatedData) {
+ testPage.on(Page.navigatedToEvent, function (data: NavigatedData) {
eventSequence.push("navigatedTo");
TKUnit.assertEqual(data.context, context, "navigatedTo : navigationContext");
- TKUnit.assertEqual(FrameModule.topmost().currentPage, data.object);
+ TKUnit.assertEqual(frameModule.topmost().currentPage, data.object);
});
- testPage.on(PageModule.Page.navigatingFromEvent, function (data: PageModule.NavigatedData) {
+ testPage.on(Page.navigatingFromEvent, function (data: NavigatedData) {
eventSequence.push("navigatingFrom");
TKUnit.assertEqual(data.context, context, "navigatingFrom: navigationContext");
});
- testPage.on(PageModule.Page.navigatedFromEvent, function (data: PageModule.NavigatedData) {
+ testPage.on(Page.navigatedFromEvent, function (data: NavigatedData) {
eventSequence.push("navigatedFrom");
TKUnit.assertEqual(data.context, context, "navigatedFrom: navigationContext");
});
- testPage.on(PageModule.Page.unloadedEvent, function (data) {
+ testPage.on(Page.unloadedEvent, function (data) {
eventSequence.push("unloaded");
});
return testPage;
};
+ let currentPage = frameModule.topmost().currentPage;
if (withTransition) {
- var navigationTransition: FrameModule.NavigationTransition = {
+ var navigationTransition: frameModule.NavigationTransition = {
name: "slide",
duration: 100,
};
- var navigationEntry: FrameModule.NavigationEntry = {
+ var navigationEntry: frameModule.NavigationEntry = {
create: pageFactory,
context: context,
animated: true,
transition: navigationTransition
}
- helper.navigateWithEntry(navigationEntry);
+ frameModule.topmost().navigate(navigationEntry);
}
else {
- helper.navigate(pageFactory, context);
+ var navigationEntry: frameModule.NavigationEntry = {
+ create: pageFactory,
+ context: context,
+ }
+ frameModule.topmost().navigate(navigationEntry);
}
- helper.goBack();
+ TKUnit.waitUntilReady(() => frameModule.topmost().currentPage !== null && frameModule.topmost().currentPage === testPage);
+
+ frameModule.goBack();
+ TKUnit.waitUntilReady(() => frameModule.topmost().currentPage !== null && frameModule.topmost().currentPage === currentPage);
var expectedEventSequence = ["navigatingTo", "loaded", "navigatedTo", "navigatingFrom", "unloaded", "navigatedFrom"];
TKUnit.arrayAssert(eventSequence, expectedEventSequence, "Actual event sequence is not equal to expected. Actual: " + eventSequence + "; Expected: " + expectedEventSequence);
}
export function test_NavigateTo_WithContext() {
- var currentPage;
- currentPage = FrameModule.topmost().currentPage;
+ let currentPage = frameModule.topmost().currentPage;
//
// ### Pass data to the new page.
// ``` JavaScript
- var testPage: PageModule.Page;
- var pageFactory = function (): PageModule.Page {
- testPage = new PageModule.Page();
- testPage.on(PageModule.Page.navigatedToEvent, function () {
+ var testPage: pageModule.Page;
+ var pageFactory = function (): pageModule.Page {
+ testPage = new pageModule.Page();
+ testPage.on(pageModule.Page.navigatedToEvent, function () {
////console.log(JSON.stringify(context));
});
return testPage;
@@ -233,149 +237,153 @@ export function test_NavigateTo_WithContext() {
context: "myContext",
animated: false
};
- var topFrame = FrameModule.topmost();
+ let topFrame = frameModule.topmost();
topFrame.navigate(navEntry);
// ```
//
- TKUnit.waitUntilReady(() => { return topFrame.currentPage !== currentPage });
+ TKUnit.waitUntilReady(() => topFrame.currentPage !== null && topFrame.currentPage !== currentPage && testPage.isLayoutValid);
var actualContextValue = testPage.navigationContext;
- TKUnit.assert(actualContextValue === "myContext", "Expected: myContext" + ", Actual: " + actualContextValue);
- helper.goBack();
+ TKUnit.assertEqual(actualContextValue, "myContext");
- TKUnit.assert(testPage.navigationContext === undefined, "Navigation context should be cleared on navigating back");
+ topFrame.goBack();
+ TKUnit.waitUntilReady(() => topFrame.currentPage !== null && topFrame.currentPage === currentPage);
+
+ TKUnit.assertNull(testPage.navigationContext, "Navigation context should be cleared on navigating back");
}
export function test_FrameBackStack_WhenNavigatingForwardAndBack() {
+ var testPage: Page;
var pageFactory = function () {
- var testPage = new PageModule.Page();
+ testPage = new Page();
addLabelToPage(testPage);
return testPage;
};
- helper.navigate(pageFactory);
+ let topFrame = frameModule.topmost();
+ let currentPage = topFrame.currentPage;
- var topFrame = FrameModule.topmost();
- TKUnit.assert(topFrame.backStack.length === 1, "Expected: 1, Actual: " + topFrame.backStack.length);
- TKUnit.assert(topFrame.canGoBack(), "We should can go back.");
- helper.goBack();
+ topFrame.navigate(pageFactory);
+ TKUnit.waitUntilReady(() => topFrame.currentPage !== null && topFrame.currentPage === testPage);
- TKUnit.assert(topFrame.backStack.length === 0, "Expected: 0, Actual: " + topFrame.backStack.length);
- TKUnit.assert(topFrame.canGoBack() === false, "canGoBack should return false.");
+ TKUnit.assertEqual(topFrame.backStack.length, 1);
+ TKUnit.assertTrue(topFrame.canGoBack(), "We should can go back.");
+
+ topFrame.goBack();
+ TKUnit.waitUntilReady(() => topFrame.currentPage !== null && topFrame.currentPage === currentPage);
+
+ TKUnit.assertEqual(topFrame.backStack.length, 0);
+ TKUnit.assertFalse(topFrame.canGoBack(), "canGoBack should return false.");
}
export function test_LoadPageFromModule() {
+ let topFrame = frameModule.topmost();
helper.navigateToModule("ui/page/test-page-module");
- var topFrame = FrameModule.topmost();
- TKUnit.assert(topFrame.currentPage.content instanceof LabelModule.Label, "Content of the test page should be a Label created within test-page-module.");
- var testLabel = topFrame.currentPage.content;
- TKUnit.assert(testLabel.text === "Label created within a page module.");
- helper.goBack();
+
+ TKUnit.assert(topFrame.currentPage.content instanceof Label, "Content of the test page should be a Label created within test-page-module.");
+ let testLabel =