/
SerializedStringTest.java
86 lines (71 loc) · 3.03 KB
/
SerializedStringTest.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
package tools.jackson.core.util;
import java.io.*;
import java.nio.ByteBuffer;
import java.util.Arrays;
import org.junit.jupiter.api.Test;
import tools.jackson.core.SerializableString;
import tools.jackson.core.io.SerializedString;
import static org.junit.jupiter.api.Assertions.assertEquals;
/**
* Simple unit tests to try to verify that the default
* {@link SerializableString} implementation works as expected.
*/
class SerializedStringTest
extends tools.jackson.core.JUnit5TestBase
{
private static final String QUOTED = "\\\"quo\\\\ted\\\"";
@Test
void appending() throws IOException
{
final String INPUT = "\"quo\\ted\"";
SerializableString sstr = new SerializedString(INPUT);
// sanity checks first:
assertEquals(sstr.getValue(), INPUT);
assertEquals(QUOTED, new String(sstr.asQuotedChars()));
ByteArrayOutputStream bytes = new ByteArrayOutputStream();
assertEquals(QUOTED.length(), sstr.writeQuotedUTF8(bytes));
assertEquals(QUOTED, bytes.toString("UTF-8"));
bytes.reset();
assertEquals(INPUT.length(), sstr.writeUnquotedUTF8(bytes));
assertEquals(INPUT, bytes.toString("UTF-8"));
byte[] buffer = new byte[100];
assertEquals(QUOTED.length(), sstr.appendQuotedUTF8(buffer, 3));
assertEquals(QUOTED, new String(buffer, 3, QUOTED.length()));
Arrays.fill(buffer, (byte) 0);
assertEquals(INPUT.length(), sstr.appendUnquotedUTF8(buffer, 5));
assertEquals(INPUT, new String(buffer, 5, INPUT.length()));
}
@Test
void failedAccess() throws IOException
{
final String INPUT = "Bit longer text";
SerializableString sstr = new SerializedString(INPUT);
final byte[] buffer = new byte[INPUT.length() - 2];
final char[] ch = new char[INPUT.length() - 2];
final ByteBuffer bbuf = ByteBuffer.allocate(INPUT.length() - 2);
assertEquals(-1, sstr.appendQuotedUTF8(buffer, 0));
assertEquals(-1, sstr.appendQuoted(ch, 0));
assertEquals(-1, sstr.putQuotedUTF8(bbuf));
bbuf.rewind();
assertEquals(-1, sstr.appendUnquotedUTF8(buffer, 0));
assertEquals(-1, sstr.appendUnquoted(ch, 0));
assertEquals(-1, sstr.putUnquotedUTF8(bbuf));
}
@Test
void testAppendQuotedUTF8() throws IOException {
SerializedString sstr = new SerializedString(QUOTED);
assertEquals(QUOTED, sstr.getValue());
final byte[] buffer = new byte[100];
final int len = sstr.appendQuotedUTF8(buffer, 3);
assertEquals("\\\\\\\"quo\\\\\\\\ted\\\\\\\"", new String(buffer, 3, len));
}
@Test
void testJdkSerialize() throws IOException {
final byte[] bytes = jdkSerialize(new SerializedString(QUOTED));
SerializedString sstr = jdkDeserialize(bytes);
assertEquals(QUOTED, sstr.getValue());
final byte[] buffer = new byte[100];
final int len = sstr.appendQuotedUTF8(buffer, 3);
assertEquals("\\\\\\\"quo\\\\\\\\ted\\\\\\\"", new String(buffer, 3, len));
}
}