mirror of
https://github.com/NativeScript/NativeScript.git
synced 2025-11-05 13:26:48 +08:00
Refactor application of text decoration, text transform, letter spacing and formatted text.
Related to #2427
This commit is contained in:
@@ -300,4 +300,68 @@ export var test_WhenFormattedTextPropertyChanges_TextIsUpdated_Button = function
|
||||
view.formattedText = null;
|
||||
TKUnit.assertEqual(view.text, "");
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
export var test_IntegrationTest_Transform_Decoration_Spacing_WithoutFormattedText_DoesNotCrash = function () {
|
||||
let view = new buttonModule.Button();
|
||||
helper.buildUIAndRunTest(view, function (views: Array<viewModule.View>) {
|
||||
TKUnit.assertEqual(view.text, "", "Text");
|
||||
TKUnit.assertEqual(view.style.textTransform, enums.TextTransform.none, "TextTransform");
|
||||
TKUnit.assertEqual(view.style.textDecoration, enums.TextDecoration.none, "TextDecoration");
|
||||
TKUnit.assertTrue(isNaN(view.style.letterSpacing), "LetterSpacing");
|
||||
|
||||
view.text = "NormalText";
|
||||
view.setInlineStyle("text-transform: uppercase; text-decoration: underline; letter-spacing: 10;");
|
||||
|
||||
TKUnit.assertEqual(view.style.textTransform, enums.TextTransform.uppercase, "TextTransform");
|
||||
TKUnit.assertEqual(view.style.textDecoration, enums.TextDecoration.underline, "TextDecoration");
|
||||
TKUnit.assertEqual(view.style.letterSpacing, 10, "LetterSpacing");
|
||||
});
|
||||
}
|
||||
|
||||
export var test_IntegrationTest_Transform_Decoration_Spacing_WithFormattedText_DoesNotCrash = function () {
|
||||
let view = new buttonModule.Button();
|
||||
let formattedString = _generateFormattedString();
|
||||
helper.buildUIAndRunTest(view, function (views: Array<viewModule.View>) {
|
||||
TKUnit.assertEqual(view.text, "", "Text");
|
||||
TKUnit.assertEqual(view.style.textTransform, enums.TextTransform.none, "TextTransform");
|
||||
TKUnit.assertEqual(view.style.textDecoration, enums.TextDecoration.none, "TextDecoration");
|
||||
TKUnit.assertTrue(isNaN(view.style.letterSpacing), "LetterSpacing");
|
||||
|
||||
view.formattedText = formattedString;
|
||||
view.setInlineStyle("text-transform: uppercase; text-decoration: underline; letter-spacing: 10;");
|
||||
|
||||
TKUnit.assertEqual(view.style.textTransform, enums.TextTransform.uppercase, "TextTransform");
|
||||
TKUnit.assertEqual(view.style.textDecoration, enums.TextDecoration.underline, "TextDecoration");
|
||||
TKUnit.assertEqual(view.style.letterSpacing, 10, "LetterSpacing");
|
||||
});
|
||||
}
|
||||
|
||||
function _generateFormattedString(): formattedStringModule.FormattedString{
|
||||
let formattedString = new formattedStringModule.FormattedString();
|
||||
let span: spanModule.Span;
|
||||
|
||||
span = new spanModule.Span();
|
||||
span.fontFamily = "serif";
|
||||
span.fontSize = 10;
|
||||
span.fontAttributes = enums.FontAttributes.Bold;
|
||||
span.foregroundColor = new colorModule.Color("red");
|
||||
span.backgroundColor = new colorModule.Color("blue");
|
||||
span.underline = 0;
|
||||
span.strikethrough = 1;
|
||||
span.text = "Formatted";
|
||||
formattedString.spans.push(span);
|
||||
|
||||
span = new spanModule.Span();
|
||||
span.fontFamily = "sans-serif";
|
||||
span.fontSize = 20;
|
||||
span.fontAttributes = enums.FontAttributes.Italic;
|
||||
span.foregroundColor = new colorModule.Color("green");
|
||||
span.backgroundColor = new colorModule.Color("yellow");
|
||||
span.underline = 1;
|
||||
span.strikethrough = 0;
|
||||
span.text = "Text";
|
||||
formattedString.spans.push(span);
|
||||
|
||||
return formattedString;
|
||||
}
|
||||
|
||||
@@ -22,6 +22,9 @@ import {isIOS} from "platform";
|
||||
import {Label} from "ui/label";
|
||||
import {LayoutBase} from "ui/layouts/layout-base";
|
||||
import * as helper from "../helper";
|
||||
import viewModule = require("ui/core/view");
|
||||
import formattedStringModule = require("text/formatted-string");
|
||||
import spanModule = require("text/span");
|
||||
|
||||
export class LabelTest extends testModule.UITest<LabelModule.Label> {
|
||||
|
||||
@@ -596,3 +599,66 @@ export function createTestCase(): LabelTest {
|
||||
return new LabelTest();
|
||||
}
|
||||
|
||||
export var test_IntegrationTest_Transform_Decoration_Spacing_WithoutFormattedText_DoesNotCrash = function () {
|
||||
let view = new LabelModule.Label();
|
||||
helper.buildUIAndRunTest(view, function (views: Array<viewModule.View>) {
|
||||
TKUnit.assertEqual(view.text, "", "Text");
|
||||
TKUnit.assertEqual(view.style.textTransform, enums.TextTransform.none, "TextTransform");
|
||||
TKUnit.assertEqual(view.style.textDecoration, enums.TextDecoration.none, "TextDecoration");
|
||||
TKUnit.assertTrue(isNaN(view.style.letterSpacing), "LetterSpacing");
|
||||
|
||||
view.text = "NormalText";
|
||||
view.setInlineStyle("text-transform: uppercase; text-decoration: underline; letter-spacing: 10;");
|
||||
|
||||
TKUnit.assertEqual(view.style.textTransform, enums.TextTransform.uppercase, "TextTransform");
|
||||
TKUnit.assertEqual(view.style.textDecoration, enums.TextDecoration.underline, "TextDecoration");
|
||||
TKUnit.assertEqual(view.style.letterSpacing, 10, "LetterSpacing");
|
||||
});
|
||||
}
|
||||
|
||||
export var test_IntegrationTest_Transform_Decoration_Spacing_WithFormattedText_DoesNotCrash = function () {
|
||||
let view = new LabelModule.Label();
|
||||
let formattedString = _generateFormattedString();
|
||||
helper.buildUIAndRunTest(view, function (views: Array<viewModule.View>) {
|
||||
TKUnit.assertEqual(view.text, "", "Text");
|
||||
TKUnit.assertEqual(view.style.textTransform, enums.TextTransform.none, "TextTransform");
|
||||
TKUnit.assertEqual(view.style.textDecoration, enums.TextDecoration.none, "TextDecoration");
|
||||
TKUnit.assertTrue(isNaN(view.style.letterSpacing), "LetterSpacing");
|
||||
|
||||
view.formattedText = formattedString;
|
||||
view.setInlineStyle("text-transform: uppercase; text-decoration: underline; letter-spacing: 10;");
|
||||
|
||||
TKUnit.assertEqual(view.style.textTransform, enums.TextTransform.uppercase, "TextTransform");
|
||||
TKUnit.assertEqual(view.style.textDecoration, enums.TextDecoration.underline, "TextDecoration");
|
||||
TKUnit.assertEqual(view.style.letterSpacing, 10, "LetterSpacing");
|
||||
});
|
||||
}
|
||||
|
||||
function _generateFormattedString(): formattedStringModule.FormattedString{
|
||||
let formattedString = new formattedStringModule.FormattedString();
|
||||
let span: spanModule.Span;
|
||||
|
||||
span = new spanModule.Span();
|
||||
span.fontFamily = "serif";
|
||||
span.fontSize = 10;
|
||||
span.fontAttributes = enums.FontAttributes.Bold;
|
||||
span.foregroundColor = new colorModule.Color("red");
|
||||
span.backgroundColor = new colorModule.Color("blue");
|
||||
span.underline = 0;
|
||||
span.strikethrough = 1;
|
||||
span.text = "Formatted";
|
||||
formattedString.spans.push(span);
|
||||
|
||||
span = new spanModule.Span();
|
||||
span.fontFamily = "sans-serif";
|
||||
span.fontSize = 20;
|
||||
span.fontAttributes = enums.FontAttributes.Italic;
|
||||
span.foregroundColor = new colorModule.Color("green");
|
||||
span.backgroundColor = new colorModule.Color("yellow");
|
||||
span.underline = 1;
|
||||
span.strikethrough = 0;
|
||||
span.text = "Text";
|
||||
formattedString.spans.push(span);
|
||||
|
||||
return formattedString;
|
||||
}
|
||||
|
||||
@@ -535,3 +535,67 @@ export var test_WhenFormattedTextPropertyChanges_TextIsUpdated_TextBase = functi
|
||||
TKUnit.assertEqual(view.text, "");
|
||||
});
|
||||
}
|
||||
|
||||
export var test_IntegrationTest_Transform_Decoration_Spacing_WithoutFormattedText_DoesNotCrash = function () {
|
||||
let view = new textFieldModule.TextField();
|
||||
helper.buildUIAndRunTest(view, function (views: Array<viewModule.View>) {
|
||||
TKUnit.assertEqual(view.text, "", "Text");
|
||||
TKUnit.assertEqual(view.style.textTransform, enums.TextTransform.none, "TextTransform");
|
||||
TKUnit.assertEqual(view.style.textDecoration, enums.TextDecoration.none, "TextDecoration");
|
||||
TKUnit.assertTrue(isNaN(view.style.letterSpacing), "LetterSpacing");
|
||||
|
||||
view.text = "NormalText";
|
||||
view.setInlineStyle("text-transform: uppercase; text-decoration: underline; letter-spacing: 10;");
|
||||
|
||||
TKUnit.assertEqual(view.style.textTransform, enums.TextTransform.uppercase, "TextTransform");
|
||||
TKUnit.assertEqual(view.style.textDecoration, enums.TextDecoration.underline, "TextDecoration");
|
||||
TKUnit.assertEqual(view.style.letterSpacing, 10, "LetterSpacing");
|
||||
});
|
||||
}
|
||||
|
||||
export var test_IntegrationTest_Transform_Decoration_Spacing_WithFormattedText_DoesNotCrash = function () {
|
||||
let view = new textFieldModule.TextField();
|
||||
let formattedString = _generateFormattedString();
|
||||
helper.buildUIAndRunTest(view, function (views: Array<viewModule.View>) {
|
||||
TKUnit.assertEqual(view.text, "", "Text");
|
||||
TKUnit.assertEqual(view.style.textTransform, enums.TextTransform.none, "TextTransform");
|
||||
TKUnit.assertEqual(view.style.textDecoration, enums.TextDecoration.none, "TextDecoration");
|
||||
TKUnit.assertTrue(isNaN(view.style.letterSpacing), "LetterSpacing");
|
||||
|
||||
view.formattedText = formattedString;
|
||||
view.setInlineStyle("text-transform: uppercase; text-decoration: underline; letter-spacing: 10;");
|
||||
|
||||
TKUnit.assertEqual(view.style.textTransform, enums.TextTransform.uppercase, "TextTransform");
|
||||
TKUnit.assertEqual(view.style.textDecoration, enums.TextDecoration.underline, "TextDecoration");
|
||||
TKUnit.assertEqual(view.style.letterSpacing, 10, "LetterSpacing");
|
||||
});
|
||||
}
|
||||
|
||||
function _generateFormattedString(): formattedStringModule.FormattedString{
|
||||
let formattedString = new formattedStringModule.FormattedString();
|
||||
let span: spanModule.Span;
|
||||
|
||||
span = new spanModule.Span();
|
||||
span.fontFamily = "serif";
|
||||
span.fontSize = 10;
|
||||
span.fontAttributes = enums.FontAttributes.Bold;
|
||||
span.foregroundColor = new colorModule.Color("red");
|
||||
span.backgroundColor = new colorModule.Color("blue");
|
||||
span.underline = 0;
|
||||
span.strikethrough = 1;
|
||||
span.text = "Formatted";
|
||||
formattedString.spans.push(span);
|
||||
|
||||
span = new spanModule.Span();
|
||||
span.fontFamily = "sans-serif";
|
||||
span.fontSize = 20;
|
||||
span.fontAttributes = enums.FontAttributes.Italic;
|
||||
span.foregroundColor = new colorModule.Color("green");
|
||||
span.backgroundColor = new colorModule.Color("yellow");
|
||||
span.underline = 1;
|
||||
span.strikethrough = 0;
|
||||
span.text = "Text";
|
||||
formattedString.spans.push(span);
|
||||
|
||||
return formattedString;
|
||||
}
|
||||
|
||||
@@ -6,6 +6,8 @@ import textViewTestsNative = require("./text-view-tests-native");
|
||||
import colorModule = require("color");
|
||||
import enums = require("ui/enums");
|
||||
import platform = require("platform");
|
||||
import formattedStringModule = require("text/formatted-string");
|
||||
import spanModule = require("text/span");
|
||||
|
||||
// >> require-textmodules
|
||||
import textViewModule = require("ui/text-view");
|
||||
@@ -494,3 +496,67 @@ export function test_watch_listerer_is_removed_at_onDetach() {
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
export var test_IntegrationTest_Transform_Decoration_Spacing_WithoutFormattedText_DoesNotCrash = function () {
|
||||
let view = new textViewModule.TextView();
|
||||
helper.buildUIAndRunTest(view, function (views: Array<viewModule.View>) {
|
||||
TKUnit.assertEqual(view.text, "", "Text");
|
||||
TKUnit.assertEqual(view.style.textTransform, enums.TextTransform.none, "TextTransform");
|
||||
TKUnit.assertEqual(view.style.textDecoration, enums.TextDecoration.none, "TextDecoration");
|
||||
TKUnit.assertTrue(isNaN(view.style.letterSpacing), "LetterSpacing");
|
||||
|
||||
view.text = "NormalText";
|
||||
view.setInlineStyle("text-transform: uppercase; text-decoration: underline; letter-spacing: 10;");
|
||||
|
||||
TKUnit.assertEqual(view.style.textTransform, enums.TextTransform.uppercase, "TextTransform");
|
||||
TKUnit.assertEqual(view.style.textDecoration, enums.TextDecoration.underline, "TextDecoration");
|
||||
TKUnit.assertEqual(view.style.letterSpacing, 10, "LetterSpacing");
|
||||
});
|
||||
}
|
||||
|
||||
export var test_IntegrationTest_Transform_Decoration_Spacing_WithFormattedText_DoesNotCrash = function () {
|
||||
let view = new textViewModule.TextView();
|
||||
let formattedString = _generateFormattedString();
|
||||
helper.buildUIAndRunTest(view, function (views: Array<viewModule.View>) {
|
||||
TKUnit.assertEqual(view.text, "", "Text");
|
||||
TKUnit.assertEqual(view.style.textTransform, enums.TextTransform.none, "TextTransform");
|
||||
TKUnit.assertEqual(view.style.textDecoration, enums.TextDecoration.none, "TextDecoration");
|
||||
TKUnit.assertTrue(isNaN(view.style.letterSpacing), "LetterSpacing");
|
||||
|
||||
view.formattedText = formattedString;
|
||||
view.setInlineStyle("text-transform: uppercase; text-decoration: underline; letter-spacing: 10;");
|
||||
|
||||
TKUnit.assertEqual(view.style.textTransform, enums.TextTransform.uppercase, "TextTransform");
|
||||
TKUnit.assertEqual(view.style.textDecoration, enums.TextDecoration.underline, "TextDecoration");
|
||||
TKUnit.assertEqual(view.style.letterSpacing, 10, "LetterSpacing");
|
||||
});
|
||||
}
|
||||
|
||||
function _generateFormattedString(): formattedStringModule.FormattedString{
|
||||
let formattedString = new formattedStringModule.FormattedString();
|
||||
let span: spanModule.Span;
|
||||
|
||||
span = new spanModule.Span();
|
||||
span.fontFamily = "serif";
|
||||
span.fontSize = 10;
|
||||
span.fontAttributes = enums.FontAttributes.Bold;
|
||||
span.foregroundColor = new colorModule.Color("red");
|
||||
span.backgroundColor = new colorModule.Color("blue");
|
||||
span.underline = 0;
|
||||
span.strikethrough = 1;
|
||||
span.text = "Formatted";
|
||||
formattedString.spans.push(span);
|
||||
|
||||
span = new spanModule.Span();
|
||||
span.fontFamily = "sans-serif";
|
||||
span.fontSize = 20;
|
||||
span.fontAttributes = enums.FontAttributes.Italic;
|
||||
span.foregroundColor = new colorModule.Color("green");
|
||||
span.backgroundColor = new colorModule.Color("yellow");
|
||||
span.underline = 1;
|
||||
span.strikethrough = 0;
|
||||
span.text = "Text";
|
||||
formattedString.spans.push(span);
|
||||
|
||||
return formattedString;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user