| Index: third_party/protobuf/java/core/src/test/java/com/google/protobuf/IsValidUtf8Test.java
|
| diff --git a/third_party/protobuf/java/src/test/java/com/google/protobuf/IsValidUtf8Test.java b/third_party/protobuf/java/core/src/test/java/com/google/protobuf/IsValidUtf8Test.java
|
| similarity index 67%
|
| rename from third_party/protobuf/java/src/test/java/com/google/protobuf/IsValidUtf8Test.java
|
| rename to third_party/protobuf/java/core/src/test/java/com/google/protobuf/IsValidUtf8Test.java
|
| index 8751baaeaa3e65ef0596d740d6b1f4d679128999..756049b41fd1ca3a7a3fb040288192eb15714579 100644
|
| --- a/third_party/protobuf/java/src/test/java/com/google/protobuf/IsValidUtf8Test.java
|
| +++ b/third_party/protobuf/java/core/src/test/java/com/google/protobuf/IsValidUtf8Test.java
|
| @@ -30,12 +30,18 @@
|
|
|
| package com.google.protobuf;
|
|
|
| +import static com.google.protobuf.IsValidUtf8TestUtil.DIRECT_NIO_FACTORY;
|
| +import static com.google.protobuf.IsValidUtf8TestUtil.EXPECTED_ONE_BYTE_ROUNDTRIPPABLE_COUNT;
|
| +import static com.google.protobuf.IsValidUtf8TestUtil.EXPECTED_THREE_BYTE_ROUNDTRIPPABLE_COUNT;
|
| +import static com.google.protobuf.IsValidUtf8TestUtil.HEAP_NIO_FACTORY;
|
| +import static com.google.protobuf.IsValidUtf8TestUtil.LITERAL_FACTORY;
|
| +import static com.google.protobuf.IsValidUtf8TestUtil.testBytes;
|
| +
|
| +import com.google.protobuf.IsValidUtf8TestUtil.ByteStringFactory;
|
| import com.google.protobuf.IsValidUtf8TestUtil.Shard;
|
|
|
| import junit.framework.TestCase;
|
|
|
| -import java.io.UnsupportedEncodingException;
|
| -
|
| /**
|
| * Tests cases for {@link ByteString#isValidUtf8()}. This includes three
|
| * brute force tests that actually test every permutation of one byte, two byte,
|
| @@ -51,31 +57,33 @@ import java.io.UnsupportedEncodingException;
|
| * @author martinrb@google.com (Martin Buchholz)
|
| */
|
| public class IsValidUtf8Test extends TestCase {
|
| -
|
| /**
|
| * Tests that round tripping of all two byte permutations work.
|
| */
|
| - public void testIsValidUtf8_1Byte() throws UnsupportedEncodingException {
|
| - IsValidUtf8TestUtil.testBytes(1,
|
| - IsValidUtf8TestUtil.EXPECTED_ONE_BYTE_ROUNDTRIPPABLE_COUNT);
|
| + public void testIsValidUtf8_1Byte() {
|
| + testBytes(LITERAL_FACTORY, 1, EXPECTED_ONE_BYTE_ROUNDTRIPPABLE_COUNT);
|
| + testBytes(HEAP_NIO_FACTORY, 1, EXPECTED_ONE_BYTE_ROUNDTRIPPABLE_COUNT);
|
| + testBytes(DIRECT_NIO_FACTORY, 1, EXPECTED_ONE_BYTE_ROUNDTRIPPABLE_COUNT);
|
| }
|
|
|
| /**
|
| * Tests that round tripping of all two byte permutations work.
|
| */
|
| - public void testIsValidUtf8_2Bytes() throws UnsupportedEncodingException {
|
| - IsValidUtf8TestUtil.testBytes(2,
|
| - IsValidUtf8TestUtil.EXPECTED_TWO_BYTE_ROUNDTRIPPABLE_COUNT);
|
| + public void testIsValidUtf8_2Bytes() {
|
| + testBytes(LITERAL_FACTORY, 2, IsValidUtf8TestUtil.EXPECTED_TWO_BYTE_ROUNDTRIPPABLE_COUNT);
|
| + testBytes(HEAP_NIO_FACTORY, 2, IsValidUtf8TestUtil.EXPECTED_TWO_BYTE_ROUNDTRIPPABLE_COUNT);
|
| + testBytes(DIRECT_NIO_FACTORY, 2, IsValidUtf8TestUtil.EXPECTED_TWO_BYTE_ROUNDTRIPPABLE_COUNT);
|
| }
|
|
|
| /**
|
| * Tests that round tripping of all three byte permutations work.
|
| */
|
| - public void testIsValidUtf8_3Bytes() throws UnsupportedEncodingException {
|
| + public void testIsValidUtf8_3Bytes() {
|
| // Travis' OOM killer doesn't like this test
|
| if (System.getenv("TRAVIS") == null) {
|
| - IsValidUtf8TestUtil.testBytes(3,
|
| - IsValidUtf8TestUtil.EXPECTED_THREE_BYTE_ROUNDTRIPPABLE_COUNT);
|
| + testBytes(LITERAL_FACTORY, 3, EXPECTED_THREE_BYTE_ROUNDTRIPPABLE_COUNT);
|
| + testBytes(HEAP_NIO_FACTORY, 3, EXPECTED_THREE_BYTE_ROUNDTRIPPABLE_COUNT);
|
| + testBytes(DIRECT_NIO_FACTORY, 3, EXPECTED_THREE_BYTE_ROUNDTRIPPABLE_COUNT);
|
| }
|
| }
|
|
|
| @@ -85,8 +93,7 @@ public class IsValidUtf8Test extends TestCase {
|
| * {@link IsValidUtf8FourByteTest} is used for full coverage. This method
|
| * tests specific four-byte cases.
|
| */
|
| - public void testIsValidUtf8_4BytesSamples()
|
| - throws UnsupportedEncodingException {
|
| + public void testIsValidUtf8_4BytesSamples() {
|
| // Valid 4 byte.
|
| assertValidUtf8(0xF0, 0xA4, 0xAD, 0xA2);
|
|
|
| @@ -119,9 +126,7 @@ public class IsValidUtf8Test extends TestCase {
|
| assertTrue(asBytes("\u024B62\u024B62").isValidUtf8());
|
|
|
| // Mixed string
|
| - assertTrue(
|
| - asBytes("a\u020ac\u00a2b\\u024B62u020acc\u00a2de\u024B62")
|
| - .isValidUtf8());
|
| + assertTrue(asBytes("a\u020ac\u00a2b\\u024B62u020acc\u00a2de\u024B62").isValidUtf8());
|
|
|
| // Not a valid string
|
| assertInvalidUtf8(-1, 0, -1, 0);
|
| @@ -135,36 +140,35 @@ public class IsValidUtf8Test extends TestCase {
|
| return realBytes;
|
| }
|
|
|
| - private ByteString toByteString(int... bytes) {
|
| - return ByteString.copyFrom(toByteArray(bytes));
|
| - }
|
| -
|
| - private void assertValidUtf8(int[] bytes, boolean not) {
|
| + private void assertValidUtf8(ByteStringFactory factory, int[] bytes, boolean not) {
|
| byte[] realBytes = toByteArray(bytes);
|
| assertTrue(not ^ Utf8.isValidUtf8(realBytes));
|
| assertTrue(not ^ Utf8.isValidUtf8(realBytes, 0, bytes.length));
|
| - ByteString lit = ByteString.copyFrom(realBytes);
|
| - ByteString sub = lit.substring(0, bytes.length);
|
| - assertTrue(not ^ lit.isValidUtf8());
|
| + ByteString leaf = factory.newByteString(realBytes);
|
| + ByteString sub = leaf.substring(0, bytes.length);
|
| + assertTrue(not ^ leaf.isValidUtf8());
|
| assertTrue(not ^ sub.isValidUtf8());
|
| ByteString[] ropes = {
|
| - RopeByteString.newInstanceForTest(ByteString.EMPTY, lit),
|
| - RopeByteString.newInstanceForTest(ByteString.EMPTY, sub),
|
| - RopeByteString.newInstanceForTest(lit, ByteString.EMPTY),
|
| - RopeByteString.newInstanceForTest(sub, ByteString.EMPTY),
|
| - RopeByteString.newInstanceForTest(sub, lit)
|
| - };
|
| + RopeByteString.newInstanceForTest(ByteString.EMPTY, leaf),
|
| + RopeByteString.newInstanceForTest(ByteString.EMPTY, sub),
|
| + RopeByteString.newInstanceForTest(leaf, ByteString.EMPTY),
|
| + RopeByteString.newInstanceForTest(sub, ByteString.EMPTY),
|
| + RopeByteString.newInstanceForTest(sub, leaf)};
|
| for (ByteString rope : ropes) {
|
| assertTrue(not ^ rope.isValidUtf8());
|
| }
|
| }
|
|
|
| private void assertValidUtf8(int... bytes) {
|
| - assertValidUtf8(bytes, false);
|
| + assertValidUtf8(LITERAL_FACTORY, bytes, false);
|
| + assertValidUtf8(HEAP_NIO_FACTORY, bytes, false);
|
| + assertValidUtf8(DIRECT_NIO_FACTORY, bytes, false);
|
| }
|
|
|
| private void assertInvalidUtf8(int... bytes) {
|
| - assertValidUtf8(bytes, true);
|
| + assertValidUtf8(LITERAL_FACTORY, bytes, true);
|
| + assertValidUtf8(HEAP_NIO_FACTORY, bytes, true);
|
| + assertValidUtf8(DIRECT_NIO_FACTORY, bytes, true);
|
| }
|
|
|
| private static ByteString asBytes(String s) {
|
| @@ -177,7 +181,6 @@ public class IsValidUtf8Test extends TestCase {
|
| for (Shard shard : IsValidUtf8TestUtil.FOUR_BYTE_SHARDS) {
|
| actual += shard.expected;
|
| }
|
| - assertEquals(IsValidUtf8TestUtil.EXPECTED_FOUR_BYTE_ROUNDTRIPPABLE_COUNT,
|
| - actual);
|
| + assertEquals(IsValidUtf8TestUtil.EXPECTED_FOUR_BYTE_ROUNDTRIPPABLE_COUNT, actual);
|
| }
|
| }
|
|
|