@@ -23,7 +23,7 @@ public void testSimpleInitialOffsets() throws Exception
23
23
assertEquals (0L , loc .getCharOffset ());
24
24
assertEquals (1 , loc .getLineNr ());
25
25
assertEquals (1 , loc .getColumnNr ());
26
-
26
+
27
27
loc = p .getCurrentLocation ();
28
28
assertEquals (-1L , loc .getByteOffset ());
29
29
assertEquals (1L , loc .getCharOffset ());
@@ -42,7 +42,7 @@ public void testSimpleInitialOffsets() throws Exception
42
42
assertEquals (-1L , loc .getCharOffset ());
43
43
assertEquals (1 , loc .getLineNr ());
44
44
assertEquals (1 , loc .getColumnNr ());
45
-
45
+
46
46
loc = p .getCurrentLocation ();
47
47
assertEquals (1L , loc .getByteOffset ());
48
48
assertEquals (-1L , loc .getCharOffset ());
@@ -69,7 +69,7 @@ public void testOffsetWithInputOffset() throws Exception
69
69
assertEquals (-1L , loc .getCharOffset ());
70
70
assertEquals (1 , loc .getLineNr ());
71
71
assertEquals (1 , loc .getColumnNr ());
72
-
72
+
73
73
loc = p .getCurrentLocation ();
74
74
assertEquals (1L , loc .getByteOffset ());
75
75
assertEquals (-1L , loc .getCharOffset ());
@@ -78,4 +78,119 @@ public void testOffsetWithInputOffset() throws Exception
78
78
79
79
p .close ();
80
80
}
81
+
82
+ public void testOffsetWithoutInputOffset () throws Exception
83
+ {
84
+ JsonLocation loc ;
85
+ JsonParser p ;
86
+ // 3 spaces before, 2 after, just for padding
87
+ byte [] b = " { } " .getBytes ("UTF-8" );
88
+
89
+ // and then peel them off
90
+ p = JSON_F .createParser (b );
91
+ assertToken (JsonToken .START_OBJECT , p .nextToken ());
92
+
93
+ loc = p .getTokenLocation ();
94
+ assertEquals (3L , loc .getByteOffset ());
95
+ assertEquals (-1L , loc .getCharOffset ());
96
+ assertEquals (1 , loc .getLineNr ());
97
+ assertEquals (4 , loc .getColumnNr ());
98
+
99
+ loc = p .getCurrentLocation ();
100
+ assertEquals (4L , loc .getByteOffset ());
101
+ assertEquals (-1L , loc .getCharOffset ());
102
+ assertEquals (1 , loc .getLineNr ());
103
+ assertEquals (5 , loc .getColumnNr ());
104
+
105
+ p .close ();
106
+ }
107
+
108
+ // for [core#533]
109
+ public void testUtf8Bom () throws Exception
110
+ {
111
+ JsonLocation loc ;
112
+ JsonParser p ;
113
+
114
+ byte [] b = withUtf8Bom ("{ }" .getBytes ());
115
+
116
+ // and then peel them off
117
+ p = JSON_F .createParser (b );
118
+ assertToken (JsonToken .START_OBJECT , p .nextToken ());
119
+
120
+ loc = p .getTokenLocation ();
121
+ assertEquals (3L , loc .getByteOffset ());
122
+ assertEquals (-1L , loc .getCharOffset ());
123
+ assertEquals (1 , loc .getLineNr ());
124
+ assertEquals (4 , loc .getColumnNr ());
125
+
126
+ loc = p .getCurrentLocation ();
127
+ assertEquals (4L , loc .getByteOffset ());
128
+ assertEquals (-1L , loc .getCharOffset ());
129
+ assertEquals (1 , loc .getLineNr ());
130
+ assertEquals (5 , loc .getColumnNr ());
131
+
132
+ p .close ();
133
+ }
134
+
135
+ public void testUtf8BomWithPadding () throws Exception
136
+ {
137
+ JsonLocation loc ;
138
+ JsonParser p ;
139
+
140
+ byte [] b = withUtf8Bom (" { }" .getBytes ());
141
+
142
+ // and then peel them off
143
+ p = JSON_F .createParser (b );
144
+ assertToken (JsonToken .START_OBJECT , p .nextToken ());
145
+
146
+ loc = p .getTokenLocation ();
147
+ assertEquals (6L , loc .getByteOffset ());
148
+ assertEquals (-1L , loc .getCharOffset ());
149
+ assertEquals (1 , loc .getLineNr ());
150
+ assertEquals (7 , loc .getColumnNr ());
151
+
152
+ loc = p .getCurrentLocation ();
153
+ assertEquals (7L , loc .getByteOffset ());
154
+ assertEquals (-1L , loc .getCharOffset ());
155
+ assertEquals (1 , loc .getLineNr ());
156
+ assertEquals (8 , loc .getColumnNr ());
157
+
158
+ p .close ();
159
+ }
160
+
161
+ public void testUtf8BomWithInputOffset () throws Exception
162
+ {
163
+ JsonLocation loc ;
164
+ JsonParser p ;
165
+
166
+ byte [] b = withUtf8Bom (" { }" .getBytes ());
167
+
168
+ // and then peel them off
169
+ p = JSON_F .createParser (b );
170
+ assertToken (JsonToken .START_OBJECT , p .nextToken ());
171
+
172
+ loc = p .getTokenLocation ();
173
+ assertEquals (6L , loc .getByteOffset ());
174
+ assertEquals (-1L , loc .getCharOffset ());
175
+ assertEquals (1 , loc .getLineNr ());
176
+ assertEquals (7 , loc .getColumnNr ());
177
+
178
+ loc = p .getCurrentLocation ();
179
+ assertEquals (7L , loc .getByteOffset ());
180
+ assertEquals (-1L , loc .getCharOffset ());
181
+ assertEquals (1 , loc .getLineNr ());
182
+ assertEquals (8 , loc .getColumnNr ());
183
+
184
+ p .close ();
185
+ }
186
+
187
+ private byte [] withUtf8Bom (byte [] bytes ) {
188
+ byte [] arr = new byte [bytes .length + 3 ];
189
+ // write UTF-8 BOM
190
+ arr [0 ] = (byte ) 0xEF ;
191
+ arr [1 ] = (byte ) 0xBB ;
192
+ arr [2 ] = (byte ) 0xBF ;
193
+ System .arraycopy (bytes , 0 , arr , 3 , bytes .length );
194
+ return arr ;
195
+ }
81
196
}
0 commit comments