mirror of
https://github.com/NativeScript/NativeScript.git
synced 2025-08-18 05:18:39 +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) {
|
||||
//var result = resolver._findFileMatch("test", ".xml", candidates, context);
|
||||
//TKUnit.assertEqual(result, expected, "File path");
|
||||
var result = resolver._findFileMatch("test", ".xml", candidates, context);
|
||||
TKUnit.assertEqual(result, expected, "File 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["REPEATER"] = require("./ui/repeater/repeater-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["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 {
|
||||
var isValid = true;
|
||||
|
||||
for (var tabIndex = 0; tabIndex < bar.android.getTabWidget().getTabCount(); tabIndex++) {
|
||||
var tabChild = <android.view.ViewGroup>bar.android.getTabWidget().getChildTabViewAt(tabIndex);
|
||||
var t = <android.widget.TextView>tabChild.getChildAt(1);
|
||||
// for (var tabIndex = 0; tabIndex < bar.android.getTabWidget().getTabCount(); tabIndex++) {
|
||||
// var tabChild = <android.view.ViewGroup>bar.android.getTabWidget().getChildTabViewAt(tabIndex);
|
||||
// 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;
|
||||
|
@ -40,7 +40,7 @@ export var testWhenSegmentedBarIsCreatedItemsAreUndefined = function () {
|
||||
export var testWhenSegmentedBarIsCreatedSelectedIndexIsUndefined = function () {
|
||||
buildUIAndRunTest(_createSegmentedBar(), function (views: Array<View>) {
|
||||
var segmentedBar = <segmentedBarModule.SegmentedBar>views[0];
|
||||
var expectedValue = undefined;
|
||||
var expectedValue = -1;
|
||||
var actualValue = segmentedBar.selectedIndex;
|
||||
TKUnit.assert(actualValue === expectedValue, "Actual: " + actualValue + "; Expected: " + expectedValue);
|
||||
});
|
||||
@ -57,19 +57,27 @@ export var testWhenSettingItemsToNonEmptyArrayTheSameAmountOfNativeItemsIsCreate
|
||||
}
|
||||
|
||||
export var testWhenItemsAreBoundTheTextColorIsPreserved = function () {
|
||||
buildUIAndRunTest(_createSegmentedBar(), function (views: Array<View>) {
|
||||
var segmentedBar = <segmentedBarModule.SegmentedBar>views[0];
|
||||
var segmentedBar = _createSegmentedBar();
|
||||
segmentedBar.color = new Color("red");
|
||||
|
||||
buildUIAndRunTest(segmentedBar, function (views: Array<View>) {
|
||||
segmentedBar.color = new Color("red");
|
||||
|
||||
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 = {
|
||||
sourceProperty: "items",
|
||||
targetProperty: "items"
|
||||
}
|
||||
|
||||
segmentedBar.bind(options, model);
|
||||
|
||||
|
||||
TKUnit.assert(segmentedBarTestsNative.checkNativeItemsTextColor(segmentedBar), "Items text color not preserved" + "; Expected: " + segmentedBar.color);
|
||||
});
|
||||
}
|
||||
@ -114,7 +122,7 @@ export var testSelectedIndexBecomesUndefinedWhenItemsBoundToEmptyArray = functio
|
||||
segmentedBar.selectedIndex = 9;
|
||||
// << artcile-selecting-item
|
||||
segmentedBar.items = [];
|
||||
var expectedValue = undefined;
|
||||
var expectedValue = -1;
|
||||
var actualValue = segmentedBar.selectedIndex;
|
||||
TKUnit.assert(actualValue === expectedValue, "Actual: " + actualValue + "; Expected: " + expectedValue);
|
||||
});
|
||||
@ -126,7 +134,7 @@ export var testSelectedIndexBecomesUndefinedWhenItemsBoundToUndefined = function
|
||||
segmentedBar.items = _createItems(10);
|
||||
segmentedBar.selectedIndex = 9;
|
||||
segmentedBar.items = undefined;
|
||||
var expectedValue = undefined;
|
||||
var expectedValue = -1;
|
||||
var actualValue = segmentedBar.selectedIndex;
|
||||
TKUnit.assert(actualValue === expectedValue, "Actual: " + actualValue + "; Expected: " + expectedValue);
|
||||
});
|
||||
@ -138,7 +146,7 @@ export var testSelectedIndexBecomesUndefinedWhenItemsBoundToNull = function () {
|
||||
segmentedBar.items = _createItems(10);
|
||||
segmentedBar.selectedIndex = 9;
|
||||
segmentedBar.items = null;
|
||||
var expectedValue = undefined;
|
||||
var expectedValue = -1;
|
||||
var actualValue = segmentedBar.selectedIndex;
|
||||
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 () {
|
||||
var oldIndex;
|
||||
var newIndex;
|
||||
@ -252,18 +237,19 @@ export var testSelectedIndexChangedIsReisedCorrectlyIfSelectedIndexIsSetNative =
|
||||
export var testSelectedIndexChangedIsRaisedCorrectlyIfItemsNotBound = function () {
|
||||
const segmentedBar = _createSegmentedBar();
|
||||
let newSelectedIndex = 0;
|
||||
segmentedBar.on("selectedIndexChange", () => {
|
||||
segmentedBar.on(segmentedBarModule.SegmentedBar.selectedIndexChangedEvent, () => {
|
||||
newSelectedIndex = segmentedBar.selectedIndex;
|
||||
});
|
||||
|
||||
buildUIAndRunTest(segmentedBar, function (views: Array<View>) {
|
||||
const item0 = new segmentedBarModule.SegmentedBarItem();
|
||||
item0.title = "item 0";
|
||||
segmentedBar._addChildFromBuilder("SegmentedBarItem", item0);
|
||||
const item0 = new segmentedBarModule.SegmentedBarItem();
|
||||
item0.title = "item 0";
|
||||
segmentedBar._addChildFromBuilder("SegmentedBarItem", item0);
|
||||
|
||||
const item1 = new segmentedBarModule.SegmentedBarItem();
|
||||
item1.title = "item 1";
|
||||
segmentedBar._addChildFromBuilder("SegmentedBarItem", item1);
|
||||
const item1 = new segmentedBarModule.SegmentedBarItem();
|
||||
item1.title = "item 1";
|
||||
segmentedBar._addChildFromBuilder("SegmentedBarItem", item1);
|
||||
|
||||
buildUIAndRunTest(segmentedBar, function (views: Array<View>) {
|
||||
TKUnit.assertEqual(segmentedBar.items.length, 2);
|
||||
|
||||
segmentedBarTestsNative.setNativeSelectedIndex(segmentedBar, 1);
|
||||
|
@ -923,7 +923,6 @@ export function propagateInheritedProperties(view: ViewBase): void {
|
||||
if (currentValueSource <= ValueSource.Inherited) {
|
||||
prop.setInheritedValue.call(child, pair.value);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
for (let pair of inheritableCssPropertyValues) {
|
||||
@ -934,8 +933,8 @@ export function propagateInheritedProperties(view: ViewBase): void {
|
||||
if (currentValueSource <= 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;
|
||||
if (items) {
|
||||
let max = items.length - 1;
|
||||
if (value < 0) {
|
||||
value = 0;
|
||||
}
|
||||
if (value > max) {
|
||||
value = max;
|
||||
}
|
||||
|
@ -48,6 +48,14 @@ function setBackground(view: android.view.View, background: android.graphics.dra
|
||||
export class SegmentedBarItem extends SegmentedBarItemBase {
|
||||
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 {
|
||||
this._textView = textView;
|
||||
if (textView) {
|
||||
@ -84,7 +92,7 @@ export class SegmentedBarItem extends SegmentedBarItemBase {
|
||||
return this._textView.getCurrentTextColor();
|
||||
}
|
||||
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);
|
||||
}
|
||||
|
||||
@ -148,7 +156,7 @@ class TabChangeListener extends java.lang.Object implements android.widget.TabHo
|
||||
|
||||
onTabChanged(id: string): void {
|
||||
let owner = this.owner.get();
|
||||
if (owner) {
|
||||
if (owner && owner.shouldChangeSelectedIndex()) {
|
||||
owner.selectedIndex = parseInt(id);
|
||||
}
|
||||
}
|
||||
@ -185,6 +193,11 @@ export class SegmentedBar extends SegmentedBarBase {
|
||||
private _android: android.widget.TabHost;
|
||||
private listener: android.widget.TabHost.OnTabChangeListener;
|
||||
private tabContentFactory: android.widget.TabHost.TabContentFactory;
|
||||
private _addingTab: boolean;
|
||||
|
||||
public shouldChangeSelectedIndex(): boolean {
|
||||
return !this._addingTab;
|
||||
}
|
||||
|
||||
public _createNativeView() {
|
||||
ensureTabHostClass();
|
||||
@ -210,6 +223,7 @@ export class SegmentedBar extends SegmentedBarBase {
|
||||
|
||||
this._android.addView(tabHostLayout);
|
||||
this._android.setup();
|
||||
this._android.setOnTabChangedListener(this.listener);
|
||||
}
|
||||
|
||||
get android(): android.widget.TabHost {
|
||||
@ -222,17 +236,11 @@ export class SegmentedBar extends SegmentedBarBase {
|
||||
tab.setContent(this.tabContentFactory);
|
||||
|
||||
let tabHost = this.android;
|
||||
this._addingTab = true;
|
||||
tabHost.addTab(tab);
|
||||
|
||||
// TODO: Why do we need to call this for every added tab?
|
||||
// this.resetNativeListener();
|
||||
this._addingTab = false;
|
||||
}
|
||||
|
||||
// private resetNativeListener() {
|
||||
// this.android.setOnTabChangedListener(null);
|
||||
// this.android.setOnTabChangedListener(this.listener);
|
||||
// }
|
||||
|
||||
get [selectedIndexProperty.native](): number {
|
||||
return -1;
|
||||
}
|
||||
|
Reference in New Issue
Block a user