diff --git a/tests/app/ui/label/label-tests.ts b/tests/app/ui/label/label-tests.ts index ff84ea191..3a89ae1cd 100644 --- a/tests/app/ui/label/label-tests.ts +++ b/tests/app/ui/label/label-tests.ts @@ -524,12 +524,13 @@ export class LabelTest extends testModule.UITest { TKUnit.assertNotEqual(this.errorMessage, undefined); } - private requestLayoutFixture(expectRequestLayout: boolean, setup: (label: Label) => LayoutBase): void { + private requestLayoutFixture(expectRequestLayout: boolean, initialValue: string, setup: (label: Label) => LayoutBase): void { if (!isIOS) { return; } let label = new Label(); + label.text = initialValue; let host = setup(label); host.addChild(label); @@ -540,7 +541,8 @@ export class LabelTest extends testModule.UITest { let called = false; label.requestLayout = () => called = true; - label.text = "Hello World"; + // changing text actually could request layout + label.text = initialValue + " Again"; if (expectRequestLayout) { TKUnit.assertTrue(called, "label.requestLayout should be called."); @@ -550,7 +552,16 @@ export class LabelTest extends testModule.UITest { } public test_SettingTextWhenInFixedSizeGridShouldNotRequestLayout() { - this.requestLayoutFixture(false, () => { + this.requestLayoutFixture(false, "", () => { + let host = new GridLayout(); + host.width = 100; + host.height = 100; + return host; + }); + } + + public test_ChangingTextWhenInFixedSizeGridShouldNotRequestLayout() { + this.requestLayoutFixture(false, "Hello World", () => { let host = new GridLayout(); host.width = 100; host.height = 100; @@ -559,7 +570,16 @@ export class LabelTest extends testModule.UITest { } public test_SettingTextWhenFixedWidthAndHeightDoesNotRequestLayout() { - this.requestLayoutFixture(false, label => { + this.requestLayoutFixture(false, "", label => { + let host = new StackLayout(); + label.width = 100; + label.height = 100; + return host; + }); + }; + + public test_ChangingTextWhenFixedWidthAndHeightDoesNotRequestLayout() { + this.requestLayoutFixture(false, "Hello World", label => { let host = new StackLayout(); label.width = 100; label.height = 100; @@ -568,15 +588,31 @@ export class LabelTest extends testModule.UITest { }; public test_SettingTextWhenSizedToContentShouldInvalidate() { - this.requestLayoutFixture(true, () => { + this.requestLayoutFixture(true, "", () => { let host = new StackLayout(); host.orientation = "horizontal"; return host; }); }; - public test_SettingTextOnSingleLineTextWhenWidthIsSizedToParentAndHeightIsSizedToContentShouldNotRequestLayout() { - this.requestLayoutFixture(false, () => { + public test_ChangingTextWhenSizedToContentShouldInvalidate() { + this.requestLayoutFixture(true, "Hello World", () => { + let host = new StackLayout(); + host.orientation = "horizontal"; + return host; + }); + }; + + public test_SettingTextOnSingleLineTextWhenWidthIsSizedToParentAndHeightIsSizedToContentShouldRequestLayout() { + this.requestLayoutFixture(true, "", () => { + let host = new StackLayout(); + host.width = 100; + return host; + }); + } + + public test_ChangingTextOnSingleLineTextWhenWidthIsSizedToParentAndHeightIsSizedToContentShouldNotRequestLayout() { + this.requestLayoutFixture(false, "Hello World", () => { let host = new StackLayout(); host.width = 100; return host; @@ -584,7 +620,16 @@ export class LabelTest extends testModule.UITest { } public test_SettingTextOnMultilineLineTextWhenWidthIsSizedToParentAndHeightIsSizedToContentShouldRequestLayout() { - this.requestLayoutFixture(true, label => { + this.requestLayoutFixture(true, "", label => { + label.textWrap = true; + let host = new StackLayout(); + host.width = 100; + return host; + }); + } + + public test_ChangingTextOnMultilineLineTextWhenWidthIsSizedToParentAndHeightIsSizedToContentShouldRequestLayout() { + this.requestLayoutFixture(true, "Hello World", label => { label.textWrap = true; let host = new StackLayout(); host.width = 100; diff --git a/tns-core-modules/ui/label/label.ios.ts b/tns-core-modules/ui/label/label.ios.ts index 91a7411ba..dbcf2ee35 100644 --- a/tns-core-modules/ui/label/label.ios.ts +++ b/tns-core-modules/ui/label/label.ios.ts @@ -48,7 +48,7 @@ export class Label extends common.Label { if (this._fixedSize === FixedSize.BOTH) { return; } - if (this._fixedSize === FixedSize.WIDTH && !this.textWrap) { + if (this._fixedSize === FixedSize.WIDTH && !this.textWrap && this.getMeasuredHeight() > 0) { // Single line label with fixed width will skip request layout on text change. return; }