Skip to content

Commit 21926a9

Browse files
committed
Additional refactoring and code cleanup
1 parent 15d891c commit 21926a9

8 files changed

Lines changed: 70 additions & 184 deletions

File tree

tests/app/ui/button/button-tests.ts

Lines changed: 4 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -302,14 +302,9 @@ export var test_WhenFormattedTextPropertyChanges_TextIsUpdated_Button = function
302302
});
303303
}
304304

305-
export var test_IntegrationTest_Transform_Decoration_Spacing_WithoutFormattedText_DoesNotCrash = function () {
305+
export function test_IntegrationTest_Transform_Decoration_Spacing_WithoutFormattedText_DoesNotCrash() {
306306
let view = new buttonModule.Button();
307307
helper.buildUIAndRunTest(view, function (views: Array<viewModule.View>) {
308-
TKUnit.assertEqual(view.text, "", "Text");
309-
TKUnit.assertEqual(view.style.textTransform, enums.TextTransform.none, "TextTransform");
310-
TKUnit.assertEqual(view.style.textDecoration, enums.TextDecoration.none, "TextDecoration");
311-
TKUnit.assertTrue(isNaN(view.style.letterSpacing), "LetterSpacing");
312-
313308
view.text = "NormalText";
314309
view.setInlineStyle("text-transform: uppercase; text-decoration: underline; letter-spacing: 10;");
315310

@@ -319,49 +314,15 @@ export var test_IntegrationTest_Transform_Decoration_Spacing_WithoutFormattedTex
319314
});
320315
}
321316

322-
export var test_IntegrationTest_Transform_Decoration_Spacing_WithFormattedText_DoesNotCrash = function () {
317+
export function test_IntegrationTest_Transform_Decoration_Spacing_WithFormattedText_DoesNotCrash() {
323318
let view = new buttonModule.Button();
324-
let formattedString = _generateFormattedString();
319+
let formattedString = helper._generateFormattedString();
325320
helper.buildUIAndRunTest(view, function (views: Array<viewModule.View>) {
326-
TKUnit.assertEqual(view.text, "", "Text");
327-
TKUnit.assertEqual(view.style.textTransform, enums.TextTransform.none, "TextTransform");
328-
TKUnit.assertEqual(view.style.textDecoration, enums.TextDecoration.none, "TextDecoration");
329-
TKUnit.assertTrue(isNaN(view.style.letterSpacing), "LetterSpacing");
330-
331321
view.formattedText = formattedString;
332322
view.setInlineStyle("text-transform: uppercase; text-decoration: underline; letter-spacing: 10;");
333323

334324
TKUnit.assertEqual(view.style.textTransform, enums.TextTransform.uppercase, "TextTransform");
335325
TKUnit.assertEqual(view.style.textDecoration, enums.TextDecoration.underline, "TextDecoration");
336326
TKUnit.assertEqual(view.style.letterSpacing, 10, "LetterSpacing");
337327
});
338-
}
339-
340-
function _generateFormattedString(): formattedStringModule.FormattedString{
341-
let formattedString = new formattedStringModule.FormattedString();
342-
let span: spanModule.Span;
343-
344-
span = new spanModule.Span();
345-
span.fontFamily = "serif";
346-
span.fontSize = 10;
347-
span.fontAttributes = enums.FontAttributes.Bold;
348-
span.foregroundColor = new colorModule.Color("red");
349-
span.backgroundColor = new colorModule.Color("blue");
350-
span.underline = 0;
351-
span.strikethrough = 1;
352-
span.text = "Formatted";
353-
formattedString.spans.push(span);
354-
355-
span = new spanModule.Span();
356-
span.fontFamily = "sans-serif";
357-
span.fontSize = 20;
358-
span.fontAttributes = enums.FontAttributes.Italic;
359-
span.foregroundColor = new colorModule.Color("green");
360-
span.backgroundColor = new colorModule.Color("yellow");
361-
span.underline = 1;
362-
span.strikethrough = 0;
363-
span.text = "Text";
364-
formattedString.spans.push(span);
365-
366-
return formattedString;
367-
}
328+
}

tests/app/ui/helper.ts

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,10 @@ import utils = require("utils/utils");
88
import types = require("utils/types");
99
import styling = require("ui/styling");
1010
import platform = require("platform");
11+
import colorModule = require("color");
12+
import formattedStringModule = require("text/formatted-string");
13+
import spanModule = require("text/span");
14+
import enums = require("ui/enums");
1115

1216
var DELTA = 0.1;
1317

@@ -201,4 +205,33 @@ export function forceGC() {
201205
}
202206

203207
utils.GC();
208+
}
209+
210+
export function _generateFormattedString(): formattedStringModule.FormattedString{
211+
let formattedString = new formattedStringModule.FormattedString();
212+
let span: spanModule.Span;
213+
214+
span = new spanModule.Span();
215+
span.fontFamily = "serif";
216+
span.fontSize = 10;
217+
span.fontAttributes = enums.FontAttributes.Bold;
218+
span.foregroundColor = new colorModule.Color("red");
219+
span.backgroundColor = new colorModule.Color("blue");
220+
span.underline = 0;
221+
span.strikethrough = 1;
222+
span.text = "Formatted";
223+
formattedString.spans.push(span);
224+
225+
span = new spanModule.Span();
226+
span.fontFamily = "sans-serif";
227+
span.fontSize = 20;
228+
span.fontAttributes = enums.FontAttributes.Italic;
229+
span.foregroundColor = new colorModule.Color("green");
230+
span.backgroundColor = new colorModule.Color("yellow");
231+
span.underline = 1;
232+
span.strikethrough = 0;
233+
span.text = "Text";
234+
formattedString.spans.push(span);
235+
236+
return formattedString;
204237
}

