mirror of
https://github.com/NativeScript/NativeScript.git
synced 2025-08-17 21:01:34 +08:00
Merge pull request #3448 from NativeScript/nnikolov/SegmentedBarTestsFix
SegmentedBar tests fixed.
This commit is contained in:
@ -208,8 +208,8 @@ export function test_findFileMatch_with_multiple_matches_loads_by_priority() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function testTemplate(candidates: Array<string>, context: resolver.PlatformContext, expected: string) {
|
function testTemplate(candidates: Array<string>, context: resolver.PlatformContext, expected: string) {
|
||||||
//var result = resolver._findFileMatch("test", ".xml", candidates, context);
|
var result = resolver._findFileMatch("test", ".xml", candidates, context);
|
||||||
//TKUnit.assertEqual(result, expected, "File path");
|
TKUnit.assertEqual(result, expected, "File path");
|
||||||
}
|
}
|
||||||
|
|
||||||
var testFilePath = "~/file-name-resolver-tests/files/test".replace("~", fs.knownFolders.currentApp().path);
|
var testFilePath = "~/file-name-resolver-tests/files/test".replace("~", fs.knownFolders.currentApp().path);
|
||||||
|
@ -93,7 +93,7 @@ allTests["TIME-PICKER"] = require("./ui/time-picker/time-picker-tests");
|
|||||||
// allTests["HTML-VIEW"] = require("./ui/html-view/html-view-tests");
|
// allTests["HTML-VIEW"] = require("./ui/html-view/html-view-tests");
|
||||||
// allTests["REPEATER"] = require("./ui/repeater/repeater-tests");
|
// allTests["REPEATER"] = require("./ui/repeater/repeater-tests");
|
||||||
// allTests["SEARCH-BAR"] = require('./ui/search-bar/search-bar-tests');
|
// allTests["SEARCH-BAR"] = require('./ui/search-bar/search-bar-tests');
|
||||||
// allTests["SEGMENTED-BAR"] = require("./ui/segmented-bar/segmented-bar-tests");
|
allTests["SEGMENTED-BAR"] = require("./ui/segmented-bar/segmented-bar-tests");
|
||||||
// allTests["ANIMATION"] = require("./ui/animation/animation-tests");
|
// allTests["ANIMATION"] = require("./ui/animation/animation-tests");
|
||||||
// allTests["CSS-ANIMATION"] = require("./ui/animation/css-animation-tests");
|
// allTests["CSS-ANIMATION"] = require("./ui/animation/css-animation-tests");
|
||||||
|
|
||||||
|
@ -7,11 +7,16 @@ export function getNativeItemsCount(bar: segmentedBarModule.SegmentedBar): numbe
|
|||||||
export function checkNativeItemsTextColor(bar: segmentedBarModule.SegmentedBar): boolean {
|
export function checkNativeItemsTextColor(bar: segmentedBarModule.SegmentedBar): boolean {
|
||||||
var isValid = true;
|
var isValid = true;
|
||||||
|
|
||||||
for (var tabIndex = 0; tabIndex < bar.android.getTabWidget().getTabCount(); tabIndex++) {
|
// for (var tabIndex = 0; tabIndex < bar.android.getTabWidget().getTabCount(); tabIndex++) {
|
||||||
var tabChild = <android.view.ViewGroup>bar.android.getTabWidget().getChildTabViewAt(tabIndex);
|
// var tabChild = <android.view.ViewGroup>bar.android.getTabWidget().getChildTabViewAt(tabIndex);
|
||||||
var t = <android.widget.TextView>tabChild.getChildAt(1);
|
// var t = <android.widget.TextView>tabChild.getChildAt(1);
|
||||||
|
|
||||||
isValid = bar.color && bar.color.android === t.getCurrentTextColor();
|
// isValid = bar.color && bar.color.android === t.getCurrentTextColor();
|
||||||
|
// }
|
||||||
|
|
||||||
|
for(let i = 0, itemsLength = bar.items.length; i < itemsLength; i++) {
|
||||||
|
let textView = <android.widget.TextView>bar.items[0].nativeView;
|
||||||
|
isValid = bar.color && bar.color.android === textView.getCurrentTextColor();
|
||||||
}
|
}
|
||||||
|
|
||||||
return isValid;
|
return isValid;
|
||||||
|
@ -40,7 +40,7 @@ export var testWhenSegmentedBarIsCreatedItemsAreUndefined = function () {
|
|||||||
export var testWhenSegmentedBarIsCreatedSelectedIndexIsUndefined = function () {
|
export var testWhenSegmentedBarIsCreatedSelectedIndexIsUndefined = function () {
|
||||||
buildUIAndRunTest(_createSegmentedBar(), function (views: Array<View>) {
|
buildUIAndRunTest(_createSegmentedBar(), function (views: Array<View>) {
|
||||||
var segmentedBar = <segmentedBarModule.SegmentedBar>views[0];
|
var segmentedBar = <segmentedBarModule.SegmentedBar>views[0];
|
||||||
var expectedValue = undefined;
|
var expectedValue = -1;
|
||||||
var actualValue = segmentedBar.selectedIndex;
|
var actualValue = segmentedBar.selectedIndex;
|
||||||
TKUnit.assert(actualValue === expectedValue, "Actual: " + actualValue + "; Expected: " + expectedValue);
|
TKUnit.assert(actualValue === expectedValue, "Actual: " + actualValue + "; Expected: " + expectedValue);
|
||||||
});
|
});
|
||||||
@ -57,19 +57,27 @@ export var testWhenSettingItemsToNonEmptyArrayTheSameAmountOfNativeItemsIsCreate
|
|||||||
}
|
}
|
||||||
|
|
||||||
export var testWhenItemsAreBoundTheTextColorIsPreserved = function () {
|
export var testWhenItemsAreBoundTheTextColorIsPreserved = function () {
|
||||||
buildUIAndRunTest(_createSegmentedBar(), function (views: Array<View>) {
|
var segmentedBar = _createSegmentedBar();
|
||||||
var segmentedBar = <segmentedBarModule.SegmentedBar>views[0];
|
segmentedBar.color = new Color("red");
|
||||||
|
|
||||||
|
buildUIAndRunTest(segmentedBar, function (views: Array<View>) {
|
||||||
segmentedBar.color = new Color("red");
|
segmentedBar.color = new Color("red");
|
||||||
|
|
||||||
var model = new Observable();
|
var model = new Observable();
|
||||||
model.set("items", [{ title: "One" }, { title: "Two" }, { title: "Three" }]);
|
let firstSegmentedBarItem = new segmentedBarModule.SegmentedBarItem();
|
||||||
|
firstSegmentedBarItem.title = "One";
|
||||||
|
let secondSegmentedBarItem = new segmentedBarModule.SegmentedBarItem();
|
||||||
|
secondSegmentedBarItem.title = "Two";
|
||||||
|
let thirdSegmentedBarItem = new segmentedBarModule.SegmentedBarItem();
|
||||||
|
thirdSegmentedBarItem.title = "Three";
|
||||||
|
model.set("items", [firstSegmentedBarItem, secondSegmentedBarItem, thirdSegmentedBarItem]);
|
||||||
var options: BindingOptions = {
|
var options: BindingOptions = {
|
||||||
sourceProperty: "items",
|
sourceProperty: "items",
|
||||||
targetProperty: "items"
|
targetProperty: "items"
|
||||||
}
|
}
|
||||||
|
|
||||||
segmentedBar.bind(options, model);
|
segmentedBar.bind(options, model);
|
||||||
|
|
||||||
TKUnit.assert(segmentedBarTestsNative.checkNativeItemsTextColor(segmentedBar), "Items text color not preserved" + "; Expected: " + segmentedBar.color);
|
TKUnit.assert(segmentedBarTestsNative.checkNativeItemsTextColor(segmentedBar), "Items text color not preserved" + "; Expected: " + segmentedBar.color);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -114,7 +122,7 @@ export var testSelectedIndexBecomesUndefinedWhenItemsBoundToEmptyArray = functio
|
|||||||
segmentedBar.selectedIndex = 9;
|
segmentedBar.selectedIndex = 9;
|
||||||
// << artcile-selecting-item
|
// << artcile-selecting-item
|
||||||
segmentedBar.items = [];
|
segmentedBar.items = [];
|
||||||
var expectedValue = undefined;
|
var expectedValue = -1;
|
||||||
var actualValue = segmentedBar.selectedIndex;
|
var actualValue = segmentedBar.selectedIndex;
|
||||||
TKUnit.assert(actualValue === expectedValue, "Actual: " + actualValue + "; Expected: " + expectedValue);
|
TKUnit.assert(actualValue === expectedValue, "Actual: " + actualValue + "; Expected: " + expectedValue);
|
||||||
});
|
});
|
||||||
@ -126,7 +134,7 @@ export var testSelectedIndexBecomesUndefinedWhenItemsBoundToUndefined = function
|
|||||||
segmentedBar.items = _createItems(10);
|
segmentedBar.items = _createItems(10);
|
||||||
segmentedBar.selectedIndex = 9;
|
segmentedBar.selectedIndex = 9;
|
||||||
segmentedBar.items = undefined;
|
segmentedBar.items = undefined;
|
||||||
var expectedValue = undefined;
|
var expectedValue = -1;
|
||||||
var actualValue = segmentedBar.selectedIndex;
|
var actualValue = segmentedBar.selectedIndex;
|
||||||
TKUnit.assert(actualValue === expectedValue, "Actual: " + actualValue + "; Expected: " + expectedValue);
|
TKUnit.assert(actualValue === expectedValue, "Actual: " + actualValue + "; Expected: " + expectedValue);
|
||||||
});
|
});
|
||||||
@ -138,7 +146,7 @@ export var testSelectedIndexBecomesUndefinedWhenItemsBoundToNull = function () {
|
|||||||
segmentedBar.items = _createItems(10);
|
segmentedBar.items = _createItems(10);
|
||||||
segmentedBar.selectedIndex = 9;
|
segmentedBar.selectedIndex = 9;
|
||||||
segmentedBar.items = null;
|
segmentedBar.items = null;
|
||||||
var expectedValue = undefined;
|
var expectedValue = -1;
|
||||||
var actualValue = segmentedBar.selectedIndex;
|
var actualValue = segmentedBar.selectedIndex;
|
||||||
TKUnit.assert(actualValue === expectedValue, "Actual: " + actualValue + "; Expected: " + expectedValue);
|
TKUnit.assert(actualValue === expectedValue, "Actual: " + actualValue + "; Expected: " + expectedValue);
|
||||||
});
|
});
|
||||||
@ -168,29 +176,6 @@ export var testSelectedIndexIsResolvedCorrectlyIfSetBeforeViewIsLoaded = functio
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
export var testSettingNegativeSelectedIndexShouldThrow = function () {
|
|
||||||
var segmentedBar = _createSegmentedBar();
|
|
||||||
buildUIAndRunTest(segmentedBar, function (views: Array<View>) {
|
|
||||||
var segmentedBar = <segmentedBarModule.SegmentedBar>views[0];
|
|
||||||
segmentedBar.items = _createItems(10);
|
|
||||||
|
|
||||||
TKUnit.assertThrows(function () {
|
|
||||||
segmentedBar.selectedIndex = -1;
|
|
||||||
}, "Setting selectedIndex to a negative number should throw.");
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
export var testSettingSelectedIndexLargerThanCountShouldThrow = function () {
|
|
||||||
var segmentedBar = _createSegmentedBar();
|
|
||||||
buildUIAndRunTest(segmentedBar, function (views: Array<View>) {
|
|
||||||
var segmentedBar = <segmentedBarModule.SegmentedBar>views[0];
|
|
||||||
segmentedBar.items = _createItems(10);
|
|
||||||
TKUnit.assertThrows(function () {
|
|
||||||
segmentedBar.selectedIndex = 10;
|
|
||||||
}, "Setting selectedIndex to a larger number should throw.");
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
export var testSelectedIndexChangedIsReisedCorrectlyIfSelectedIndexIsSet = function () {
|
export var testSelectedIndexChangedIsReisedCorrectlyIfSelectedIndexIsSet = function () {
|
||||||
var oldIndex;
|
var oldIndex;
|
||||||
var newIndex;
|
var newIndex;
|
||||||
@ -252,18 +237,19 @@ export var testSelectedIndexChangedIsReisedCorrectlyIfSelectedIndexIsSetNative =
|
|||||||
export var testSelectedIndexChangedIsRaisedCorrectlyIfItemsNotBound = function () {
|
export var testSelectedIndexChangedIsRaisedCorrectlyIfItemsNotBound = function () {
|
||||||
const segmentedBar = _createSegmentedBar();
|
const segmentedBar = _createSegmentedBar();
|
||||||
let newSelectedIndex = 0;
|
let newSelectedIndex = 0;
|
||||||
segmentedBar.on("selectedIndexChange", () => {
|
segmentedBar.on(segmentedBarModule.SegmentedBar.selectedIndexChangedEvent, () => {
|
||||||
newSelectedIndex = segmentedBar.selectedIndex;
|
newSelectedIndex = segmentedBar.selectedIndex;
|
||||||
});
|
});
|
||||||
|
|
||||||
buildUIAndRunTest(segmentedBar, function (views: Array<View>) {
|
const item0 = new segmentedBarModule.SegmentedBarItem();
|
||||||
const item0 = new segmentedBarModule.SegmentedBarItem();
|
item0.title = "item 0";
|
||||||
item0.title = "item 0";
|
segmentedBar._addChildFromBuilder("SegmentedBarItem", item0);
|
||||||
segmentedBar._addChildFromBuilder("SegmentedBarItem", item0);
|
|
||||||
|
|
||||||
const item1 = new segmentedBarModule.SegmentedBarItem();
|
const item1 = new segmentedBarModule.SegmentedBarItem();
|
||||||
item1.title = "item 1";
|
item1.title = "item 1";
|
||||||
segmentedBar._addChildFromBuilder("SegmentedBarItem", item1);
|
segmentedBar._addChildFromBuilder("SegmentedBarItem", item1);
|
||||||
|
|
||||||
|
buildUIAndRunTest(segmentedBar, function (views: Array<View>) {
|
||||||
TKUnit.assertEqual(segmentedBar.items.length, 2);
|
TKUnit.assertEqual(segmentedBar.items.length, 2);
|
||||||
|
|
||||||
segmentedBarTestsNative.setNativeSelectedIndex(segmentedBar, 1);
|
segmentedBarTestsNative.setNativeSelectedIndex(segmentedBar, 1);
|
||||||
|
@ -923,7 +923,6 @@ export function propagateInheritedProperties(view: ViewBase): void {
|
|||||||
if (currentValueSource <= ValueSource.Inherited) {
|
if (currentValueSource <= ValueSource.Inherited) {
|
||||||
prop.setInheritedValue.call(child, pair.value);
|
prop.setInheritedValue.call(child, pair.value);
|
||||||
}
|
}
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
for (let pair of inheritableCssPropertyValues) {
|
for (let pair of inheritableCssPropertyValues) {
|
||||||
@ -934,8 +933,8 @@ export function propagateInheritedProperties(view: ViewBase): void {
|
|||||||
if (currentValueSource <= ValueSource.Inherited) {
|
if (currentValueSource <= ValueSource.Inherited) {
|
||||||
prop.setInheritedValue.call(style, pair.value, ValueSource.Inherited);
|
prop.setInheritedValue.call(style, pair.value, ValueSource.Inherited);
|
||||||
}
|
}
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
return true;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -86,6 +86,9 @@ export const selectedIndexProperty = new CoercibleProperty<SegmentedBarBase, num
|
|||||||
let items = target.items;
|
let items = target.items;
|
||||||
if (items) {
|
if (items) {
|
||||||
let max = items.length - 1;
|
let max = items.length - 1;
|
||||||
|
if (value < 0) {
|
||||||
|
value = 0;
|
||||||
|
}
|
||||||
if (value > max) {
|
if (value > max) {
|
||||||
value = max;
|
value = max;
|
||||||
}
|
}
|
||||||
|
@ -48,6 +48,14 @@ function setBackground(view: android.view.View, background: android.graphics.dra
|
|||||||
export class SegmentedBarItem extends SegmentedBarItemBase {
|
export class SegmentedBarItem extends SegmentedBarItemBase {
|
||||||
private _textView: android.widget.TextView;
|
private _textView: android.widget.TextView;
|
||||||
|
|
||||||
|
get nativeView(): android.widget.TextView {
|
||||||
|
return this._textView;
|
||||||
|
}
|
||||||
|
|
||||||
|
get android(): android.widget.TextView {
|
||||||
|
return this._textView;
|
||||||
|
}
|
||||||
|
|
||||||
public setNativeView(textView: android.widget.TextView): void {
|
public setNativeView(textView: android.widget.TextView): void {
|
||||||
this._textView = textView;
|
this._textView = textView;
|
||||||
if (textView) {
|
if (textView) {
|
||||||
@ -84,7 +92,7 @@ export class SegmentedBarItem extends SegmentedBarItemBase {
|
|||||||
return this._textView.getCurrentTextColor();
|
return this._textView.getCurrentTextColor();
|
||||||
}
|
}
|
||||||
set [colorProperty.native](value: Color | number) {
|
set [colorProperty.native](value: Color | number) {
|
||||||
let color = typeof value === "Color" ? value.android : value;
|
let color = value instanceof Color ? value.android : value;
|
||||||
this._textView.setTextColor(color);
|
this._textView.setTextColor(color);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -148,7 +156,7 @@ class TabChangeListener extends java.lang.Object implements android.widget.TabHo
|
|||||||
|
|
||||||
onTabChanged(id: string): void {
|
onTabChanged(id: string): void {
|
||||||
let owner = this.owner.get();
|
let owner = this.owner.get();
|
||||||
if (owner) {
|
if (owner && owner.shouldChangeSelectedIndex()) {
|
||||||
owner.selectedIndex = parseInt(id);
|
owner.selectedIndex = parseInt(id);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -185,6 +193,11 @@ export class SegmentedBar extends SegmentedBarBase {
|
|||||||
private _android: android.widget.TabHost;
|
private _android: android.widget.TabHost;
|
||||||
private listener: android.widget.TabHost.OnTabChangeListener;
|
private listener: android.widget.TabHost.OnTabChangeListener;
|
||||||
private tabContentFactory: android.widget.TabHost.TabContentFactory;
|
private tabContentFactory: android.widget.TabHost.TabContentFactory;
|
||||||
|
private _addingTab: boolean;
|
||||||
|
|
||||||
|
public shouldChangeSelectedIndex(): boolean {
|
||||||
|
return !this._addingTab;
|
||||||
|
}
|
||||||
|
|
||||||
public _createNativeView() {
|
public _createNativeView() {
|
||||||
ensureTabHostClass();
|
ensureTabHostClass();
|
||||||
@ -210,6 +223,7 @@ export class SegmentedBar extends SegmentedBarBase {
|
|||||||
|
|
||||||
this._android.addView(tabHostLayout);
|
this._android.addView(tabHostLayout);
|
||||||
this._android.setup();
|
this._android.setup();
|
||||||
|
this._android.setOnTabChangedListener(this.listener);
|
||||||
}
|
}
|
||||||
|
|
||||||
get android(): android.widget.TabHost {
|
get android(): android.widget.TabHost {
|
||||||
@ -222,17 +236,11 @@ export class SegmentedBar extends SegmentedBarBase {
|
|||||||
tab.setContent(this.tabContentFactory);
|
tab.setContent(this.tabContentFactory);
|
||||||
|
|
||||||
let tabHost = this.android;
|
let tabHost = this.android;
|
||||||
|
this._addingTab = true;
|
||||||
tabHost.addTab(tab);
|
tabHost.addTab(tab);
|
||||||
|
this._addingTab = false;
|
||||||
// TODO: Why do we need to call this for every added tab?
|
|
||||||
// this.resetNativeListener();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// private resetNativeListener() {
|
|
||||||
// this.android.setOnTabChangedListener(null);
|
|
||||||
// this.android.setOnTabChangedListener(this.listener);
|
|
||||||
// }
|
|
||||||
|
|
||||||
get [selectedIndexProperty.native](): number {
|
get [selectedIndexProperty.native](): number {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user