mirror of
https://github.com/NativeScript/NativeScript.git
synced 2025-08-16 20:11:24 +08:00
Merge branch 'master' of https://github.com/NativeScript/NativeScript
This commit is contained in:
@ -7,7 +7,7 @@ import uiTestModule = require("./ui-test");
|
||||
|
||||
frameModule.Frame.defaultAnimatedNavigation = false;
|
||||
|
||||
function isRunningOnEmulator(): boolean {
|
||||
export function isRunningOnEmulator(): boolean {
|
||||
// This checks are not good enough to be added to modules but keeps unittests green.
|
||||
|
||||
if (platform.device.os === platform.platformNames.android) {
|
||||
@ -61,6 +61,7 @@ allTests["IMAGE"] = require("./ui/image/image-tests");
|
||||
allTests["SLIDER"] = require("./ui/slider/slider-tests");
|
||||
allTests["SWITCH"] = require("./ui/switch/switch-tests");
|
||||
allTests["PROGRESS"] = require("./ui/progress/progress-tests");
|
||||
allTests["PLACEHOLDER"] = require("./ui/placeholder/placeholder-tests");
|
||||
allTests["PAGE"] = require("./ui/page/page-tests");
|
||||
allTests["LISTVIEW"] = require("./ui/list-view/list-view-tests");
|
||||
allTests["ACTIVITY-INDICATOR"] = require("./ui/activity-indicator/activity-indicator-tests");
|
||||
|
@ -6,6 +6,7 @@ import observable = require("data/observable");
|
||||
import types = require("utils/types");
|
||||
import platform = require("platform");
|
||||
import utils = require("utils/utils");
|
||||
import testRunner = require("../../testRunner");
|
||||
|
||||
// <snippet module="ui/list-view" title="list-view">
|
||||
// # ListView
|
||||
@ -633,6 +634,9 @@ export function test_ConverterIsCalledJustOnce_onAddingItemsToListView() {
|
||||
}
|
||||
|
||||
export function test_no_memory_leak_when_items_is_regular_array() {
|
||||
if (testRunner.isRunningOnEmulator()) {
|
||||
return;
|
||||
}
|
||||
var createFunc = function (): listViewModule.ListView {
|
||||
var listView = new listViewModule.ListView();
|
||||
listView.items = FEW_ITEMS;
|
||||
@ -645,6 +649,9 @@ export function test_no_memory_leak_when_items_is_regular_array() {
|
||||
}
|
||||
|
||||
export function test_no_memory_leak_when_items_is_observable_array() {
|
||||
if (testRunner.isRunningOnEmulator()) {
|
||||
return;
|
||||
}
|
||||
// Keep the reference to the observable array to test the weakEventListener
|
||||
var colors = new observableArray.ObservableArray(["red", "green", "blue"]);
|
||||
|
||||
|
@ -378,3 +378,30 @@ export var test_Observable_WhenCreatedWithJSON_PropertyChangedWithBracketsNotati
|
||||
|
||||
TKUnit.assert(receivedCount === 1, "PropertyChanged event not raised properly.");
|
||||
}
|
||||
|
||||
export function test_AddingTwoEventHandlersAndRemovingWithinHandlerShouldRaiseAllEvents() {
|
||||
var observableInstance = new observable.Observable();
|
||||
var firstHandlerCalled = false;
|
||||
var secondHandlerCalled= false;
|
||||
|
||||
var firstHandler = function (args) {
|
||||
observableInstance.off(observable.Observable.propertyChangeEvent, firstHandler, firstObserver);
|
||||
firstHandlerCalled = true;
|
||||
}
|
||||
|
||||
var secondHandler = function (args) {
|
||||
observableInstance.off(observable.Observable.propertyChangeEvent, secondHandler, secondObserver);
|
||||
secondHandlerCalled = true;
|
||||
}
|
||||
|
||||
var firstObserver = new observable.Observable();
|
||||
var secondObserver = new observable.Observable();
|
||||
|
||||
observableInstance.on(observable.Observable.propertyChangeEvent, firstHandler, firstObserver);
|
||||
observableInstance.on(observable.Observable.propertyChangeEvent, secondHandler, secondObserver);
|
||||
|
||||
observableInstance.set("someProperty", "some value");
|
||||
|
||||
TKUnit.assertEqual(firstHandlerCalled, true);
|
||||
TKUnit.assertEqual(secondHandlerCalled, true);
|
||||
}
|
||||
|
78
apps/tests/ui/placeholder/placeholder-tests.ts
Normal file
78
apps/tests/ui/placeholder/placeholder-tests.ts
Normal file
@ -0,0 +1,78 @@
|
||||
import TKUnit = require("../../TKUnit");
|
||||
import platform = require("platform");
|
||||
import utils = require("utils/utils");
|
||||
import helper = require("../helper");
|
||||
import viewModule = require("ui/core/view");
|
||||
|
||||
// <snippet module="ui/placeholder" title="placeholder">
|
||||
// # Placeholder
|
||||
// Using the placeholder requires the Placeholder module.
|
||||
// ``` JavaScript
|
||||
import placeholderModule = require("ui/placeholder");
|
||||
// ```
|
||||
|
||||
// Creating native view for the Placeholder using creatingView event.
|
||||
//```XML
|
||||
// <Page>
|
||||
// {%raw%}<Placeholder creatingView="creatingView" />{%endraw%}
|
||||
// </Page>
|
||||
//```
|
||||
//```JS
|
||||
//var platform = require("platform");
|
||||
//var utils = require("utils/utils");
|
||||
//
|
||||
//function creatingView(args) {
|
||||
// var nativeView;
|
||||
// if (platform.device.os === platform.platformNames.ios) {
|
||||
// nativeView = new UITextView();
|
||||
// nativeView.text = "Native";
|
||||
// } else if (platform.device.os === platform.platformNames.android) {
|
||||
// nativeView = new android.widget.TextView(utils.ad.getApplicationContext());
|
||||
// nativeView.setText("Native");
|
||||
// }
|
||||
//
|
||||
// args.view = nativeView;
|
||||
//}
|
||||
//
|
||||
//exports.creatingView = creatingView;
|
||||
//```
|
||||
// </snippet>
|
||||
|
||||
export function test_placeholder_creatingView() {
|
||||
var nativeView;
|
||||
|
||||
var p = new placeholderModule.Placeholder();
|
||||
p.id = "test";
|
||||
p.on(placeholderModule.Placeholder.creatingViewEvent, (args: placeholderModule.CreateViewEventData) => {
|
||||
if (platform.device.os === platform.platformNames.ios) {
|
||||
nativeView = new UITextView();
|
||||
nativeView.text = "Native";
|
||||
} else if (platform.device.os === platform.platformNames.android) {
|
||||
nativeView = new android.widget.TextView(utils.ad.getApplicationContext());
|
||||
nativeView.setText("Native");
|
||||
}
|
||||
|
||||
args.view = nativeView;
|
||||
});
|
||||
|
||||
if (platform.device.os === platform.platformNames.ios) {
|
||||
TKUnit.assert(p.ios instanceof UITextView, "ios property should be UITextView. Current value: " + p.ios);
|
||||
} else if (platform.device.os === platform.platformNames.android) {
|
||||
p._emit("creatingView");
|
||||
TKUnit.assert(nativeView instanceof android.widget.TextView, "Native view should be android.widget.TextView. Current value: " + nativeView);
|
||||
}
|
||||
}
|
||||
|
||||
export function test_placeholder_will_not_crash_wihout_creatingView() {
|
||||
var p = new placeholderModule.Placeholder();
|
||||
|
||||
function testAction(views: Array<viewModule.View>) {
|
||||
if (platform.device.os === platform.platformNames.ios) {
|
||||
TKUnit.assert(p.ios === undefined, "ios property should be undefined. Current value: " + p.ios);
|
||||
} else if (platform.device.os === platform.platformNames.android) {
|
||||
TKUnit.assert(p.android === undefined, "android view should be undefined. Current value: " + p.android);
|
||||
}
|
||||
};
|
||||
|
||||
helper.buildUIAndRunTest(p, testAction);
|
||||
}
|
@ -2,7 +2,7 @@
|
||||
<Repeater id="repeater" items="{{ items }}">
|
||||
<Repeater.itemTemplate>
|
||||
<GridLayout width="94" height="94" >
|
||||
<Label text="{{ $parents['Page'].parentViewProperty }}" tap="{{ tapItem }}" />
|
||||
<Label text="{{ sourceProperty = $parents['Page'].parentViewProperty }}" tap="{{ tapItem }}" />
|
||||
</GridLayout>
|
||||
</Repeater.itemTemplate>
|
||||
</Repeater>
|
||||
|
@ -1,4 +1,5 @@
|
||||
import TKUnit = require("../../TKUnit");
|
||||
import testRunner = require("../../testRunner");
|
||||
import helper = require("../helper");
|
||||
import viewModule = require("ui/core/view");
|
||||
import pagesModule = require("ui/page");
|
||||
@ -427,6 +428,9 @@ export var testNativeTextAlignmentFromLocal = function () {
|
||||
}
|
||||
|
||||
export var testMemoryLeak = function () {
|
||||
if (testRunner.isRunningOnEmulator()) {
|
||||
return;
|
||||
}
|
||||
helper.buildUIWithWeakRefAndInteract(_createTextFieldFunc, function (textField) {
|
||||
textFieldTestsNative.typeTextNatively(textField, "Hello, world!");
|
||||
});
|
||||
|
@ -1,4 +1,5 @@
|
||||
import TKUnit = require("../../TKUnit");
|
||||
import testRunner = require("../../testRunner");
|
||||
import helper = require("../helper");
|
||||
import viewModule = require("ui/core/view");
|
||||
import pagesModule = require("ui/page");
|
||||
@ -468,6 +469,9 @@ export var testNativeTextAlignmentFromLocal = function () {
|
||||
}
|
||||
|
||||
export var testMemoryLeak = function () {
|
||||
if (testRunner.isRunningOnEmulator()) {
|
||||
return;
|
||||
}
|
||||
helper.buildUIWithWeakRefAndInteract(_createTextViewFunc, function (textView) {
|
||||
textViewTestsNative.typeTextNatively(textView, "Hello, world!");
|
||||
});
|
||||
|
@ -603,7 +603,7 @@ export function test_parse_ShouldParseNestedListViewInListViewTemplate() {
|
||||
}
|
||||
|
||||
export function test_parse_ShouldEvaluateEventBindingExpressionInListViewTemplate() {
|
||||
var p = <Page>builder.parse('<Page xmlns="http://www.nativescript.org/tns.xsd"><ListView items="{{ items }}" itemLoading="{{ itemLoading }}"><ListView.itemTemplate><SegmentedBar items="{{ $parents[\'ListView\'].items }}" selectedIndexChanged="{{ $parents[\'ListView\'].changed }}" /></ListView.itemTemplate></ListView></Page>');
|
||||
var p = <Page>builder.parse('<Page xmlns="http://www.nativescript.org/tns.xsd"><ListView items="{{ items }}" itemLoading="{{ itemLoading }}"><ListView.itemTemplate><SegmentedBar items="{{ sourceProperty = $parents[\'ListView\'].items }}" selectedIndexChanged="{{ sourceProperty = $parents[\'ListView\'].changed }}" /></ListView.itemTemplate></ListView></Page>');
|
||||
|
||||
function testAction(views: Array<viewModule.View>) {
|
||||
var ctrl: segmentedBar.SegmentedBar;
|
||||
|
Reference in New Issue
Block a user