tests/app/ui/label/label-tests.ts

Lines changed: 4 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,6 @@ import {Label} from "ui/label";
2323
import {LayoutBase} from "ui/layouts/layout-base";
2424
import * as helper from "../helper";
2525
import viewModule = require("ui/core/view");
26-
import formattedStringModule = require("text/formatted-string");
27-
import spanModule = require("text/span");
2826

2927
export class LabelTest extends testModule.UITest<LabelModule.Label> {
3028

@@ -599,14 +597,9 @@ export function createTestCase(): LabelTest {
599597
return new LabelTest();
600598
}
601599

602-
export var test_IntegrationTest_Transform_Decoration_Spacing_WithoutFormattedText_DoesNotCrash = function () {
600+
export function test_IntegrationTest_Transform_Decoration_Spacing_WithoutFormattedText_DoesNotCrash() {
603601
let view = new LabelModule.Label();
604602
helper.buildUIAndRunTest(view, function (views: Array<viewModule.View>) {
605-
TKUnit.assertEqual(view.text, "", "Text");
606-
TKUnit.assertEqual(view.style.textTransform, enums.TextTransform.none, "TextTransform");
607-
TKUnit.assertEqual(view.style.textDecoration, enums.TextDecoration.none, "TextDecoration");
608-
TKUnit.assertTrue(isNaN(view.style.letterSpacing), "LetterSpacing");
609-
610603
view.text = "NormalText";
611604
view.setInlineStyle("text-transform: uppercase; text-decoration: underline; letter-spacing: 10;");
612605

@@ -616,49 +609,15 @@ export var test_IntegrationTest_Transform_Decoration_Spacing_WithoutFormattedTex
616609
});
617610
}
618611

619-
export var test_IntegrationTest_Transform_Decoration_Spacing_WithFormattedText_DoesNotCrash = function () {
612+
export function test_IntegrationTest_Transform_Decoration_Spacing_WithFormattedText_DoesNotCrash() {
620613
let view = new LabelModule.Label();
621-
let formattedString = _generateFormattedString();
614+
let formattedString = helper._generateFormattedString();
622615
helper.buildUIAndRunTest(view, function (views: Array<viewModule.View>) {
623-
TKUnit.assertEqual(view.text, "", "Text");
624-
TKUnit.assertEqual(view.style.textTransform, enums.TextTransform.none, "TextTransform");
625-
TKUnit.assertEqual(view.style.textDecoration, enums.TextDecoration.none, "TextDecoration");
626-
TKUnit.assertTrue(isNaN(view.style.letterSpacing), "LetterSpacing");
627-
628616
view.formattedText = formattedString;
629617
view.setInlineStyle("text-transform: uppercase; text-decoration: underline; letter-spacing: 10;");
630618

631619
TKUnit.assertEqual(view.style.textTransform, enums.TextTransform.uppercase, "TextTransform");
632620
TKUnit.assertEqual(view.style.textDecoration, enums.TextDecoration.underline, "TextDecoration");
633621
TKUnit.assertEqual(view.style.letterSpacing, 10, "LetterSpacing");
634622
});
635-
}
636-
637-
function _generateFormattedString(): formattedStringModule.FormattedString{
638-
let formattedString = new formattedStringModule.FormattedString();
639-
let span: spanModule.Span;
640-
641-
span = new spanModule.Span();
642-
span.fontFamily = "serif";
643-
span.fontSize = 10;
644-
span.fontAttributes = enums.FontAttributes.Bold;
645-
span.foregroundColor = new colorModule.Color("red");
646-
span.backgroundColor = new colorModule.Color("blue");
647-
span.underline = 0;
648-
span.strikethrough = 1;
649-
span.text = "Formatted";
650-
formattedString.spans.push(span);
651-
652-
span = new spanModule.Span();
653-
span.fontFamily = "sans-serif";
654-
span.fontSize = 20;
655-
span.fontAttributes = enums.FontAttributes.Italic;
656-
span.foregroundColor = new colorModule.Color("green");
657-
span.backgroundColor = new colorModule.Color("yellow");
658-
span.underline = 1;
659-
span.strikethrough = 0;
660-
span.text = "Text";
661-
formattedString.spans.push(span);
662-
663-
return formattedString;
664-
}
623+
}

tests/app/ui/text-field/text-field-tests.ts

Lines changed: 4 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -536,7 +536,7 @@ export var test_WhenFormattedTextPropertyChanges_TextIsUpdated_TextBase = functi
536536
});
537537
}
538538

