am 425db473: Merge "CHAR_SEQUENCE_CREATOR cannot handle null string"

* commit '425db473a05e4204301bf46d4ab6f51b12d9c447':
  CHAR_SEQUENCE_CREATOR cannot handle null string
This commit is contained in:
Conley Owens
2011-04-29 10:24:23 -07:00
committed by Android Git Automerger
2 changed files with 55 additions and 3 deletions

View File

@@ -627,10 +627,16 @@ public class TextUtils {
public CharSequence createFromParcel(Parcel p) {
int kind = p.readInt();
if (kind == 1)
return p.readString();
String string = p.readString();
if (string == null) {
return null;
}
SpannableString sp = new SpannableString(p.readString());
if (kind == 1) {
return string;
}
SpannableString sp = new SpannableString(string);
while (true) {
kind = p.readInt();

View File

@@ -17,6 +17,7 @@
package android.text;
import android.graphics.Paint;
import android.os.Parcel;
import android.test.suitebuilder.annotation.LargeTest;
import android.test.suitebuilder.annotation.SmallTest;
import android.text.Spannable;
@@ -352,6 +353,51 @@ public class TextUtilsTest extends TestCase {
assertFalse(TextUtils.delimitedStringContains("network,mock,gpsx", ',', "gps"));
}
@SmallTest
public void testCharSequenceCreator() {
Parcel p = Parcel.obtain();
TextUtils.writeToParcel(null, p, 0);
CharSequence text = TextUtils.CHAR_SEQUENCE_CREATOR.createFromParcel(p);
assertNull("null CharSequence should generate null from parcel", text);
p = Parcel.obtain();
TextUtils.writeToParcel("test", p, 0);
text = TextUtils.CHAR_SEQUENCE_CREATOR.createFromParcel(p);
assertEquals("conversion to/from parcel failed", "test", text);
}
@SmallTest
public void testCharSequenceCreatorNull() {
Parcel p;
CharSequence text;
p = Parcel.obtain();
TextUtils.writeToParcel(null, p, 0);
p.setDataPosition(0);
text = TextUtils.CHAR_SEQUENCE_CREATOR.createFromParcel(p);
assertNull("null CharSequence should generate null from parcel", text);
}
@SmallTest
public void testCharSequenceCreatorSpannable() {
Parcel p;
CharSequence text;
p = Parcel.obtain();
TextUtils.writeToParcel(new SpannableString("test"), p, 0);
p.setDataPosition(0);
text = TextUtils.CHAR_SEQUENCE_CREATOR.createFromParcel(p);
assertEquals("conversion to/from parcel failed", "test", text.toString());
}
@SmallTest
public void testCharSequenceCreatorString() {
Parcel p;
CharSequence text;
p = Parcel.obtain();
TextUtils.writeToParcel("test", p, 0);
p.setDataPosition(0);
text = TextUtils.CHAR_SEQUENCE_CREATOR.createFromParcel(p);
assertEquals("conversion to/from parcel failed", "test", text.toString());
}
/**
* CharSequence wrapper for testing the cases where text is copied into
* a char array instead of working from a String or a Spanned.