mirror of
https://github.com/NativeScript/NativeScript.git
synced 2025-08-15 19:26:42 +08:00
Fix: setting text in Span to number/null/undefined
This commit is contained in:
@ -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");
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -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);
|
||||
|
@ -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();
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
@ -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
6
utils/types.d.ts
vendored
@ -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;
|
||||
}
|
@ -99,3 +99,7 @@ export class ClassInfo {
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
export function toUIString(obj): string {
|
||||
return isNullOrUndefined(obj) ? "" : obj + "";
|
||||
}
|
Reference in New Issue
Block a user