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 expectedValue = "Hello, world!";
|
||||||
var actualValue = textFieldTestsNative.getNativeText(textField);
|
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 expectedValue = "";
|
||||||
var actualValue = textFieldTestsNative.getNativeText(textField);
|
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 expectedValue = "";
|
||||||
var actualValue = textFieldTestsNative.getNativeText(textField);
|
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 formattedStringCommon = require("./formatted-string-common");
|
||||||
import spanModule = require("text/span");
|
import spanModule = require("text/span");
|
||||||
|
import types = require("utils/types");
|
||||||
|
|
||||||
global.moduleMerge(formattedStringCommon, exports);
|
global.moduleMerge(formattedStringCommon, exports);
|
||||||
|
|
||||||
@ -12,7 +13,7 @@ export class FormattedString extends formattedStringCommon.FormattedString {
|
|||||||
var spanText = "";
|
var spanText = "";
|
||||||
for (i = 0; i < this.spans.length; i++) {
|
for (i = 0; i < this.spans.length; i++) {
|
||||||
var span = <spanModule.Span>this.spans.getItem(i);
|
var span = <spanModule.Span>this.spans.getItem(i);
|
||||||
spanText = span.text || "";
|
spanText = types.toUIString(span.text);
|
||||||
spanLength = spanText.length;
|
spanLength = spanText.length;
|
||||||
if (spanLength !== 0) {
|
if (spanLength !== 0) {
|
||||||
ssb.insert(spanStart, spanText);
|
ssb.insert(spanStart, spanText);
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
import formattedStringCommon = require("./formatted-string-common");
|
import formattedStringCommon = require("./formatted-string-common");
|
||||||
import spanModule = require("text/span");
|
import spanModule = require("text/span");
|
||||||
|
import types = require("utils/types");
|
||||||
|
|
||||||
global.moduleMerge(formattedStringCommon, exports);
|
global.moduleMerge(formattedStringCommon, exports);
|
||||||
|
|
||||||
@ -12,7 +13,7 @@ export class FormattedString extends formattedStringCommon.FormattedString {
|
|||||||
var spanText = "";
|
var spanText = "";
|
||||||
for (i = 0; i < this.spans.length; i++) {
|
for (i = 0; i < this.spans.length; i++) {
|
||||||
var span = <spanModule.Span>this.spans.getItem(i);
|
var span = <spanModule.Span>this.spans.getItem(i);
|
||||||
spanText = span.text || "";
|
spanText = types.toUIString(span.text);
|
||||||
spanLength = spanText.length;
|
spanLength = spanText.length;
|
||||||
span.updateSpanModifiers(this);
|
span.updateSpanModifiers(this);
|
||||||
var attrDict = NSMutableDictionary.alloc().init();
|
var attrDict = NSMutableDictionary.alloc().init();
|
||||||
|
@ -133,7 +133,7 @@ export class EditableTextBase extends common.EditableTextBase {
|
|||||||
|
|
||||||
public _onTextPropertyChanged(data: dependencyObservable.PropertyChangeData) {
|
public _onTextPropertyChanged(data: dependencyObservable.PropertyChangeData) {
|
||||||
if (this._android) {
|
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);
|
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 {
|
export class TextBase extends common.TextBase {
|
||||||
public _onTextPropertyChanged(data: dependencyObservable.PropertyChangeData) {
|
public _onTextPropertyChanged(data: dependencyObservable.PropertyChangeData) {
|
||||||
if (this.android) {
|
if (this.android) {
|
||||||
var newValue = types.isNullOrUndefined(data.newValue) ? "" : data.newValue + "";
|
var newValue = types.toUIString(data.newValue);
|
||||||
this.android.setText(newValue);
|
this.android.setText(newValue);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -4,7 +4,7 @@ import dependencyObservable = require("ui/core/dependency-observable");
|
|||||||
|
|
||||||
export class TextBase extends common.TextBase {
|
export class TextBase extends common.TextBase {
|
||||||
public _onTextPropertyChanged(data: dependencyObservable.PropertyChangeData) {
|
public _onTextPropertyChanged(data: dependencyObservable.PropertyChangeData) {
|
||||||
var newValue = types.isNullOrUndefined(data.newValue) ? "" : data.newValue + "";
|
var newValue = types.toUIString(data.newValue);
|
||||||
this.ios.text = newValue;
|
this.ios.text = newValue;
|
||||||
this.style._updateTextDecoration();
|
this.style._updateTextDecoration();
|
||||||
this.style._updateTextTransform();
|
this.style._updateTextTransform();
|
||||||
|
6
utils/types.d.ts
vendored
6
utils/types.d.ts
vendored
@ -83,4 +83,10 @@
|
|||||||
*/
|
*/
|
||||||
baseClassInfo: ClassInfo;
|
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;
|
||||||
}
|
}
|
@ -98,4 +98,8 @@ export class ClassInfo {
|
|||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export function toUIString(obj): string {
|
||||||
|
return isNullOrUndefined(obj) ? "" : obj + "";
|
||||||
}
|
}
|
Reference in New Issue
Block a user