*/
public void testSimpleOffsets() throws IOException
{
byte[] data = _smileDoc("[ true, null, false, 511 ]", true); // true -> write header
JsonParser p = _smileParser(data);
assertNull(p.getCurrentToken());
JsonLocation loc = p.getCurrentLocation();
assertNotNull(loc);
// first: -1 for "not known", for character-based stuff
assertEquals(-1, loc.getCharOffset());
// except that with 1.9.7 and above, we also consider column to be same as offset, for convenience
assertEquals(4, loc.getColumnNr());
assertEquals(-1, loc.getLineNr());
// but first 4 bytes are for header
assertEquals(4, loc.getByteOffset());
// array marker is a single byte, so:
assertToken(JsonToken.START_ARRAY, p.nextToken());
assertEquals(5, p.getCurrentLocation().getByteOffset());
assertEquals(4, p.getTokenLocation().getByteOffset());
// same for true and others except for last int
assertToken(JsonToken.VALUE_TRUE, p.nextToken());
assertEquals(6, p.getCurrentLocation().getByteOffset());
assertEquals(5, p.getTokenLocation().getByteOffset());
assertToken(JsonToken.VALUE_NULL, p.nextToken());
assertEquals(7, p.getCurrentLocation().getByteOffset());
assertEquals(6, p.getTokenLocation().getByteOffset());
assertToken(JsonToken.VALUE_FALSE, p.nextToken());
assertEquals(8, p.getCurrentLocation().getByteOffset());
assertEquals(7, p.getTokenLocation().getByteOffset());
// 0x1FF takes 3 bytes (type byte, 7/6 bit segments)
assertToken(JsonToken.VALUE_NUMBER_INT, p.nextToken());
assertEquals(511, p.getIntValue());
assertEquals(11, p.getCurrentLocation().getByteOffset());
assertEquals(8, p.getTokenLocation().getByteOffset());
assertToken(JsonToken.END_ARRAY, p.nextToken());
assertEquals(12, p.getCurrentLocation().getByteOffset());
assertEquals(11, p.getTokenLocation().getByteOffset());
assertNull(p.nextToken());
p.close();
}