Loading core/tests/coretests/src/android/util/BinaryXmlTest.java +50 −0 Original line number Original line Diff line number Diff line Loading @@ -24,6 +24,8 @@ import static android.util.XmlTest.doVerifyRead; import static android.util.XmlTest.doVerifyWrite; import static android.util.XmlTest.doVerifyWrite; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertThrows; import static org.junit.Assert.fail; import static org.xmlpull.v1.XmlPullParser.START_TAG; import static org.xmlpull.v1.XmlPullParser.START_TAG; import android.os.PersistableBundle; import android.os.PersistableBundle; Loading @@ -41,12 +43,15 @@ import java.io.ByteArrayOutputStream; import java.io.File; import java.io.File; import java.io.FileInputStream; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.InputStream; import java.io.OutputStream; import java.io.OutputStream; import java.nio.charset.StandardCharsets; import java.nio.charset.StandardCharsets; @RunWith(AndroidJUnit4.class) @RunWith(AndroidJUnit4.class) public class BinaryXmlTest { public class BinaryXmlTest { private static final int MAX_UNSIGNED_SHORT = 65_535; /** /** * Verify that we can write and read large numbers of interned * Verify that we can write and read large numbers of interned * {@link String} values. * {@link String} values. Loading Loading @@ -170,4 +175,49 @@ public class BinaryXmlTest { } } } } } } @Test public void testAttributeBytes_BinaryDataOverflow() throws Exception { final TypedXmlSerializer out = Xml.newBinarySerializer(); final ByteArrayOutputStream os = new ByteArrayOutputStream(); out.setOutput(os, StandardCharsets.UTF_8.name()); final byte[] testBytes = new byte[MAX_UNSIGNED_SHORT + 1]; assertThrows(IOException.class, () -> out.attributeBytesHex(/* namespace */ null, /* name */ "attributeBytesHex", testBytes)); assertThrows(IOException.class, () -> out.attributeBytesBase64(/* namespace */ null, /* name */ "attributeBytesBase64", testBytes)); } @Test public void testAttributeBytesHex_MaximumBinaryData() throws Exception { final TypedXmlSerializer out = Xml.newBinarySerializer(); final ByteArrayOutputStream os = new ByteArrayOutputStream(); out.setOutput(os, StandardCharsets.UTF_8.name()); final byte[] testBytes = new byte[MAX_UNSIGNED_SHORT]; try { out.attributeBytesHex(/* namespace */ null, /* name */ "attributeBytesHex", testBytes); } catch (Exception e) { fail("testAttributeBytesHex fails with exception: " + e.toString()); } } @Test public void testAttributeBytesBase64_MaximumBinaryData() throws Exception { final TypedXmlSerializer out = Xml.newBinarySerializer(); final ByteArrayOutputStream os = new ByteArrayOutputStream(); out.setOutput(os, StandardCharsets.UTF_8.name()); final byte[] testBytes = new byte[MAX_UNSIGNED_SHORT]; try { out.attributeBytesBase64(/* namespace */ null, /* name */ "attributeBytesBase64", testBytes); } catch (Exception e) { fail("testAttributeBytesBase64 fails with exception: " + e.toString()); } } } } Loading
core/tests/coretests/src/android/util/BinaryXmlTest.java +50 −0 Original line number Original line Diff line number Diff line Loading @@ -24,6 +24,8 @@ import static android.util.XmlTest.doVerifyRead; import static android.util.XmlTest.doVerifyWrite; import static android.util.XmlTest.doVerifyWrite; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertThrows; import static org.junit.Assert.fail; import static org.xmlpull.v1.XmlPullParser.START_TAG; import static org.xmlpull.v1.XmlPullParser.START_TAG; import android.os.PersistableBundle; import android.os.PersistableBundle; Loading @@ -41,12 +43,15 @@ import java.io.ByteArrayOutputStream; import java.io.File; import java.io.File; import java.io.FileInputStream; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.InputStream; import java.io.OutputStream; import java.io.OutputStream; import java.nio.charset.StandardCharsets; import java.nio.charset.StandardCharsets; @RunWith(AndroidJUnit4.class) @RunWith(AndroidJUnit4.class) public class BinaryXmlTest { public class BinaryXmlTest { private static final int MAX_UNSIGNED_SHORT = 65_535; /** /** * Verify that we can write and read large numbers of interned * Verify that we can write and read large numbers of interned * {@link String} values. * {@link String} values. Loading Loading @@ -170,4 +175,49 @@ public class BinaryXmlTest { } } } } } } @Test public void testAttributeBytes_BinaryDataOverflow() throws Exception { final TypedXmlSerializer out = Xml.newBinarySerializer(); final ByteArrayOutputStream os = new ByteArrayOutputStream(); out.setOutput(os, StandardCharsets.UTF_8.name()); final byte[] testBytes = new byte[MAX_UNSIGNED_SHORT + 1]; assertThrows(IOException.class, () -> out.attributeBytesHex(/* namespace */ null, /* name */ "attributeBytesHex", testBytes)); assertThrows(IOException.class, () -> out.attributeBytesBase64(/* namespace */ null, /* name */ "attributeBytesBase64", testBytes)); } @Test public void testAttributeBytesHex_MaximumBinaryData() throws Exception { final TypedXmlSerializer out = Xml.newBinarySerializer(); final ByteArrayOutputStream os = new ByteArrayOutputStream(); out.setOutput(os, StandardCharsets.UTF_8.name()); final byte[] testBytes = new byte[MAX_UNSIGNED_SHORT]; try { out.attributeBytesHex(/* namespace */ null, /* name */ "attributeBytesHex", testBytes); } catch (Exception e) { fail("testAttributeBytesHex fails with exception: " + e.toString()); } } @Test public void testAttributeBytesBase64_MaximumBinaryData() throws Exception { final TypedXmlSerializer out = Xml.newBinarySerializer(); final ByteArrayOutputStream os = new ByteArrayOutputStream(); out.setOutput(os, StandardCharsets.UTF_8.name()); final byte[] testBytes = new byte[MAX_UNSIGNED_SHORT]; try { out.attributeBytesBase64(/* namespace */ null, /* name */ "attributeBytesBase64", testBytes); } catch (Exception e) { fail("testAttributeBytesBase64 fails with exception: " + e.toString()); } } } }