Skip to content

Commit

Permalink
Unit test updated for IonReader
Browse files Browse the repository at this point in the history
  • Loading branch information
jjenkov committed Dec 21, 2015
1 parent f3043ca commit 0eeb780
Showing 1 changed file with 54 additions and 21 deletions.
75 changes: 54 additions & 21 deletions src/test/java/com/jenkov/iap/ion/read/IonReaderTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -446,7 +446,7 @@ public void testParseIntoAndOutOf() {


@Test
public void testReadingObjects() {
public void testReadObjects() {
byte[] source = new byte[10 * 1024];

int index = 0;
Expand All @@ -468,38 +468,71 @@ public void testReadingObjects() {
if(reader.fieldType == IonFieldTypes.OBJECT){
reader.moveInto();

object = new HashMap();
while(reader.hasNext()){
reader.next();
reader.parse();
object = parseObject();

String key = null;
if(reader.fieldType == IonFieldTypes.KEY ||
reader.fieldType == IonFieldTypes.KEY_SHORT){
reader.moveOutOf();
}
}

key = reader.readKeyAsUtf8String();
}
assertNotNull(object);
assertEquals(2, object.size());
assertEquals("John", object.get("name")) ;
assertEquals(new Long(1234) , object.get("id")) ;

if(reader.hasNext()){
reader.next();
reader.parse();

if("name".equals(key)){
object.put(key, reader.readUtf8String());
} else if("id".equals(key)){
object.put(key, reader.readInt64());
}
}
}

index = 0;
object1StartIndex = index;
index += IonWriter.writeObjectBegin(source, index, 2);
IonWriter.writeObjectEnd(source, object1StartIndex, 2, index - object1StartIndex -2 -1); //-2 = lengthLength, -1 = leadbyte

reader.setSource(source, 0, index);

while(reader.hasNext()){
reader.next();
reader.parse();

if(reader.fieldType == IonFieldTypes.OBJECT){
reader.moveInto();

object = parseObject();

reader.moveOutOf();
}
}

assertNotNull(object);
assertEquals(2, object.size());
assertEquals(0, object.size());

}

private Map parseObject() {
Map object;
object = new HashMap();
while(reader.hasNext()){
reader.next();
reader.parse();

String key = null;
if(reader.fieldType == IonFieldTypes.KEY ||
reader.fieldType == IonFieldTypes.KEY_SHORT){

key = reader.readKeyAsUtf8String();
}

if(reader.hasNext()){
reader.next();
reader.parse();

if("name".equals(key)){
object.put(key, reader.readUtf8String());
} else if("id".equals(key)){
object.put(key, reader.readInt64());
}
}
}
return object;
}


}

0 comments on commit 0eeb780

Please sign in to comment.