539-
export var test_IntegrationTest_Transform_Decoration_Spacing_WithoutFormattedText_DoesNotCrash = function () {
539+
export function test_IntegrationTest_Transform_Decoration_Spacing_WithoutFormattedText_DoesNotCrash() {
540540
let view = new textFieldModule.TextField();
541541
helper.buildUIAndRunTest(view, function (views: Array<viewModule.View>) {
542542
TKUnit.assertEqual(view.text, "", "Text");
@@ -553,49 +553,15 @@ export var test_IntegrationTest_Transform_Decoration_Spacing_WithoutFormattedTex
553553
});
554554
}
555555

556-
export var test_IntegrationTest_Transform_Decoration_Spacing_WithFormattedText_DoesNotCrash = function () {
556+
export function test_IntegrationTest_Transform_Decoration_Spacing_WithFormattedText_DoesNotCrash() {
557557
let view = new textFieldModule.TextField();
558-
let formattedString = _generateFormattedString();
558+
let formattedString = helper._generateFormattedString();
559559
helper.buildUIAndRunTest(view, function (views: Array<viewModule.View>) {
560-
TKUnit.assertEqual(view.text, "", "Text");
561-
TKUnit.assertEqual(view.style.textTransform, enums.TextTransform.none, "TextTransform");
562-
TKUnit.assertEqual(view.style.textDecoration, enums.TextDecoration.none, "TextDecoration");
563-
TKUnit.assertTrue(isNaN(view.style.letterSpacing), "LetterSpacing");
564-
565560
view.formattedText = formattedString;
566561
view.setInlineStyle("text-transform: uppercase; text-decoration: underline; letter-spacing: 10;");
567562

568563
TKUnit.assertEqual(view.style.textTransform, enums.TextTransform.uppercase, "TextTransform");
569564
TKUnit.assertEqual(view.style.textDecoration, enums.TextDecoration.underline, "TextDecoration");
570565
TKUnit.assertEqual(view.style.letterSpacing, 10, "LetterSpacing");
571566
});
572-
}
573-
574-
function _generateFormattedString(): formattedStringModule.FormattedString{
575-
let formattedString = new formattedStringModule.FormattedString();
576-
let span: spanModule.Span;
577-
578-
span = new spanModule.Span();
579-
span.fontFamily = "serif";
580-
span.fontSize = 10;
581-
span.fontAttributes = enums.FontAttributes.Bold;
582-
span.foregroundColor = new colorModule.Color("red");
583-
span.backgroundColor = new colorModule.Color("blue");
584-
span.underline = 0;
585-
span.strikethrough = 1;
586-
span.text = "Formatted";
587-
formattedString.spans.push(span);
588-
589-
span = new spanModule.Span();
590-
span.fontFamily = "sans-serif";
591-
span.fontSize = 20;
592-
span.fontAttributes = enums.FontAttributes.Italic;
593-
span.foregroundColor = new colorModule.Color("green");
594-
span.backgroundColor = new colorModule.Color("yellow");
595-
span.underline = 1;
596-
span.strikethrough = 0;
597-
span.text = "Text";
598-
formattedString.spans.push(span);
599-
600-
return formattedString;
601-
}
567+
}

tests/app/ui/text-view/text-view-tests.ts

Lines changed: 4 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,6 @@ import textViewTestsNative = require("./text-view-tests-native");
66
import colorModule = require("color");
77
import enums = require("ui/enums");
88
import platform = require("platform");
9-
import formattedStringModule = require("text/formatted-string");
10-
import spanModule = require("text/span");
119

1210
// >> require-textmodules
1311
import textViewModule = require("ui/text-view");
@@ -497,14 +495,9 @@ export function test_watch_listerer_is_removed_at_onDetach() {
497495
}
498496
}
499497

