31 package com.google.protobuf;
33 import java.nio.ByteBuffer;
34 import java.util.Arrays;
35 import java.util.Random;
36 import java.util.regex.Pattern;
37 import junit.framework.TestCase;
43 private static final Utf8.Processor
safeProcessor =
new Utf8.SafeProcessor();
89 final Random rnd =
new Random(seed);
90 StringBuilder
sb =
new StringBuilder();
94 codePoint = rnd.nextInt(maxCodePoint);
95 }
while (Utf8Utils.isSurrogate(codePoint));
96 sb.appendCodePoint(codePoint);
108 "isValidUtf8[NIO_HEAP]",
113 buffer = ByteBuffer.allocateDirect(
data.length);
117 "isValidUtf8[NIO_DEFAULT]",
121 "isValidUtf8[NIO_UNSAFE]",
129 assertTrue(
"encodeUtf8[ARRAY]", Arrays.equals(expected,
output));
132 assertTrue(
"encodeUtf8[ARRAY_UNSAFE]", Arrays.equals(expected,
output));
135 assertTrue(
"encodeUtf8[NIO_HEAP]", Arrays.equals(expected,
output));
138 assertTrue(
"encodeUtf8[NIO_DEFAULT]", Arrays.equals(expected,
output));
141 assertTrue(
"encodeUtf8[NIO_UNSAFE]", Arrays.equals(expected,
output));
146 Class<ArrayIndexOutOfBoundsException> clazz = ArrayIndexOutOfBoundsException.class;
150 fail(
"Expected " + clazz.getSimpleName());
151 }
catch (Throwable t) {
153 assertExceptionType(t, clazz);
160 fail(
"Expected " + clazz.getSimpleName());
161 }
catch (Throwable t) {
162 assertExceptionType(t, clazz);
169 fail(
"Expected " + clazz.getSimpleName());
170 }
catch (Throwable t) {
172 assertExceptionType(t, clazz);
179 fail(
"Expected " + clazz.getSimpleName());
180 }
catch (Throwable t) {
182 assertExceptionType(t, clazz);
189 fail(
"Expected " + clazz.getSimpleName());
190 }
catch (Throwable t) {
192 assertExceptionType(t, clazz);
196 if (!Android.isOnAndroidDevice()) {
209 String
message,
int length,
boolean direct, Utf8.Processor processor) {
210 ByteBuffer
buffer = direct ? ByteBuffer.allocateDirect(
length) : ByteBuffer.allocate(
length);
220 private <T extends Throwable>
void assertExceptionType(Throwable t, Class<T> expected) {
221 if (!expected.isAssignableFrom(t.getClass())) {
222 fail(
"Expected " + expected.getSimpleName() +
", but found " + t.getClass().getSimpleName());
227 String pattern =
"Failed writing (.) at index " +
index;
229 t.getMessage() +
" does not match pattern " + pattern,
230 Pattern.matches(pattern, t.getMessage()));