Skip to content

Commit 6cc868b

Browse files
authored
Add pre-#674 tests for CBOR content (#676)
1 parent 25159a6 commit 6cc868b

3 files changed

Lines changed: 160 additions & 7 deletions

File tree

cbor/src/test/java/tools/jackson/dataformat/cbor/parse/BasicParserTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ public class BasicParserTest extends CBORTestBase
2323
public void testSimpleLiterals() throws Exception
2424
{
2525
ByteArrayOutputStream out = new ByteArrayOutputStream();
26+
2627
JsonGenerator gen = cborGenerator(out);
2728
gen.writeBoolean(true);
2829
assertEquals("/", gen.streamWriteContext().toString());
@@ -246,7 +247,6 @@ public void _testLongChunkedText(String input) throws Exception
246247
assertEquals(input, actual);
247248
p.close();
248249

249-
// one more thing: with 2.8 we have new `getText()` variant
250250
p = cborParser(new ByteArrayInputStream(b));
251251
assertToken(JsonToken.VALUE_STRING, p.nextToken());
252252
StringWriter w = new StringWriter();

cbor/src/test/java/tools/jackson/dataformat/cbor/parse/ParseLongAsciiTextTest.java

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,8 @@
44

55
import org.junit.jupiter.api.Test;
66

7-
import tools.jackson.core.JsonParser;
8-
import tools.jackson.core.JsonToken;
9-
import tools.jackson.core.ObjectReadContext;
10-
import tools.jackson.dataformat.cbor.CBORFactory;
11-
import tools.jackson.dataformat.cbor.CBORParser;
12-
import tools.jackson.dataformat.cbor.CBORTestBase;
7+
import tools.jackson.core.*;
8+
import tools.jackson.dataformat.cbor.*;
139

1410
import static org.junit.jupiter.api.Assertions.assertEquals;
1511

Lines changed: 157 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,157 @@
1+
package tools.jackson.dataformat.cbor.parse;
2+
3+
import org.junit.jupiter.api.Test;
4+
5+
import tools.jackson.core.*;
6+
7+
import tools.jackson.databind.*;
8+
9+
import tools.jackson.dataformat.cbor.CBORTestBase;
10+
11+
import static org.junit.jupiter.api.Assertions.*;
12+
13+
/**
14+
* Basic tests for `JsonParser.streamReadContext()` handling
15+
* wrt. current index, entry count (binary content won't have
16+
* line/column number).
17+
*
18+
* @since 3.1
19+
*/
20+
public class ParserReadContextTest extends CBORTestBase
21+
{
22+
private final ObjectMapper MAPPER = cborMapper();
23+
24+
// Copied from databind `SimpleParserTest`
25+
@Test
26+
void keywords() throws Exception
27+
{
28+
final String JSON = "{\n"
29+
+"\"key1\" : null,\n"
30+
+"\"key2\" : true,\n"
31+
+"\"key3\" : false,\n"
32+
+"\"key4\" : [ false, null, true ]\n"
33+
+"}"
34+
;
35+
36+
final byte[] doc = cborDoc(MAPPER, JSON);
37+
38+
try (JsonParser p = MAPPER.createParser(doc)) {
39+
_testKeywords(p);
40+
}
41+
}
42+
43+
private void _testKeywords(JsonParser p)
44+
{
45+
TokenStreamContext ctxt = p.streamReadContext();
46+
assertEquals("/", ctxt.toString());
47+
assertTrue(ctxt.inRoot());
48+
assertFalse(ctxt.inArray());
49+
assertFalse(ctxt.inObject());
50+
assertEquals(0, ctxt.getEntryCount());
51+
assertEquals(0, ctxt.getCurrentIndex());
52+
53+
// Before advancing to content, we should have following default state...
54+
assertFalse(p.hasCurrentToken());
55+
assertNull(p.getString());
56+
assertNull(p.getStringCharacters());
57+
assertEquals(0, p.getStringLength());
58+
// not sure if this is defined but:
59+
assertEquals(0, p.getStringOffset());
60+
61+
assertToken(JsonToken.START_OBJECT, p.nextToken());
62+
assertEquals("/", ctxt.toString());
63+
64+
assertTrue(p.hasCurrentToken());
65+
TokenStreamLocation loc = p.currentTokenLocation();
66+
assertNotNull(loc);
67+
68+
ctxt = p.streamReadContext();
69+
assertFalse(ctxt.inRoot());
70+
assertFalse(ctxt.inArray());
71+
assertTrue(ctxt.inObject());
72+
assertEquals(0, ctxt.getCurrentIndex());
73+
assertEquals(0, ctxt.getEntryCount());
74+
75+
assertToken(JsonToken.PROPERTY_NAME, p.nextToken());
76+
verifyFieldName(p, "key1");
77+
assertEquals("{\"key1\"}", ctxt.toString());
78+
79+
ctxt = p.streamReadContext();
80+
assertFalse(ctxt.inRoot());
81+
assertFalse(ctxt.inArray());
82+
assertTrue(ctxt.inObject());
83+
assertEquals(0, ctxt.getCurrentIndex());
84+
assertEquals(1, ctxt.getEntryCount());
85+
assertEquals("key1", ctxt.currentName());
86+
87+
assertToken(JsonToken.VALUE_NULL, p.nextToken());
88+
assertEquals("key1", ctxt.currentName());
89+
90+
ctxt = p.streamReadContext();
91+
assertEquals(0, ctxt.getCurrentIndex());
92+
assertEquals(1, ctxt.getEntryCount());
93+
94+
assertToken(JsonToken.PROPERTY_NAME, p.nextToken());
95+
verifyFieldName(p, "key2");
96+
ctxt = p.streamReadContext();
97+
assertEquals(1, ctxt.getCurrentIndex());
98+
assertEquals(2, ctxt.getEntryCount());
99+
assertEquals("key2", ctxt.currentName());
100+
101+
assertToken(JsonToken.VALUE_TRUE, p.nextToken());
102+
assertEquals(1, ctxt.getCurrentIndex());
103+
assertEquals(2, ctxt.getEntryCount());
104+
assertEquals("key2", ctxt.currentName());
105+
106+
assertToken(JsonToken.PROPERTY_NAME, p.nextToken());
107+
verifyFieldName(p, "key3");
108+
assertEquals(2, ctxt.getCurrentIndex());
109+
assertEquals(3, ctxt.getEntryCount());
110+
assertToken(JsonToken.VALUE_FALSE, p.nextToken());
111+
assertEquals(2, ctxt.getCurrentIndex());
112+
assertEquals(3, ctxt.getEntryCount());
113+
114+
assertToken(JsonToken.PROPERTY_NAME, p.nextToken());
115+
verifyFieldName(p, "key4");
116+
assertEquals(3, ctxt.getCurrentIndex());
117+
assertEquals(4, ctxt.getEntryCount());
118+
119+
assertToken(JsonToken.START_ARRAY, p.nextToken());
120+
ctxt = p.streamReadContext();
121+
assertTrue(ctxt.inArray());
122+
assertNull(ctxt.currentName());
123+
assertEquals(0, ctxt.getCurrentIndex());
124+
assertEquals(0, ctxt.getEntryCount());
125+
assertEquals("key4", ctxt.getParent().currentName());
126+
127+
assertToken(JsonToken.VALUE_FALSE, p.nextToken());
128+
assertEquals(0, ctxt.getCurrentIndex());
129+
assertEquals(1, ctxt.getEntryCount());
130+
assertEquals("[0]", ctxt.toString());
131+
132+
assertToken(JsonToken.VALUE_NULL, p.nextToken());
133+
assertEquals(1, ctxt.getCurrentIndex());
134+
assertEquals(2, ctxt.getEntryCount());
135+
136+
assertToken(JsonToken.VALUE_TRUE, p.nextToken());
137+
assertEquals(2, ctxt.getCurrentIndex());
138+
assertEquals(3, ctxt.getEntryCount());
139+
140+
assertToken(JsonToken.END_ARRAY, p.nextToken());
141+
142+
ctxt = p.streamReadContext();
143+
assertTrue(ctxt.inObject());
144+
145+
assertToken(JsonToken.END_OBJECT, p.nextToken());
146+
ctxt = p.streamReadContext();
147+
assertTrue(ctxt.inRoot());
148+
assertNull(ctxt.currentName());
149+
}
150+
151+
private void verifyFieldName(JsonParser p, String expName)
152+
{
153+
assertEquals(expName, p.getString());
154+
assertEquals(expName, p.currentName());
155+
}
156+
157+
}

0 commit comments

Comments
 (0)