SegmentedBar tests fixed.

This commit is contained in:
Nedyalko Nikolov
2017-01-09 17:37:02 +02:00
parent 309ea148e1
commit 5a3cfbeda9
7 changed files with 59 additions and 58 deletions

View File

@ -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);

View File

@ -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");

View File

@ -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;

View File

@ -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,12 +57,20 @@ 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"
@ -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);

View File

@ -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;
});
}

View File

@ -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;
}

View File

@ -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;
}