diff options
author | Jesse Wilson <jessewilson@google.com> | 2010-11-19 13:44:33 -0800 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2010-11-19 13:44:33 -0800 |
commit | 6e0427a2cc92c2414305cf35f3aa43c00f5f87b8 (patch) | |
tree | 8ca91f8035de71d84e3c67eb46e0765b9ac6819f | |
parent | 2cfb2ad66741e923bcd99719bb6b8f4e1189dd4d (diff) | |
parent | e18eccdf4719fef764651d2560264fe2d17a7493 (diff) | |
download | libcore-6e0427a2cc92c2414305cf35f3aa43c00f5f87b8.zip libcore-6e0427a2cc92c2414305cf35f3aa43c00f5f87b8.tar.gz libcore-6e0427a2cc92c2414305cf35f3aa43c00f5f87b8.tar.bz2 |
Merge "More tests for XML pull parsing." into dalvik-dev
-rw-r--r-- | luni/src/test/java/org/apache/harmony/xml/PullParserTest.java | 58 |
1 files changed, 43 insertions, 15 deletions
diff --git a/luni/src/test/java/org/apache/harmony/xml/PullParserTest.java b/luni/src/test/java/org/apache/harmony/xml/PullParserTest.java index fa6c54e..e0d8996 100644 --- a/luni/src/test/java/org/apache/harmony/xml/PullParserTest.java +++ b/luni/src/test/java/org/apache/harmony/xml/PullParserTest.java @@ -89,31 +89,53 @@ public abstract class PullParserTest extends TestCase { assertEquals("a", parser.getName()); } - public void testLargeNumericEntities() throws Exception { + public void testNumericEntitiesLargerThanChar() throws Exception { XmlPullParser parser = newPullParser(); parser.setInput(new StringReader( "<foo>� &#-2147483648;</foo>")); assertEquals(XmlPullParser.START_TAG, parser.next()); - assertEquals(XmlPullParser.TEXT, parser.next()); - // TODO: this can't possibly be what the spec wants; it should refuse too-large characters - assertEquals(new String(new char[] { (char) 2147483647, ' ', (char) -2147483648}), - parser.getText()); + assertNextFails(parser); } - public void testVeryLargeNumericEntities() throws Exception { + public void testNumericEntitiesLargerThanInt() throws Exception { XmlPullParser parser = newPullParser(); parser.setInput(new StringReader( "<foo>�</foo>")); assertEquals(XmlPullParser.START_TAG, parser.next()); - // TODO: this can't possibly be what the spec wants; it should throw another type assertNextFails(parser); } - public void testOmittedNumericEntities() throws Exception { + public void testCharacterReferenceOfHexUtf16Surrogates() throws Exception { + testCharacterReferenceOfUtf16Surrogates("<foo>𐀀 𐎁 􏿰</foo>"); + } + + public void testCharacterReferenceOfDecimalUtf16Surrogates() throws Exception { + testCharacterReferenceOfUtf16Surrogates("<foo>𐀀 𐎁 􏿰</foo>"); + } + + private void testCharacterReferenceOfUtf16Surrogates(String xml) throws Exception { + XmlPullParser parser = newPullParser(); + parser.setInput(new StringReader(xml)); + assertEquals(XmlPullParser.START_TAG, parser.next()); + assertEquals(XmlPullParser.TEXT, parser.next()); + assertEquals(new String(new int[] { 65536, ' ', 66433, ' ', 1114096 }, 0, 5), + parser.getText()); + assertEquals(XmlPullParser.END_TAG, parser.next()); + } + + public void testCharacterReferenceOfLastUtf16Surrogate() throws Exception { + XmlPullParser parser = newPullParser(); + parser.setInput(new StringReader("<foo></foo>")); + assertEquals(XmlPullParser.START_TAG, parser.next()); + assertEquals(XmlPullParser.TEXT, parser.next()); + assertEquals(new String(new int[] { 0x10FFFF }, 0, 1), parser.getText()); + assertEquals(XmlPullParser.END_TAG, parser.next()); + } + + public void testOmittedNumericEntities() throws Exception { XmlPullParser parser = newPullParser(); parser.setInput(new StringReader("<foo>&#;</foo>")); assertEquals(XmlPullParser.START_TAG, parser.next()); - // TODO: this can't possibly be what the spec wants; it should throw another type assertNextFails(parser); } @@ -203,14 +225,14 @@ public abstract class PullParserTest extends TestCase { parser.setInput(new StringReader("<foo>></foo>")); assertEquals(XmlPullParser.START_TAG, parser.next()); assertEquals(XmlPullParser.TEXT, parser.next()); - assertEquals(">", parser.getText()); // TODO: this should probably fail? + assertEquals(">", parser.getText()); } public void testGreaterThanInAttribute() throws Exception{ XmlPullParser parser = newPullParser(); parser.setInput(new StringReader("<foo a='>'></foo>")); assertEquals(XmlPullParser.START_TAG, parser.next()); - assertEquals(">", parser.getAttributeValue(0)); // TODO: this should probably fail? + assertEquals(">", parser.getAttributeValue(0)); } public void testLessThanInText() throws Exception{ @@ -281,7 +303,6 @@ public abstract class PullParserTest extends TestCase { XmlPullParser parser = newPullParser(); parser.setInput(new StringReader("<foo><!-- -- --></foo>")); assertEquals(XmlPullParser.START_TAG, parser.next()); - // TODO: confirm with the spec that this should fail assertNextFails(parser); } @@ -330,7 +351,7 @@ public abstract class PullParserTest extends TestCase { assertEquals(XmlPullParser.START_TAG, parser.next()); assertEquals(XmlPullParser.TEXT, parser.next()); assertEquals("abcdef]]gh&ijk", parser.getText()); - assertEquals(XmlPullParser.END_TAG, parser.nextToken()); + assertEquals(XmlPullParser.END_TAG, parser.next()); } public void testCdataWithNextToken() throws Exception { @@ -441,11 +462,18 @@ public abstract class PullParserTest extends TestCase { assertEquals("7,7", parser.getLineNumber() + "," + parser.getColumnNumber()); } - public void testEmptyCdata() throws Exception { + public void testEmptyCdataWithNext() throws Exception { XmlPullParser parser = newPullParser(); parser.setInput(new StringReader("<foo><![CDATA[]]></foo>")); assertEquals(XmlPullParser.START_TAG, parser.next()); - assertEquals(XmlPullParser.TEXT, parser.next()); // TODO: This should probably fail! + assertEquals(XmlPullParser.END_TAG, parser.next()); + } + + public void testEmptyCdataWithNextToken() throws Exception { + XmlPullParser parser = newPullParser(); + parser.setInput(new StringReader("<foo><![CDATA[]]></foo>")); + assertEquals(XmlPullParser.START_TAG, parser.next()); + assertEquals(XmlPullParser.CDSECT, parser.nextToken()); assertEquals("", parser.getText()); assertEquals(XmlPullParser.END_TAG, parser.next()); } |