Refactor application of text decoration, text transform, letter spacing and formatted text.

Related to #2427
This commit is contained in:
Rossen Hristov
2016-07-22 17:05:03 +03:00
parent 20c7284fb4
commit 15d891cc08
20 changed files with 644 additions and 201 deletions

View File

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

View File

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

View File

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

View File

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