Files
NativeScript/tests/app/ui/list-picker/list-picker-tests.ts
Hristo Hristov 0f14101238 recycling now happens only if nativeView and android properties are not accessed. (#4627)
recycleNativeView filed now accepts: "always" | "never" | "auto". Always will recycle the nativeView no matter if its nativeView or android proprties are accessed. Never will disable recycling. Auto will recycle it only if nativeView and android properties are not accessed.
2017-08-01 15:04:16 +03:00

234 lines
9.8 KiB
TypeScript

import * as TKUnit from "../../TKUnit";
import * as helper from "../helper";
import * as viewModule from "tns-core-modules/ui/core/view";
import * as listPickerTestsNative from "./list-picker-tests-native";
import * as application from "tns-core-modules/application";
// >> article-require-listpicker-module
import * as listPickerModule from "tns-core-modules/ui/list-picker";
// << article-require-listpicker-module
function _createListPicker(): listPickerModule.ListPicker {
// >> article-create-listpicker
var listPicker = new listPickerModule.ListPicker();
// << article-create-listpicker
listPicker.id = "ListPicker";
return listPicker;
}
function _createItems(count: number): Array<number> {
var items = new Array<number>();
for (var i = 0; i < count; i++) {
items.push(i);
}
return items;
}
export function test_recycling() {
helper.nativeView_recycling_test(() => new listPickerModule.ListPicker());
}
export var testWhenlistPickerIsCreatedItemsAreUndefined = function () {
helper.buildUIAndRunTest(_createListPicker(), function (views: Array<viewModule.View>) {
var listPicker = <listPickerModule.ListPicker>views[0];
var expectedValue = undefined;
var actualValue = listPicker.items;
TKUnit.assert(actualValue === expectedValue, "Actual: " + actualValue + "; Expected: " + expectedValue);
});
}
export var testWhenlistPickerIsCreatedSelectedIndexIsUndefined = function () {
helper.buildUIAndRunTest(_createListPicker(), function (views: Array<viewModule.View>) {
var listPicker = <listPickerModule.ListPicker>views[0];
var expectedValue = -1;
var actualValue = listPicker.selectedIndex;
TKUnit.assert(actualValue === expectedValue, "Actual: " + actualValue + "; Expected: " + expectedValue);
});
}
export var testWhenSettingItemsToNonEmptyArrayTheSameAmountOfNativeItemsIsCreated = function () {
helper.buildUIAndRunTest(_createListPicker(), function (views: Array<viewModule.View>) {
var listPicker = <listPickerModule.ListPicker>views[0];
listPicker.items = _createItems(10);
var expectedValue = listPicker.items.length;
var actualValue = listPickerTestsNative.getNativeItemsCount(listPicker);
TKUnit.assert(actualValue === expectedValue, "Actual: " + actualValue + "; Expected: " + expectedValue);
});
}
export var testWhenSettingItemsToEmptyArrayZeroNativeItemsAreCreated = function () {
helper.buildUIAndRunTest(_createListPicker(), function (views: Array<viewModule.View>) {
var listPicker = <listPickerModule.ListPicker>views[0];
listPicker.items = [];
var expectedValue = listPicker.items.length;
var actualValue = listPickerTestsNative.getNativeItemsCount(listPicker);
TKUnit.assert(actualValue === expectedValue, "Actual: " + actualValue + "; Expected: " + expectedValue);
});
}
export var testSelectedIndexBecomesZeroWhenItemsBoundToNonEmptyArray = function () {
helper.buildUIAndRunTest(_createListPicker(), function (views: Array<viewModule.View>) {
var listPicker = <listPickerModule.ListPicker>views[0];
// >> article-binding-listpickeritems
listPicker.items = [1, 2, 3];
// << article-binding-listpickeritems
var expectedValue = 0;
var actualValue = listPicker.selectedIndex;
TKUnit.assert(actualValue === expectedValue, "Actual: " + actualValue + "; Expected: " + expectedValue);
});
}
export var testSelectedIndexBecomesUndefinedWhenItemsBoundToEmptyArray = function () {
helper.buildUIAndRunTest(_createListPicker(), function (views: Array<viewModule.View>) {
var listPicker = <listPickerModule.ListPicker>views[0];
listPicker.items = _createItems(10);
// >> article-selecting-item
listPicker.selectedIndex = 9;
// << article-selecting-item
listPicker.items = [];
var expectedValue = -1;
var actualValue = listPicker.selectedIndex;
TKUnit.assert(actualValue === expectedValue, "Actual: " + actualValue + "; Expected: " + expectedValue);
});
}
export var testSelectedIndexBecomesUndefinedWhenItemsBoundToUndefined = function () {
helper.buildUIAndRunTest(_createListPicker(), function (views: Array<viewModule.View>) {
var listPicker = <listPickerModule.ListPicker>views[0];
listPicker.items = _createItems(10);
listPicker.selectedIndex = 9;
listPicker.items = undefined;
var expectedValue = -1;
var actualValue = listPicker.selectedIndex;
TKUnit.assert(actualValue === expectedValue, "Actual: " + actualValue + "; Expected: " + expectedValue);
});
}
export var testSelectedIndexBecomesUndefinedWhenItemsBoundToNull = function () {
helper.buildUIAndRunTest(_createListPicker(), function (views: Array<viewModule.View>) {
var listPicker = <listPickerModule.ListPicker>views[0];
listPicker.items = _createItems(10);
listPicker.selectedIndex = 9;
listPicker.items = null;
var expectedValue = -1;
var actualValue = listPicker.selectedIndex;
TKUnit.assert(actualValue === expectedValue, "Actual: " + actualValue + "; Expected: " + expectedValue);
});
}
export var testItemsIsResolvedCorrectlyIfSetBeforeViewIsLoaded = function () {
var listPicker = _createListPicker();
var expectedValue = 10;
listPicker.items = _createItems(expectedValue);
listPicker.selectedIndex = 9;
helper.buildUIAndRunTest(listPicker, function (views: Array<viewModule.View>) {
var listPicker = <listPickerModule.ListPicker>views[0];
var actualValue = listPicker.items.length;
TKUnit.assert(actualValue === expectedValue, "Actual: " + actualValue + "; Expected: " + expectedValue);
});
}
export var testSelectedIndexIsResolvedCorrectlyIfSetBeforeViewIsLoaded = function () {
var listPicker = _createListPicker();
listPicker.items = _createItems(10);
var expectedValue = 9;
listPicker.selectedIndex = expectedValue;
helper.buildUIAndRunTest(listPicker, function (views: Array<viewModule.View>) {
var listPicker = <listPickerModule.ListPicker>views[0];
var actualValue = listPicker.selectedIndex;
TKUnit.assert(actualValue === expectedValue, "Actual: " + actualValue + "; Expected: " + expectedValue);
});
}
// export var testSettingNegativeSelectedIndexShouldThrow = function () {
// var listPicker = _createListPicker();
// helper.buildUIAndRunTest(listPicker, function (views: Array<viewModule.View>) {
// var listPicker = <listPickerModule.ListPicker>views[0];
// listPicker.items = _createItems(10);
// TKUnit.assertThrows(function () {
// listPicker.selectedIndex = -1;
// }, "Setting selectedIndex to a negative number should throw.");
// });
// }
// export var testSettingSelectedIndexLargerThanCountShouldThrow = function () {
// var listPicker = _createListPicker();
// helper.buildUIAndRunTest(listPicker, function (views: Array<viewModule.View>) {
// var listPicker = <listPickerModule.ListPicker>views[0];
// listPicker.items = _createItems(10);
// TKUnit.assertThrows(function () {
// listPicker.selectedIndex = 10;
// }, "Setting selectedIndex to a number larger than item count should throw.");
// });
// }
export var testWhenSelectingAnItemNativelySelectedIndexIsUpdatedProperly = function () {
let listPicker = _createListPicker();
let mainPage = helper.getCurrentPage();
listPicker.items = _createItems(2);
mainPage.content = listPicker;
let expectedValue = 1;
listPickerTestsNative.selectNativeItem(listPicker, expectedValue);
TKUnit.waitUntilReady(() => listPicker.selectedIndex === 1);
let actualValue = listPicker.selectedIndex;
TKUnit.assertEqual(actualValue, expectedValue);
}
export var test_Android_MaxValueIsOneLessThanItemsCount = function () {
if (!application.android) {
return;
}
helper.buildUIAndRunTest(_createListPicker(), function (views: Array<viewModule.View>) {
var listPicker = <listPickerModule.ListPicker>views[0];
listPicker.items = ["One", "Two", "Three"];
var expectedValue = listPicker.items.length - 1;
var actualValue = listPicker.nativeViewProtected.getMaxValue();
TKUnit.assertEqual(actualValue, expectedValue);
});
}
export var test_Android_WhenItemsAreEmptyNativeControlDoesNotShowZero = function () {
if (!application.android) {
return;
}
helper.buildUIAndRunTest(_createListPicker(), function (views: Array<viewModule.View>) {
var listPicker = <listPickerModule.ListPicker>views[0];
var expectedValue = " ";
var actualValue = listPicker.nativeViewProtected.editText.getText().toString();
TKUnit.assertEqual(actualValue, expectedValue);
});
}
export var test_Android_WhenBoundToSingleElementArrayEditTextIsUpdatedProperly = function () {
if (!application.android) {
return;
}
helper.buildUIAndRunTest(_createListPicker(), function (views: Array<viewModule.View>) {
var listPicker = <listPickerModule.ListPicker>views[0];
listPicker.items = ["One"];
var expectedValue = "One";
var actualValue = listPicker.nativeViewProtected.editText.getText().toString();
TKUnit.assertEqual(actualValue, expectedValue);
});
}
export var test_Android_WhenSelectedIndexChangesEditTextIsUpdatedProperly = function () {
if (!application.android) {
return;
}
helper.buildUIAndRunTest(_createListPicker(), function (views: Array<viewModule.View>) {
var listPicker = <listPickerModule.ListPicker>views[0];
listPicker.items = ["One", "Two"];
listPicker.selectedIndex = 1;
var expectedValue = "Two";
var actualValue = listPicker.nativeViewProtected.editText.getText().toString();
TKUnit.assertEqual(actualValue, expectedValue);
});
}