mirror of
https://github.com/NativeScript/NativeScript.git
synced 2025-11-05 13:26:48 +08:00
tests
This commit is contained in:
@@ -61,10 +61,21 @@
|
||||
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
|
||||
<Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" />
|
||||
<ItemGroup>
|
||||
<TypeScriptCompile Include="apps\action-bar-demo\pages\center-view-stack.ts" />
|
||||
<TypeScriptCompile Include="apps\action-bar-demo\pages\center-view-segmented.ts" />
|
||||
<TypeScriptCompile Include="apps\action-bar-demo\pages\center-view.ts" />
|
||||
<TypeScriptCompile Include="apps\action-bar-demo\pages\data-binding.ts" />
|
||||
<TypeScriptCompile Include="apps\action-bar-demo\pages\action-items-text.ts">
|
||||
<DependentUpon>action-items-text.xml</DependentUpon>
|
||||
</TypeScriptCompile>
|
||||
<TypeScriptCompile Include="apps\action-bar-demo\pages\center-view-stack.ts">
|
||||
<DependentUpon>center-view-stack.xml</DependentUpon>
|
||||
</TypeScriptCompile>
|
||||
<TypeScriptCompile Include="apps\action-bar-demo\pages\center-view-segmented.ts">
|
||||
<DependentUpon>center-view-segmented.xml</DependentUpon>
|
||||
</TypeScriptCompile>
|
||||
<TypeScriptCompile Include="apps\action-bar-demo\pages\center-view.ts">
|
||||
<DependentUpon>center-view.xml</DependentUpon>
|
||||
</TypeScriptCompile>
|
||||
<TypeScriptCompile Include="apps\action-bar-demo\pages\data-binding.ts">
|
||||
<DependentUpon>data-binding.xml</DependentUpon>
|
||||
</TypeScriptCompile>
|
||||
<TypeScriptCompile Include="apps\cuteness.unoptimized\app.ts" />
|
||||
<TypeScriptCompile Include="apps\cuteness.unoptimized\details-page.ts">
|
||||
<DependentUpon>details-page.xml</DependentUpon>
|
||||
@@ -83,10 +94,15 @@
|
||||
<TypeScriptCompile Include="apps\action-bar-demo\main-page.ts">
|
||||
<DependentUpon>main-page.xml</DependentUpon>
|
||||
</TypeScriptCompile>
|
||||
<TypeScriptCompile Include="apps\action-bar-demo\pages\action-items-text.ts" />
|
||||
<TypeScriptCompile Include="apps\action-bar-demo\pages\navigation-button.ts" />
|
||||
<TypeScriptCompile Include="apps\action-bar-demo\pages\action-items-icon.ts" />
|
||||
<TypeScriptCompile Include="apps\action-bar-demo\pages\page-title-icon.ts" />
|
||||
<TypeScriptCompile Include="apps\action-bar-demo\pages\navigation-button.ts">
|
||||
<DependentUpon>navigation-button.xml</DependentUpon>
|
||||
</TypeScriptCompile>
|
||||
<TypeScriptCompile Include="apps\action-bar-demo\pages\action-items-icon.ts">
|
||||
<DependentUpon>action-items-icon.xml</DependentUpon>
|
||||
</TypeScriptCompile>
|
||||
<TypeScriptCompile Include="apps\action-bar-demo\pages\page-title-icon.ts">
|
||||
<DependentUpon>page-title-icon.xml</DependentUpon>
|
||||
</TypeScriptCompile>
|
||||
<TypeScriptCompile Include="apps\gallery-app\views\list-picker.ts">
|
||||
<DependentUpon>list-picker.xml</DependentUpon>
|
||||
</TypeScriptCompile>
|
||||
@@ -172,6 +188,9 @@
|
||||
<TypeScriptCompile Include="apps\tests\fps-meter-tests.ts" />
|
||||
<TypeScriptCompile Include="apps\tests\trace-tests.ts" />
|
||||
<TypeScriptCompile Include="apps\tests\ui-test.ts" />
|
||||
<TypeScriptCompile Include="apps\tests\ui\action-bar\action-bar-tests-common.ts" />
|
||||
<TypeScriptCompile Include="apps\tests\ui\action-bar\action-bar-tests.android.ts" />
|
||||
<TypeScriptCompile Include="apps\tests\ui\action-bar\action-bar-tests.ios.ts" />
|
||||
<TypeScriptCompile Include="apps\tests\ui\bindingContext_testPage.ts">
|
||||
<DependentUpon>bindingContext_testPage.xml</DependentUpon>
|
||||
</TypeScriptCompile>
|
||||
@@ -1728,7 +1747,7 @@
|
||||
<SaveServerSettingsInUserFile>False</SaveServerSettingsInUserFile>
|
||||
</WebProjectProperties>
|
||||
</FlavorProperties>
|
||||
<UserProperties ui_2layouts_2wrap-layout_2package_1json__JSONSchema="http://json.schemastore.org/package" ui_2layouts_2grid-layout_2package_1json__JSONSchema="" ui_2layouts_2dock-layout_2package_1json__JSONSchema="" ui_2layouts_2absolute-layout_2package_1json__JSONSchema="http://json.schemastore.org/package" ui_2layouts_2linear-layout_2package_1json__JSONSchema="http://json.schemastore.org/package" ui_2web-view_2package_1json__JSONSchema="http://json.schemastore.org/package" ui_2content-view_2package_1json__JSONSchema="http://json.schemastore.org/package" apps_2gallery-app_2package_1json__JSONSchema="http://json.schemastore.org/package" apps_2absolute-layout-demo_2package_1json__JSONSchema="http://json.schemastore.org/package" apps_2editable-text-demo_2package_1json__JSONSchema="http://json.schemastore.org/package" ui_2scroll-view_2package_1json__JSONSchema="http://json.schemastore.org/package" />
|
||||
<UserProperties ui_2scroll-view_2package_1json__JSONSchema="http://json.schemastore.org/package" apps_2editable-text-demo_2package_1json__JSONSchema="http://json.schemastore.org/package" apps_2absolute-layout-demo_2package_1json__JSONSchema="http://json.schemastore.org/package" apps_2gallery-app_2package_1json__JSONSchema="http://json.schemastore.org/package" ui_2content-view_2package_1json__JSONSchema="http://json.schemastore.org/package" ui_2web-view_2package_1json__JSONSchema="http://json.schemastore.org/package" ui_2layouts_2linear-layout_2package_1json__JSONSchema="http://json.schemastore.org/package" ui_2layouts_2absolute-layout_2package_1json__JSONSchema="http://json.schemastore.org/package" ui_2layouts_2dock-layout_2package_1json__JSONSchema="" ui_2layouts_2grid-layout_2package_1json__JSONSchema="" ui_2layouts_2wrap-layout_2package_1json__JSONSchema="http://json.schemastore.org/package" />
|
||||
</VisualStudio>
|
||||
</ProjectExtensions>
|
||||
</Project>
|
||||
@@ -23,6 +23,7 @@ function isRunningOnEmulator(): boolean {
|
||||
}
|
||||
|
||||
export var allTests = {};
|
||||
allTests["ACTION-BAR"] = require("./ui/action-bar/action-bar-tests");
|
||||
allTests["XML-DECLARATION"] = require("./xml-declaration/xml-declaration-tests");
|
||||
allTests["APPLICATION"] = require("./application-tests");
|
||||
allTests["DOCKLAYOUT"] = require("./layouts/dock-layout-tests");
|
||||
|
||||
136
apps/tests/ui/action-bar/action-bar-tests-common.ts
Normal file
136
apps/tests/ui/action-bar/action-bar-tests-common.ts
Normal file
@@ -0,0 +1,136 @@
|
||||
import TKUnit = require("../../TKUnit");
|
||||
import LabelModule = require("ui/label");
|
||||
import helper = require("../helper");
|
||||
import builder = require("ui/builder");
|
||||
import actionBar = require("ui/action-bar");
|
||||
import button = require("ui/button");
|
||||
import PageModule = require("ui/page");
|
||||
|
||||
export function test_actionItem_inherit_bindingContext() {
|
||||
var page: PageModule.Page;
|
||||
var label: LabelModule.Label;
|
||||
var context = { text: "item" };
|
||||
|
||||
var pageFactory = function (): PageModule.Page {
|
||||
page = new PageModule.Page();
|
||||
page.bindingContext = context;
|
||||
var actionItem = new actionBar.ActionItem();
|
||||
|
||||
actionItem.bind({
|
||||
sourceProperty: "text",
|
||||
targetProperty: "text"
|
||||
});
|
||||
|
||||
page.actionBar.actionItems.addItem(actionItem);
|
||||
|
||||
label = new LabelModule.Label();
|
||||
label.text = "Text";
|
||||
page.content = label;
|
||||
return page;
|
||||
};
|
||||
|
||||
helper.navigate(pageFactory);
|
||||
|
||||
try {
|
||||
TKUnit.assertEqual(page.actionBar.actionItems.getItemAt(0).text, "item", "actionItem.text");
|
||||
}
|
||||
finally {
|
||||
helper.goBack();
|
||||
}
|
||||
}
|
||||
|
||||
export function test_actionBar_inherit_bindingContext_inXML() {
|
||||
var p = <PageModule.Page>builder.parse(
|
||||
"<Page> <Page.actionBar> <ActionBar title=\"{{ myProp }} \" /> </Page.actionBar> </Page>");
|
||||
p.bindingContext = { myProp: "success" };
|
||||
|
||||
TKUnit.assertEqual(p.actionBar.title, "success", "actionBar.title");
|
||||
};
|
||||
|
||||
export function test_actionItem_inherit_bindingContext_inXML() {
|
||||
var p = <PageModule.Page>builder.parse(
|
||||
"<Page> <Page.actionBar> <ActionBar> <ActionBar.actionItems>" +
|
||||
"<ActionItem text=\"{{ myProp }} \" />" +
|
||||
"</ActionBar.actionItems> </ActionBar> </Page.actionBar> </Page>");
|
||||
p.bindingContext = { myProp: "success" };
|
||||
|
||||
var actionItem = p.actionBar.actionItems.getItemAt(0);
|
||||
|
||||
TKUnit.assertEqual(actionItem.text, "success", "actionItem.text");
|
||||
};
|
||||
|
||||
export function test_navigationButton_inherit_bindingContext_inXML() {
|
||||
var p = <PageModule.Page>builder.parse(
|
||||
"<Page> <Page.actionBar> <ActionBar>" +
|
||||
"<NavigationButton text=\"{{ myProp }} \" />" +
|
||||
"</ActionBar> </Page.actionBar> </Page>");
|
||||
p.bindingContext = { myProp: "success" };
|
||||
|
||||
var navButton = p.actionBar.navigationButton;
|
||||
TKUnit.assertEqual(navButton.text, "success", "actionItem.text");
|
||||
};
|
||||
|
||||
export function test_centerView_inherit_bindingContext_inXML() {
|
||||
var p = <PageModule.Page>builder.parse(
|
||||
"<Page> <Page.actionBar> <ActionBar> <ActionBar.centerView>" +
|
||||
"<Button text=\"{{ myProp }} \" />" +
|
||||
"</ActionBar.centerView> </ActionBar> </Page.actionBar> </Page>");
|
||||
p.bindingContext = { myProp: "success" };
|
||||
|
||||
var centerBtn = <button.Button>p.actionBar.centerView;
|
||||
TKUnit.assert(centerBtn instanceof button.Button, "cneterView not loaded correctly");
|
||||
TKUnit.assertEqual(centerBtn.text, "success", "actionItem.text");
|
||||
};
|
||||
|
||||
export function test_centerView_inXML() {
|
||||
var p = <PageModule.Page>builder.parse(
|
||||
"<Page> <Page.actionBar> <ActionBar> <ActionBar.centerView>" +
|
||||
"<Button/>" +
|
||||
"</ActionBar.centerView> </ActionBar> </Page.actionBar> </Page>");
|
||||
|
||||
var centerBtn = <button.Button>p.actionBar.centerView;
|
||||
TKUnit.assert(centerBtn instanceof button.Button, "cneterView not loaded correctly");
|
||||
};
|
||||
|
||||
export function test_centerView_inXML_short_definition() {
|
||||
var p = <PageModule.Page>builder.parse(
|
||||
"<Page> <Page.actionBar> <ActionBar>" +
|
||||
"<Button/>" +
|
||||
"</ActionBar> </Page.actionBar> </Page>");
|
||||
|
||||
var centerBtn = <button.Button>p.actionBar.centerView;
|
||||
TKUnit.assert(centerBtn instanceof button.Button, "cneterView not loaded correctly");
|
||||
};
|
||||
|
||||
export function test_Setting_ActionItems_doesnt_thrown() {
|
||||
|
||||
var page: PageModule.Page;
|
||||
var label: LabelModule.Label;
|
||||
var gotException = false;
|
||||
|
||||
var pageFactory = function (): PageModule.Page {
|
||||
page = new PageModule.Page();
|
||||
var actionItem = new actionBar.ActionItem();
|
||||
actionItem.text = "Item";
|
||||
page.actionBar.actionItems.addItem(actionItem);
|
||||
|
||||
label = new LabelModule.Label();
|
||||
label.text = "Text";
|
||||
page.content = label;
|
||||
return page;
|
||||
};
|
||||
|
||||
try {
|
||||
helper.navigate(pageFactory);
|
||||
}
|
||||
catch (e) {
|
||||
gotException = true;
|
||||
}
|
||||
|
||||
try {
|
||||
TKUnit.assert(!gotException, "Expected: false, Actual: " + gotException);
|
||||
}
|
||||
finally {
|
||||
helper.goBack();
|
||||
}
|
||||
}
|
||||
4
apps/tests/ui/action-bar/action-bar-tests.android.ts
Normal file
4
apps/tests/ui/action-bar/action-bar-tests.android.ts
Normal file
@@ -0,0 +1,4 @@
|
||||
import actionTestsCommon = require("./action-bar-tests-common");
|
||||
|
||||
declare var exports;
|
||||
require("utils/module-merge").merge(actionTestsCommon, exports);
|
||||
84
apps/tests/ui/action-bar/action-bar-tests.ios.ts
Normal file
84
apps/tests/ui/action-bar/action-bar-tests.ios.ts
Normal file
@@ -0,0 +1,84 @@
|
||||
import actionTestsCommon = require("./action-bar-tests-common");
|
||||
import PageModule = require("ui/page");
|
||||
import TKUnit = require("../../TKUnit");
|
||||
import LabelModule = require("ui/label");
|
||||
import helper = require("../helper");
|
||||
import view = require("ui/core/view");
|
||||
import actionBar = require("ui/action-bar");
|
||||
|
||||
declare var exports;
|
||||
require("utils/module-merge").merge(actionTestsCommon, exports);
|
||||
|
||||
export function test_NavBar_isVisible_when_MenuItems_areSet() {
|
||||
|
||||
var page: PageModule.Page;
|
||||
var label: LabelModule.Label;
|
||||
var navBarIsVisible = false;
|
||||
|
||||
var handler = function (data) {
|
||||
page.off(PageModule.Page.navigatedToEvent, handler);
|
||||
navBarIsVisible = (<any>page.frame.ios).showNavigationBar;
|
||||
}
|
||||
|
||||
var pageFactory = function (): PageModule.Page {
|
||||
page = new PageModule.Page();
|
||||
page.on(PageModule.Page.navigatedToEvent, handler);
|
||||
|
||||
var mi = new actionBar.ActionItem();
|
||||
mi.text = "B";
|
||||
page.actionBar.actionItems.addItem(mi);
|
||||
label = new LabelModule.Label();
|
||||
label.text = "Text";
|
||||
page.content = label;
|
||||
return page;
|
||||
};
|
||||
|
||||
helper.navigate(pageFactory);
|
||||
|
||||
try {
|
||||
TKUnit.assert(navBarIsVisible, "Expected: true, Actual: " + navBarIsVisible);
|
||||
}
|
||||
finally {
|
||||
page.off(view.View.loadedEvent, handler);
|
||||
helper.goBack();
|
||||
}
|
||||
}
|
||||
|
||||
export function test_NavBarItemsAreClearedFromNativeWhenClearedFromNativeScript() {
|
||||
var page: PageModule.Page;
|
||||
var label: LabelModule.Label;
|
||||
|
||||
var handler = function (data) {
|
||||
page.off(PageModule.Page.navigatedToEvent, handler);
|
||||
var menuItems = page.actionBar.actionItems.getItems();
|
||||
var i;
|
||||
for (i = menuItems.length - 1; i >= 0; i--) {
|
||||
page.actionBar.actionItems.removeItem(menuItems[i]);
|
||||
}
|
||||
}
|
||||
|
||||
var pageFactory = function (): PageModule.Page {
|
||||
page = new PageModule.Page();
|
||||
page.on(PageModule.Page.navigatedToEvent, handler);
|
||||
|
||||
var mi = new actionBar.ActionItem();
|
||||
mi.text = "B";
|
||||
page.actionBar.actionItems.addItem(mi);
|
||||
label = new LabelModule.Label();
|
||||
label.text = "Text";
|
||||
page.content = label;
|
||||
return page;
|
||||
};
|
||||
|
||||
helper.navigate(pageFactory);
|
||||
|
||||
try {
|
||||
var navigationItem: UINavigationItem = ((<UIViewController>page.ios).navigationItem);
|
||||
var rightBarButtonItemsCount = navigationItem.rightBarButtonItems ? navigationItem.rightBarButtonItems.count : 0;
|
||||
TKUnit.assertEqual(rightBarButtonItemsCount, 0, "After remove all items native items should be 0.");
|
||||
}
|
||||
finally {
|
||||
page.off(view.View.loadedEvent, handler);
|
||||
helper.goBack();
|
||||
}
|
||||
}
|
||||
@@ -7,7 +7,7 @@ import TKUnit = require("../TKUnit");
|
||||
import utils = require("utils/utils");
|
||||
import types = require("utils/types");
|
||||
import styling = require("ui/styling");
|
||||
import platform = require("platform");
|
||||
import platform = require("platform");
|
||||
|
||||
var DELTA = 0.1;
|
||||
|
||||
@@ -25,7 +25,7 @@ export function do_PageTest(test: (views: Array<view.View>) => void, content: vi
|
||||
navigate(pageFactory);
|
||||
|
||||
try {
|
||||
test([newPage, content, secondView, thirdView]);
|
||||
test([newPage, content, secondView, thirdView, newPage.actionBar]);
|
||||
}
|
||||
finally {
|
||||
goBack();
|
||||
@@ -45,7 +45,7 @@ export function do_PageTest_WithButton(test: (views: Array<view.View>) => void)
|
||||
navigate(pageFactory);
|
||||
|
||||
try {
|
||||
test([newPage, btn]);
|
||||
test([newPage, btn, newPage.actionBar]);
|
||||
}
|
||||
finally {
|
||||
goBack();
|
||||
@@ -69,7 +69,7 @@ export function do_PageTest_WithStackLayout_AndButton(test: (views: Array<view.V
|
||||
navigate(pageFactory);
|
||||
|
||||
try {
|
||||
test([newPage, stackLayout, btn]);
|
||||
test([newPage, stackLayout, btn, newPage.actionBar]);
|
||||
}
|
||||
finally {
|
||||
goBack();
|
||||
@@ -94,14 +94,14 @@ export function do_PageTest_WithStackLayout_AndButton_NavigatedBack(test: (views
|
||||
navigate(pageFactory);
|
||||
|
||||
try {
|
||||
test([newPage, stackLayout, btn]);
|
||||
test([newPage, stackLayout, btn, newPage.actionBar]);
|
||||
}
|
||||
finally {
|
||||
goBack();
|
||||
}
|
||||
|
||||
try {
|
||||
assert([newPage, stackLayout, btn]);
|
||||
assert([newPage, stackLayout, btn, newPage.actionBar]);
|
||||
}
|
||||
finally {
|
||||
// wait to ensure asynchronous navigation
|
||||
@@ -198,7 +198,7 @@ export function buildUIWithWeakRefAndInteract<T extends view.View>(createFunc: (
|
||||
}
|
||||
}
|
||||
|
||||
export function navigate(pageFactory: () => page.Page, navigationContext?: any) {
|
||||
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; });
|
||||
|
||||
@@ -27,8 +27,6 @@ import LabelModule = require("ui/label");
|
||||
import stackLayoutModule = require("ui/layouts/stack-layout");
|
||||
import helper = require("../helper");
|
||||
import view = require("ui/core/view");
|
||||
import builder = require("ui/builder");
|
||||
import actionBar = require("ui/action-bar");
|
||||
|
||||
export function addLabelToPage(page: PageModule.Page, text?: string) {
|
||||
var label = new LabelModule.Label();
|
||||
@@ -36,82 +34,6 @@ export function addLabelToPage(page: PageModule.Page, text?: string) {
|
||||
page.content = label;
|
||||
}
|
||||
|
||||
export function test_menuItem_inherit_bindingContext() {
|
||||
|
||||
var page: PageModule.Page;
|
||||
var label: LabelModule.Label;
|
||||
var context = { text: "item" };
|
||||
|
||||
var pageFactory = function (): PageModule.Page {
|
||||
page = new PageModule.Page();
|
||||
page.bindingContext = context;
|
||||
var menuItem = new actionBar.ActionItem();
|
||||
|
||||
menuItem.bind({
|
||||
sourceProperty: "text",
|
||||
targetProperty: "text"
|
||||
});
|
||||
|
||||
page.actionBar.actionItems.addItem(menuItem);
|
||||
|
||||
label = new LabelModule.Label();
|
||||
label.text = "Text";
|
||||
page.content = label;
|
||||
return page;
|
||||
};
|
||||
|
||||
helper.navigate(pageFactory);
|
||||
|
||||
try {
|
||||
TKUnit.assertEqual(page.actionBar.actionItems.getItemAt(0).text, "item", "menuItem.text should equal to 'item'");
|
||||
}
|
||||
finally {
|
||||
helper.goBack();
|
||||
}
|
||||
}
|
||||
|
||||
export function test_menuItem_inherit_bindingContext_inXML() {
|
||||
var p = <PageModule.Page>builder.parse("<Page><Page.actionItems><ActionItem text=\"{{ myProp }} \" /></Page.actionItems></Page>");
|
||||
p.bindingContext = { myProp: "success" };
|
||||
|
||||
var menuItem = p.actionBar.actionItems.getItemAt(0);
|
||||
|
||||
TKUnit.assertEqual(menuItem.text, "success", "menuItem.text");
|
||||
};
|
||||
|
||||
export function test_Setting_ActionItems_doesnt_thrown() {
|
||||
|
||||
var page: PageModule.Page;
|
||||
var label: LabelModule.Label;
|
||||
var gotException = false;
|
||||
|
||||
var pageFactory = function (): PageModule.Page {
|
||||
page = new PageModule.Page();
|
||||
var menuItem = new actionBar.ActionItem();
|
||||
menuItem.text = "Item";
|
||||
page.actionBar.actionItems.addItem(menuItem);
|
||||
|
||||
label = new LabelModule.Label();
|
||||
label.text = "Text";
|
||||
page.content = label;
|
||||
return page;
|
||||
};
|
||||
|
||||
try {
|
||||
helper.navigate(pageFactory);
|
||||
}
|
||||
catch (e) {
|
||||
gotException = true;
|
||||
}
|
||||
|
||||
try {
|
||||
TKUnit.assert(!gotException, "Expected: false, Actual: " + gotException);
|
||||
}
|
||||
finally {
|
||||
helper.goBack();
|
||||
}
|
||||
}
|
||||
|
||||
export function test_AfterPageLoaded_is_called_NativeInstance_is_created() {
|
||||
|
||||
var page: PageModule.Page;
|
||||
|
||||
@@ -3,8 +3,6 @@ import PageModule = require("ui/page");
|
||||
import TKUnit = require("../../TKUnit");
|
||||
import LabelModule = require("ui/label");
|
||||
import helper = require("../helper");
|
||||
import view = require("ui/core/view");
|
||||
import actionBar = require("ui/action-bar");
|
||||
|
||||
declare var exports;
|
||||
require("utils/module-merge").merge(PageTestCommon, exports);
|
||||
@@ -26,77 +24,3 @@ export function test_NavigateToNewPage_InnerControl() {
|
||||
TKUnit.assert(label.android === undefined, "InnerControl.android should be undefined after navigate back.");
|
||||
TKUnit.assert(label.isLoaded === false, "InnerControl.isLoaded should become false after navigating back");
|
||||
}
|
||||
|
||||
export function test_NavBar_isVisible_when_MenuItems_areSet() {
|
||||
|
||||
var page: PageModule.Page;
|
||||
var label: LabelModule.Label;
|
||||
var navBarIsVisible = false;
|
||||
|
||||
var handler = function (data) {
|
||||
page.off(PageModule.Page.navigatedToEvent, handler);
|
||||
navBarIsVisible = (<any>page.frame.ios).showNavigationBar;
|
||||
}
|
||||
|
||||
var pageFactory = function (): PageModule.Page {
|
||||
page = new PageModule.Page();
|
||||
page.on(PageModule.Page.navigatedToEvent, handler);
|
||||
|
||||
var mi = new actionBar.ActionItem();
|
||||
mi.text = "B";
|
||||
page.actionBar.actionItems.addItem(mi);
|
||||
label = new LabelModule.Label();
|
||||
label.text = "Text";
|
||||
page.content = label;
|
||||
return page;
|
||||
};
|
||||
|
||||
helper.navigate(pageFactory);
|
||||
|
||||
try {
|
||||
TKUnit.assert(navBarIsVisible, "Expected: true, Actual: " + navBarIsVisible);
|
||||
}
|
||||
finally {
|
||||
page.off(view.View.loadedEvent, handler);
|
||||
helper.goBack();
|
||||
}
|
||||
}
|
||||
|
||||
export function test_NavBarItemsAreClearedFromNativeWhenClearedFromNativeScript() {
|
||||
var page: PageModule.Page;
|
||||
var label: LabelModule.Label;
|
||||
|
||||
var handler = function (data) {
|
||||
page.off(PageModule.Page.navigatedToEvent, handler);
|
||||
var menuItems = page.actionBar.actionItems.getItems();
|
||||
var i;
|
||||
for (i = menuItems.length - 1; i >= 0; i--) {
|
||||
page.actionBar.actionItems.removeItem(menuItems[i]);
|
||||
}
|
||||
}
|
||||
|
||||
var pageFactory = function (): PageModule.Page {
|
||||
page = new PageModule.Page();
|
||||
page.on(PageModule.Page.navigatedToEvent, handler);
|
||||
|
||||
var mi = new actionBar.ActionItem();
|
||||
mi.text = "B";
|
||||
page.actionBar.actionItems.addItem(mi);
|
||||
label = new LabelModule.Label();
|
||||
label.text = "Text";
|
||||
page.content = label;
|
||||
return page;
|
||||
};
|
||||
|
||||
helper.navigate(pageFactory);
|
||||
|
||||
try {
|
||||
var navigationItem: UINavigationItem = ((<UIViewController>page.ios).navigationItem);
|
||||
var rightBarButtonItemsCount = navigationItem.rightBarButtonItems ? navigationItem.rightBarButtonItems.count : 0;
|
||||
TKUnit.assertEqual(rightBarButtonItemsCount, 0, "After remove all items native items should be 0.");
|
||||
}
|
||||
finally {
|
||||
page.off(view.View.loadedEvent, handler);
|
||||
helper.goBack();
|
||||
}
|
||||
}
|
||||
@@ -27,7 +27,8 @@ export var test_eachDescendant = function () {
|
||||
}
|
||||
|
||||
viewModule.eachDescendant(frame.topmost(), callback);
|
||||
TKUnit.assert(counter === 2);
|
||||
// Descendants: page, actionBar, button
|
||||
TKUnit.assertEqual(counter, 3, "descendants");
|
||||
}
|
||||
|
||||
helper.do_PageTest_WithButton(test);
|
||||
|
||||
@@ -21,7 +21,8 @@ export var test_event_onAttached_IsRaised = function () {
|
||||
trace.addEventListener(listener);
|
||||
|
||||
var test = function (views: Array<view.View>) {
|
||||
TKUnit.assertEqual(listener.receivedEvents.length, views.length, "onAttached calls");
|
||||
// 4 onAttached calls: page, stack, button, actionBar
|
||||
TKUnit.assertEqual(listener.receivedEvents.length, 4, "onAttached calls");
|
||||
|
||||
var i;
|
||||
for (i = 0; i < listener.receivedEvents.length; i++) {
|
||||
@@ -58,7 +59,8 @@ export var test_event_onContextChanged_IsRaised_WhenAttached = function () {
|
||||
trace.addEventListener(listener);
|
||||
|
||||
var test = function (views: Array<view.View>) {
|
||||
TKUnit.assertEqual(listener.receivedEvents.length, views.length, "onContextChanged calls");
|
||||
// 4 onContextChanged calls: page, stack, button, actionBar
|
||||
TKUnit.assertEqual(listener.receivedEvents.length, 4, "onContextChanged calls");
|
||||
|
||||
var i;
|
||||
for (i = 0; i < listener.receivedEvents.length; i++) {
|
||||
@@ -91,7 +93,7 @@ export var test_event_onContextChanged_IsRaised_WhenAttached_Dynamically = funct
|
||||
}
|
||||
|
||||
export var test_event_onDetached_IsRaised = function () {
|
||||
var cachedViews;
|
||||
var cachedViews: Array<view.View>;
|
||||
var listener: Listener;
|
||||
|
||||
var test = function (views: Array<view.View>) {
|
||||
@@ -104,13 +106,18 @@ export var test_event_onDetached_IsRaised = function () {
|
||||
|
||||
helper.do_PageTest_WithStackLayout_AndButton(test);
|
||||
|
||||
TKUnit.assertEqual(listener.receivedEvents.length, cachedViews.length, "onDetached calls");
|
||||
// 4 detached calls: page, stack, button, actionBar
|
||||
TKUnit.assertEqual(listener.receivedEvents.length, 4, "onDetached calls");
|
||||
|
||||
var i
|
||||
var j;
|
||||
// _onDetached event is propagated to nested children first
|
||||
for (i = 0, j = listener.receivedEvents.length - 1; i < listener.receivedEvents.length; i++, j--) {
|
||||
TKUnit.assertEqual(listener.receivedEvents[i].sender, cachedViews[j]);
|
||||
for (i = 0, j = listener.receivedEvents.length - 1; i < listener.receivedEvents.length; i++ , j--) {
|
||||
// check the sender and remove
|
||||
var index = cachedViews.indexOf(<view.View>listener.receivedEvents[i].sender);
|
||||
TKUnit.assert(index >= 0, "_onDetached called for unknown sender");
|
||||
cachedViews.splice(index, 1);
|
||||
|
||||
TKUnit.assertEqual(listener.receivedEvents[i].name, "_onDetached");
|
||||
}
|
||||
|
||||
@@ -146,14 +153,14 @@ export var test_events_onDetachedAndRemovedFromNativeVisualTree_AreRaised_WhenNa
|
||||
};
|
||||
|
||||
var assert = function (views: Array<view.View>) {
|
||||
// one for the Button, one for the StackLayout and one for the Page.
|
||||
|
||||
TKUnit.assertEqual(onDetachedListener.receivedEvents.length, 3, "onDetached calls");
|
||||
// 4 onDetached calls: page, stack, button, actionBar
|
||||
TKUnit.assertEqual(onDetachedListener.receivedEvents.length, 4, "onDetached calls");
|
||||
|
||||
TKUnit.assertEqual(onDetachedListener.receivedEvents[0].name, "_onDetached");
|
||||
TKUnit.assertEqual(onDetachedListener.receivedEvents[0].sender, views[2]);
|
||||
TKUnit.assertEqual(onDetachedListener.receivedEvents[1].sender, views[1]);
|
||||
TKUnit.assertEqual(onDetachedListener.receivedEvents[2].sender, views[0]);
|
||||
TKUnit.assertEqual(onDetachedListener.receivedEvents[0].sender, views[2]); // Button
|
||||
TKUnit.assertEqual(onDetachedListener.receivedEvents[1].sender, views[1]); // Stack
|
||||
TKUnit.assertEqual(onDetachedListener.receivedEvents[2].sender, views[3]); // ActionBar
|
||||
TKUnit.assertEqual(onDetachedListener.receivedEvents[3].sender, views[0]); // Page
|
||||
|
||||
// this is an event fired from CustomLayoutView when a child is removed from the native visual tree
|
||||
// therefore this event is fired for StackLayout and Button (which is inside StackLayout).
|
||||
@@ -233,7 +240,7 @@ export var test_StylePropertiesDefaultValuesCache = function () {
|
||||
|
||||
var defaultLabelFontSize = (<android.widget.TextView>(testLabel.android)).getTextSize();
|
||||
var defaultButtonFontSize = (<android.widget.Button>(testButton.android)).getTextSize();
|
||||
|
||||
|
||||
testLabel.style.fontSize = testValue;
|
||||
testButton.style.fontSize = testValue;
|
||||
|
||||
@@ -248,7 +255,7 @@ export var test_StylePropertiesDefaultValuesCache = function () {
|
||||
|
||||
actualLabelTextSize = (<android.widget.TextView>(testLabel.android)).getTextSize();
|
||||
actualButtonTextSize = (<android.widget.Button>(testButton.android)).getTextSize();
|
||||
|
||||
|
||||
TKUnit.assert(actualLabelTextSize === defaultLabelFontSize, "Label text size should be default!");
|
||||
TKUnit.assert(actualButtonTextSize === defaultButtonFontSize, "Button text size should be default!");
|
||||
};
|
||||
|
||||
@@ -93,13 +93,13 @@ export class ActionBar extends view.View implements dts.ActionBar {
|
||||
}
|
||||
|
||||
this._centerView = value;
|
||||
|
||||
|
||||
if (this._centerView) {
|
||||
this._centerView.style._setValue(style.horizontalAlignmentProperty, enums.HorizontalAlignment.center, observable.ValueSource.Inherited);
|
||||
this._centerView.style._setValue(style.verticalAlignmentProperty, enums.VerticalAlignment.center, observable.ValueSource.Inherited);
|
||||
this._addView(this._centerView);
|
||||
}
|
||||
|
||||
|
||||
this.updateActionBar();
|
||||
}
|
||||
}
|
||||
@@ -288,11 +288,23 @@ export class ActionItemBase extends bindable.Bindable implements dts.ActionItemB
|
||||
this._setValue(ActionItemBase.iconProperty, value);
|
||||
}
|
||||
|
||||
private _actionBar: ActionBar;
|
||||
get actionBar(): ActionBar {
|
||||
return this._actionBar;
|
||||
}
|
||||
set actionBar(value: ActionBar) {
|
||||
if (value !== this._actionBar) {
|
||||
this._actionBar = value;
|
||||
if (this._actionBar) {
|
||||
this.bindingContext = this._actionBar.bindingContext;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public _raiseTap() {
|
||||
this._emit(ActionItem.tapEvent);
|
||||
}
|
||||
|
||||
actionBar: ActionBar;
|
||||
}
|
||||
|
||||
export class ActionItem extends ActionItemBase {
|
||||
|
||||
5
ui/action-bar/action-bar.d.ts
vendored
5
ui/action-bar/action-bar.d.ts
vendored
@@ -4,8 +4,7 @@
|
||||
import dependencyObservable = require("ui/core/dependency-observable");
|
||||
import bindable = require("ui/core/bindable");
|
||||
import pages = require("ui/page");
|
||||
import contentView = require("ui/content-view");
|
||||
|
||||
|
||||
export class ActionBar extends view.View implements view.AddArrayFromBuilder, view.AddChildFromBuilder {
|
||||
title: string;
|
||||
icon: string;
|
||||
@@ -21,7 +20,7 @@
|
||||
|
||||
updateActionBar();
|
||||
|
||||
//@private
|
||||
//@private
|
||||
_updateAndroidActionBar(menu: android.view.IMenu);
|
||||
_onAndroidItemSelected(itemId: number): boolean
|
||||
|
||||
|
||||
@@ -92,9 +92,11 @@ export class Page extends contentView.ContentView implements dts.Page {
|
||||
if (this._actionBar !== value) {
|
||||
if (this._actionBar) {
|
||||
this._actionBar.page = undefined;
|
||||
this._removeView(this._actionBar);
|
||||
}
|
||||
this._actionBar = value;
|
||||
this._actionBar.page = this;
|
||||
this._addView(this._actionBar);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -124,7 +126,7 @@ export class Page extends contentView.ContentView implements dts.Page {
|
||||
cssFileName = fs.path.join(fs.knownFolders.currentApp().path, cssFileName.replace("~/", ""));
|
||||
}
|
||||
if (!this._cssFiles[cssFileName]) {
|
||||
if (fs.File.exists(cssFileName)) {
|
||||
if (fs.File.exists(cssFileName)) {
|
||||
new fileSystemAccess.FileSystemAccess().readText(cssFileName, r => {
|
||||
this._addCssInternal(r, cssFileName);
|
||||
this._cssFiles[cssFileName] = true;
|
||||
@@ -248,4 +250,13 @@ export class Page extends contentView.ContentView implements dts.Page {
|
||||
resetCssValuesFunc(this);
|
||||
view.eachDescendant(this, resetCssValuesFunc);
|
||||
}
|
||||
|
||||
public _addViewToNativeVisualTree(view: view.View): boolean {
|
||||
// ActionBar is added to the native visual tree by default
|
||||
if (view === this.actionBar) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return super._addViewToNativeVisualTree(view);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user