Fix: setting text in Span to number/null/undefined

This commit is contained in:
vakrilov
2016-04-18 18:32:55 +03:00
parent d7352b7eea
commit fddaf251f7
8 changed files with 88 additions and 8 deletions

View File

@ -67,7 +67,7 @@ export var testSetText = function () {
var expectedValue = "Hello, world!";
var actualValue = textFieldTestsNative.getNativeText(textField);
TKUnit.assert(actualValue === expectedValue, "Actual: " + actualValue + "; Expected: " + expectedValue);
TKUnit.assertEqual(actualValue, expectedValue, "TextField native text");
});
}
@ -79,7 +79,7 @@ export var testSetTextNull = function () {
var expectedValue = "";
var actualValue = textFieldTestsNative.getNativeText(textField);
TKUnit.assert(actualValue === expectedValue, "Actual: " + actualValue + "; Expected: " + expectedValue);
TKUnit.assertEqual(actualValue, expectedValue, "TextField native text");
});
}
@ -91,7 +91,75 @@ export var testSetTextUndefined = function () {
var expectedValue = "";
var actualValue = textFieldTestsNative.getNativeText(textField);
TKUnit.assert(actualValue === expectedValue, "Actual: " + actualValue + "; Expected: " + expectedValue);
TKUnit.assertEqual(actualValue, expectedValue, "TextField native text");
});
}
export var testSetTextToZero = function () {
helper.buildUIAndRunTest(_createTextFieldFunc(), function (views: Array<viewModule.View>) {
var textField = <textFieldModule.TextField>views[0];
(<any>textField).text = 0;
var expectedValue = "0";
var actualValue = textFieldTestsNative.getNativeText(textField);
TKUnit.assertEqual(actualValue, expectedValue, "TextField native text");
});
}
function createFormattedString(value: any): formattedStringModule.FormattedString {
var span = new spanModule.Span();
span.text = value;
var result = new formattedStringModule.FormattedString();
result.spans.push(span);
return result;
}
export var testSetTextWithSpan = function () {
helper.buildUIAndRunTest(_createTextFieldFunc(), function (views: Array<viewModule.View>) {
var textField = <textFieldModule.TextField>views[0];
textField.formattedText = createFormattedString("Hello, world!");
var expectedValue = "Hello, world!";
var actualValue = textFieldTestsNative.getNativeText(textField);
TKUnit.assertEqual(actualValue, expectedValue, "TextField native text");
});
}
export var testSetTextNullWithSpan = function () {
helper.buildUIAndRunTest(_createTextFieldFunc(), function (views: Array<viewModule.View>) {
var textField = <textFieldModule.TextField>views[0];
textField.formattedText = createFormattedString(null);
var expectedValue = "";
var actualValue = textFieldTestsNative.getNativeText(textField);
TKUnit.assertEqual(actualValue, expectedValue, "TextField native text");
});
}
export var testSetTextUndefinedWithSpan = function () {
helper.buildUIAndRunTest(_createTextFieldFunc(), function (views: Array<viewModule.View>) {
var textField = <textFieldModule.TextField>views[0];
textField.formattedText = createFormattedString(undefined);
var expectedValue = "";
var actualValue = textFieldTestsNative.getNativeText(textField);
TKUnit.assertEqual(actualValue, expectedValue, "TextField native text");
});
}
export var testSetTextToZeroWithSpan = function () {
helper.buildUIAndRunTest(_createTextFieldFunc(), function (views: Array<viewModule.View>) {
var textField = <textFieldModule.TextField>views[0];
textField.formattedText = createFormattedString(0);
var expectedValue = "0";
var actualValue = textFieldTestsNative.getNativeText(textField);
TKUnit.assertEqual(actualValue, expectedValue, "TextField native text");
});
}

View File

@ -1,5 +1,6 @@
import formattedStringCommon = require("./formatted-string-common");
import spanModule = require("text/span");
import types = require("utils/types");
global.moduleMerge(formattedStringCommon, exports);
@ -12,7 +13,7 @@ export class FormattedString extends formattedStringCommon.FormattedString {
var spanText = "";
for (i = 0; i < this.spans.length; i++) {
var span = <spanModule.Span>this.spans.getItem(i);
spanText = span.text || "";
spanText = types.toUIString(span.text);
spanLength = spanText.length;
if (spanLength !== 0) {
ssb.insert(spanStart, spanText);

View File

@ -1,5 +1,6 @@
import formattedStringCommon = require("./formatted-string-common");
import spanModule = require("text/span");
import types = require("utils/types");
global.moduleMerge(formattedStringCommon, exports);
@ -12,7 +13,7 @@ export class FormattedString extends formattedStringCommon.FormattedString {
var spanText = "";
for (i = 0; i < this.spans.length; i++) {
var span = <spanModule.Span>this.spans.getItem(i);
spanText = span.text || "";
spanText = types.toUIString(span.text);
spanLength = spanText.length;
span.updateSpanModifiers(this);
var attrDict = NSMutableDictionary.alloc().init();

View File

@ -133,7 +133,7 @@ export class EditableTextBase extends common.EditableTextBase {
public _onTextPropertyChanged(data: dependencyObservable.PropertyChangeData) {
if (this._android) {
var newValue = types.isNullOrUndefined(data.newValue) ? "" : data.newValue + "";
var newValue = types.toUIString(data.newValue);
this.android.setText(newValue, android.widget.TextView.BufferType.EDITABLE);
}
}

View File

@ -5,7 +5,7 @@ import dependencyObservable = require("ui/core/dependency-observable");
export class TextBase extends common.TextBase {
public _onTextPropertyChanged(data: dependencyObservable.PropertyChangeData) {
if (this.android) {
var newValue = types.isNullOrUndefined(data.newValue) ? "" : data.newValue + "";
var newValue = types.toUIString(data.newValue);
this.android.setText(newValue);
}
}

View File

@ -4,7 +4,7 @@ import dependencyObservable = require("ui/core/dependency-observable");
export class TextBase extends common.TextBase {
public _onTextPropertyChanged(data: dependencyObservable.PropertyChangeData) {
var newValue = types.isNullOrUndefined(data.newValue) ? "" : data.newValue + "";
var newValue = types.toUIString(data.newValue);
this.ios.text = newValue;
this.style._updateTextDecoration();
this.style._updateTextTransform();

6
utils/types.d.ts vendored
View File

@ -83,4 +83,10 @@
*/
baseClassInfo: ClassInfo;
}
/**
* Returns a string representation of a string to be shown in UI.
* @param object The object which class hierarchy will be get.
*/
export function toUIString(object): string;
}

View File

@ -99,3 +99,7 @@ export class ClassInfo {
return result;
}
}
export function toUIString(obj): string {
return isNullOrUndefined(obj) ? "" : obj + "";
}