500-
export var test_IntegrationTest_Transform_Decoration_Spacing_WithoutFormattedText_DoesNotCrash = function () {
498+
export function test_IntegrationTest_Transform_Decoration_Spacing_WithoutFormattedText_DoesNotCrash() {
501499
let view = new textViewModule.TextView();
502500
helper.buildUIAndRunTest(view, function (views: Array<viewModule.View>) {
503-
TKUnit.assertEqual(view.text, "", "Text");
504-
TKUnit.assertEqual(view.style.textTransform, enums.TextTransform.none, "TextTransform");
505-
TKUnit.assertEqual(view.style.textDecoration, enums.TextDecoration.none, "TextDecoration");
506-
TKUnit.assertTrue(isNaN(view.style.letterSpacing), "LetterSpacing");
507-
508501
view.text = "NormalText";
509502
view.setInlineStyle("text-transform: uppercase; text-decoration: underline; letter-spacing: 10;");
510503

@@ -514,49 +507,15 @@ export var test_IntegrationTest_Transform_Decoration_Spacing_WithoutFormattedTex
514507
});
515508
}
516509

517-
export var test_IntegrationTest_Transform_Decoration_Spacing_WithFormattedText_DoesNotCrash = function () {
510+
export function test_IntegrationTest_Transform_Decoration_Spacing_WithFormattedText_DoesNotCrash() {
518511
let view = new textViewModule.TextView();
519-
let formattedString = _generateFormattedString();
512+
let formattedString = helper._generateFormattedString();
520513
helper.buildUIAndRunTest(view, function (views: Array<viewModule.View>) {
521-
TKUnit.assertEqual(view.text, "", "Text");
522-
TKUnit.assertEqual(view.style.textTransform, enums.TextTransform.none, "TextTransform");
523-
TKUnit.assertEqual(view.style.textDecoration, enums.TextDecoration.none, "TextDecoration");
524-
TKUnit.assertTrue(isNaN(view.style.letterSpacing), "LetterSpacing");
525-
526514
view.formattedText = formattedString;
527515
view.setInlineStyle("text-transform: uppercase; text-decoration: underline; letter-spacing: 10;");
528516

529517
TKUnit.assertEqual(view.style.textTransform, enums.TextTransform.uppercase, "TextTransform");
530518
TKUnit.assertEqual(view.style.textDecoration, enums.TextDecoration.underline, "TextDecoration");
531519
TKUnit.assertEqual(view.style.letterSpacing, 10, "LetterSpacing");
532520
});
533-
}
534-
535-
function _generateFormattedString(): formattedStringModule.FormattedString{
536-
let formattedString = new formattedStringModule.FormattedString();
537-
let span: spanModule.Span;
538-
539-
span = new spanModule.Span();
540-
span.fontFamily = "serif";
541-
span.fontSize = 10;
542-
span.fontAttributes = enums.FontAttributes.Bold;
543-
span.foregroundColor = new colorModule.Color("red");
544-
span.backgroundColor = new colorModule.Color("blue");
545-
span.underline = 0;
546-
span.strikethrough = 1;
547-
span.text = "Formatted";
548-
formattedString.spans.push(span);
549-
550-
span = new spanModule.Span();
551-
span.fontFamily = "sans-serif";
552-
span.fontSize = 20;
553-
span.fontAttributes = enums.FontAttributes.Italic;
554-
span.foregroundColor = new colorModule.Color("green");
555-
span.backgroundColor = new colorModule.Color("yellow");
556-
span.underline = 1;
557-
span.strikethrough = 0;
558-
span.text = "Text";
559-
formattedString.spans.push(span);
560-
561-
return formattedString;
562-
}
521+
}

tns-core-modules/text/formatted-string.ios.ts

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -6,22 +6,20 @@ global.moduleMerge(formattedStringCommon, exports);
66

77
export class FormattedString extends formattedStringCommon.FormattedString {
88
public createFormattedStringCore() {
9-
var mas = NSMutableAttributedString.alloc().init();
10-
var i;
11-
var spanStart = 0;
12-
var spanLength = 0;
13-
var spanText = "";
14-
for (i = 0; i < this.spans.length; i++) {
15-
var span = <spanModule.Span>this.spans.getItem(i);
9+
let mas = NSMutableAttributedString.alloc().init();
10+
let spanStart = 0;
11+
let spanLength = 0;
12+
let spanText = "";
13+
for (let i = 0; i < this.spans.length; i++) {
14+
let span = <spanModule.Span>this.spans.getItem(i);
1615
spanText = types.toUIString(span.text);
1716
spanLength = spanText.length;
1817
span.updateSpanModifiers(this);
19-
var attrDict = NSMutableDictionary.alloc().init();
20-
var p;
21-
for (p = 0; p < span.spanModifiers.length; p++) {
18+
let attrDict = NSMutableDictionary.alloc().init();
19+
for (let p = 0; p < span.spanModifiers.length; p++) {
2220
attrDict.setObjectForKey(span.spanModifiers[p].value, span.spanModifiers[p].key);
2321
}
24-
var nsAttributedString = NSMutableAttributedString.alloc().initWithStringAttributes(String(spanText), attrDict);
22+
let nsAttributedString = NSMutableAttributedString.alloc().initWithStringAttributes(String(spanText), attrDict);
2523
mas.insertAttributedStringAtIndex(nsAttributedString, spanStart);
2624
spanStart += spanLength;
2725
}
@@ -34,7 +32,8 @@ export class FormattedString extends formattedStringCommon.FormattedString {
3432
for (let i = 0; i < this.spans.length; i++) {
3533
let span = <spanModule.Span>this.spans.getItem(i);
3634
if (currentLocation <= rangeLocation && rangeLocation < (currentLocation + span.text.length)){
37-
(<any>span)._text = splice(span.text, rangeLocation - currentLocation, deletingText ? rangeLength : 0, replacementString);
35+
let newText = splice(span.text, rangeLocation - currentLocation, deletingText ? rangeLength : 0, replacementString);
36+
span._setTextInternal(newText);
3837
//console.log(`>>> ${span.text}`);
3938
return;
4039
}

tns-core-modules/text/span-common.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -140,11 +140,15 @@ export class Span extends bindable.Bindable implements definition.Span, view.App
140140

141141
set text(value: string) {
142142
if (this._text !== value) {
143-
this._text = value;
143+
this._setTextInternal(value);
144144
this.updateAndNotify();
145145
}
146146
}
147147

148+
_setTextInternal(value: string): void {
149+
this._text = value;
150+
}
151+
148152
get parentFormattedString(): formattedString.FormattedString {
149153
return this._parentFormattedString;
150154
}

0 commit comments

Comments
 (0)