diff --git a/apps/tests/pages/page18.ts b/apps/tests/pages/page18.ts new file mode 100644 index 000000000..549255706 --- /dev/null +++ b/apps/tests/pages/page18.ts @@ -0,0 +1,38 @@ +import observable = require("data/observable"); +import pages = require("ui/page"); +import frame = require("ui/frame"); +import trace = require("trace"); +trace.setCategories("gestures"); +trace.enable(); + + + +// Event handler for Page "loaded" event attached in main-page.xml +export function pageLoaded(args: observable.EventData) { + //// Get the event sender + //var page = args.object; + + //var textItem = new pages.MenuItem(); + //textItem.text = "from loaded"; + //textItem.on("tap", () => { + // console.log("item added in page.loaded tapped!!!"); + //}); + //page.optionsMenu.addItem(textItem); +} + +export function itemTap(args) { + console.log("----- Item tapped: " + args.view.tag); + + frame.topmost().navigate({ + moduleName: "./pages/page5", + }); +} + + +export function itemLoaded(args: observable.EventData) { + console.log("----- Item loaded: " + (args.object).tag); +} + +export function itemUnloaded(args: observable.EventData) { + console.log("----- Item unloaded: " + (args.object).tag); +} \ No newline at end of file diff --git a/apps/tests/pages/page18.xml b/apps/tests/pages/page18.xml new file mode 100644 index 000000000..e92ccc3a7 --- /dev/null +++ b/apps/tests/pages/page18.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/apps/tests/pages/page5.ts b/apps/tests/pages/page5.ts index 2deb123c2..14e10e3fe 100644 --- a/apps/tests/pages/page5.ts +++ b/apps/tests/pages/page5.ts @@ -66,7 +66,7 @@ function print() { } printTNSInfo(); } -print(); +//print(); export function createPage() { var page = new pages.Page(); diff --git a/apps/tests/ui/tab-view/tab-view-tests.ts b/apps/tests/ui/tab-view/tab-view-tests.ts index f33c34290..3de712bdb 100644 --- a/apps/tests/ui/tab-view/tab-view-tests.ts +++ b/apps/tests/ui/tab-view/tab-view-tests.ts @@ -322,7 +322,7 @@ export var testWhenNavigatingBackToANonCachedPageContainingATabViewWithAListView try { var mainPage: pageModule.Page; - var pageFactory = function(): pageModule.Page { + var pageFactory = function (): pageModule.Page { var tabView = _createTabView(); var items = []; items.push({ @@ -349,13 +349,13 @@ export var testWhenNavigatingBackToANonCachedPageContainingATabViewWithAListView helper.navigate(pageFactory); var tabView = mainPage.getViewById("TabView"); - + // This will navigate to a details page. The wait is inside the method. _clickTheFirstButtonInTheListViewNatively(tabView); // Go back to the main page containing the TabView. helper.goBack(); - + // Go back to the root tests page. helper.goBack(); } @@ -371,20 +371,20 @@ export var testWhenNavigatingBackToANonCachedPageContainingATabViewWithAListView } export function testBindingIsRefreshedWhenTabViewItemIsUnselectedAndThenSelectedAgain() { - helper.buildUIAndRunTest(_createTabView(), function (views: Array) { - var viewModel = new observable.Observable(); - viewModel.set("counter", 0); - frameModule.topmost().currentPage.bindingContext = viewModel; + helper.buildUIAndRunTest(_createTabView(), function (views: Array) { + var viewModel = new observable.Observable(); + viewModel.set("counter", 0); + frameModule.topmost().currentPage.bindingContext = viewModel; var tabView = views[0]; - var items = _createItems(10); + var items = _createItems(10); var StackLayout0 = new stackLayoutModule.StackLayout(); var label0 = new labelModule.Label(); label0.text = "Tab 0"; - label0.id = "testLabel"; - label0.bind({ sourceProperty: "counter", targetProperty: "text", twoWay: true }); + label0.id = "testLabel"; + label0.bind({ sourceProperty: "counter", targetProperty: "text", twoWay: true }); StackLayout0.addChild(label0); var tabEntry0 = { title: "Tab 0", @@ -393,18 +393,77 @@ export function testBindingIsRefreshedWhenTabViewItemIsUnselectedAndThenSelected items.push(tabEntry0); tabView.items = items; - tabView.selectedIndex = 10; - TKUnit.wait(ASYNC); + tabView.selectedIndex = 10; + TKUnit.wait(ASYNC); - tabView.selectedIndex = 0; - TKUnit.wait(ASYNC); + tabView.selectedIndex = 0; + TKUnit.wait(ASYNC); - tabView.selectedIndex = 10; - TKUnit.wait(ASYNC); - var expectedValue = 5; - viewModel.set("counter", expectedValue); - var testLabel = (tabView.items[10].view.getViewById("testLabel")) - TKUnit.assertEqual(testLabel.text, expectedValue, "binding is not working!"); + tabView.selectedIndex = 10; + TKUnit.wait(ASYNC); + var expectedValue = 5; + viewModel.set("counter", expectedValue); + var testLabel = (tabView.items[10].view.getViewById("testLabel")) + TKUnit.assertEqual(testLabel.text, expectedValue, "binding is not working!"); + }); +} + +export function testLoadedAndUnloadedAreFired_WhenNavigatingAwayAndBack() { + var topFrame = frameModule.topmost(); + var itemCount = 3; + var loadedItems = [0, 0, 0]; + var unloadedItems = [0, 0, 0]; + + var tabView = _createTabView(); + var items = _createItems(itemCount); + tabView.items = items; + + function createLoadedFor(itemIndex: number) { + return function () { + console.log("loaded item: " + itemIndex) + loadedItems[itemIndex] = loadedItems[itemIndex] + 1; + } + } + + function createUnloadedFor(itemIndex: number) { + return function () { + console.log("unloaded item: " + itemIndex) + unloadedItems[itemIndex] = unloadedItems[itemIndex] + 1; + } + } + + for (var i = 0; i < itemCount; i++) { + items[i].view.on("loaded", createLoadedFor(i)); + items[i].view.on("unloaded", createUnloadedFor(i)); + } + + helper.buildUIAndRunTest(tabView, function () { + try { + var detailsPageFactory = function (): pageModule.Page { + var detailsPage = new pageModule.Page(); + detailsPage.content = new labelModule.Label(); + return detailsPage; + }; + + helper.navigate(detailsPageFactory); + } + finally { + // Go back to the test page. + helper.goBack(); + } + + console.log("loaded items: " + loadedItems.join(", ")); + console.log("unloadedItems items: " + unloadedItems.join(", ")); + + // Check that at least the first item is loaded and unloaded + TKUnit.assertEqual(loadedItems[0], 1, "loaded count for 1st item"); + TKUnit.assertEqual(unloadedItems[0], 1, "unloaded count for 1st item"); + + // Check that loaded/unloaded coutns are equal for all tabs + for (var i = 0; i < itemCount; i++) { + TKUnit.assert(loadedItems[i] === unloadedItems[i], + "Loaded and unloaded calls are not equal for item " + i + " loaded: " + loadedItems[i] + " unloaded: " + unloadedItems[i]); + } }); }