4
4
5
5
import org .junit .jupiter .api .Test ;
6
6
7
- import com .fasterxml .jackson .core .JsonParser ;
8
7
import com .fasterxml .jackson .core .JsonToken ;
9
8
import com .fasterxml .jackson .dataformat .cbor .*;
10
9
11
10
import static org .junit .jupiter .api .Assertions .assertEquals ;
12
11
import static org .junit .jupiter .api .Assertions .assertNull ;
12
+ import static org .junit .jupiter .api .Assertions .assertTrue ;
13
13
14
14
// for [dataformat-binary#93]
15
15
public class UndefinedValueTest extends CBORTestBase
16
16
{
17
- private final static byte BYTE_UNDEFINED = (byte ) 0xF7 ;
17
+ private final static byte BYTE_UNDEFINED = (byte ) CBORConstants . SIMPLE_VALUE_UNDEFINED ;
18
18
19
19
private final CBORFactory CBOR_F = cborFactory ();
20
20
21
21
@ Test
22
22
public void testUndefinedLiteralStreaming () throws Exception
23
23
{
24
- JsonParser p = cborParser (CBOR_F , new byte [] { BYTE_UNDEFINED });
24
+ CBORParser p = cborParser (CBOR_F , new byte [] { BYTE_UNDEFINED });
25
25
assertEquals (JsonToken .VALUE_NULL , p .nextToken ());
26
+ assertTrue (p .isUndefined ());
27
+ assertNull (p .nextToken ());
28
+ p .close ();
29
+ }
30
+
31
+ // @since 2.20 [jackson-dataformats-binary/137]
32
+ @ Test
33
+ public void testUndefinedLiteralAsEmbeddedObject () throws Exception {
34
+ CBORFactory f = CBORFactory .builder ()
35
+ .enable (CBORParser .Feature .HANDLE_UNDEFINED_AS_EMBEDDED_OBJECT )
36
+ .build ();
37
+ CBORParser p = cborParser (f , new byte [] { BYTE_UNDEFINED });
38
+
39
+ assertEquals (JsonToken .VALUE_EMBEDDED_OBJECT , p .nextToken ());
40
+ assertTrue (p .isUndefined ());
26
41
assertNull (p .nextToken ());
27
42
p .close ();
28
43
}
@@ -34,9 +49,30 @@ public void testUndefinedInArray() throws Exception
34
49
out .write (CBORConstants .BYTE_ARRAY_INDEFINITE );
35
50
out .write (BYTE_UNDEFINED );
36
51
out .write (CBORConstants .BYTE_BREAK );
37
- JsonParser p = cborParser (CBOR_F , out .toByteArray ());
52
+ CBORParser p = cborParser (CBOR_F , out .toByteArray ());
38
53
assertEquals (JsonToken .START_ARRAY , p .nextToken ());
39
54
assertEquals (JsonToken .VALUE_NULL , p .nextToken ());
55
+ assertTrue (p .isUndefined ());
56
+ assertEquals (JsonToken .END_ARRAY , p .nextToken ());
57
+ assertNull (p .nextToken ());
58
+ p .close ();
59
+ }
60
+
61
+ // @since 2.20 [jackson-dataformats-binary/137]
62
+ @ Test
63
+ public void testUndefinedInArrayAsEmbeddedObject () throws Exception {
64
+ CBORFactory f = CBORFactory .builder ()
65
+ .enable (CBORParser .Feature .HANDLE_UNDEFINED_AS_EMBEDDED_OBJECT )
66
+ .build ();
67
+
68
+ ByteArrayOutputStream out = new ByteArrayOutputStream ();
69
+ out .write (CBORConstants .BYTE_ARRAY_INDEFINITE );
70
+ out .write (BYTE_UNDEFINED );
71
+ out .write (CBORConstants .BYTE_BREAK );
72
+ CBORParser p = cborParser (f , out .toByteArray ());
73
+ assertEquals (JsonToken .START_ARRAY , p .nextToken ());
74
+ assertEquals (JsonToken .VALUE_EMBEDDED_OBJECT , p .nextToken ());
75
+ assertTrue (p .isUndefined ());
40
76
assertEquals (JsonToken .END_ARRAY , p .nextToken ());
41
77
assertNull (p .nextToken ());
42
78
p .close ();
@@ -57,11 +93,42 @@ public void testUndefinedInObject() throws Exception
57
93
// assume we use end marker for Object, so
58
94
doc [doc .length -2 ] = BYTE_UNDEFINED ;
59
95
60
- JsonParser p = cborParser (CBOR_F , doc );
96
+ CBORParser p = cborParser (CBOR_F , doc );
61
97
assertEquals (JsonToken .START_OBJECT , p .nextToken ());
62
98
assertEquals (JsonToken .FIELD_NAME , p .nextToken ());
63
99
assertEquals ("bar" , p .currentName ());
64
100
assertEquals (JsonToken .VALUE_NULL , p .nextToken ());
101
+ assertTrue (p .isUndefined ());
102
+ assertEquals (JsonToken .END_OBJECT , p .nextToken ());
103
+ assertNull (p .nextToken ());
104
+ p .close ();
105
+ }
106
+
107
+ // @since 2.20 [jackson-dataformats-binary/137]
108
+ @ Test
109
+ public void testUndefinedInObjectAsEmbeddedObject () throws Exception {
110
+ CBORFactory f = CBORFactory .builder ()
111
+ .enable (CBORParser .Feature .HANDLE_UNDEFINED_AS_EMBEDDED_OBJECT )
112
+ .build ();
113
+
114
+ ByteArrayOutputStream out = new ByteArrayOutputStream ();
115
+ CBORGenerator g = cborGenerator (out );
116
+ g .writeStartObject ();
117
+ g .writeFieldName ("bar" );
118
+ g .writeBoolean (true );
119
+ g .writeEndObject ();
120
+ g .close ();
121
+
122
+ byte [] doc = out .toByteArray ();
123
+ // assume we use end marker for Object, so
124
+ doc [doc .length - 2 ] = BYTE_UNDEFINED ;
125
+
126
+ CBORParser p = cborParser (f , doc );
127
+ assertEquals (JsonToken .START_OBJECT , p .nextToken ());
128
+ assertEquals (JsonToken .FIELD_NAME , p .nextToken ());
129
+ assertEquals ("bar" , p .currentName ());
130
+ assertEquals (JsonToken .VALUE_EMBEDDED_OBJECT , p .nextToken ());
131
+ assertTrue (p .isUndefined ());
65
132
assertEquals (JsonToken .END_OBJECT , p .nextToken ());
66
133
assertNull (p .nextToken ());
67
134
p .close ();
0 commit comments