@SuppressWarnings("unchecked") private List convertToList(String fieldName, GenericArray arr) { List ret = new ArrayList(); for (int i = 0; i < arr.size(); i++) { ret.add(convertAvroToJava(fieldName + "." + String.valueOf(i), arr.get(i))); } return ret; } }
@Test public void testConverter() throws Exception { JsonRecordAvroSchemaToAvroConverter<String> converter = new JsonRecordAvroSchemaToAvroConverter<>(); converter.init(this.state); Schema avroSchema = converter.convertSchema("dummy", this.state); GenericRecord record = converter.convertRecord(avroSchema, this.jsonRecord, this.state).iterator().next(); Assert.assertEquals(record.get("fieldToIgnore"), null); Assert.assertEquals(record.get("nullableField"), null); Assert.assertEquals(record.get("longField"), 1234L); Assert.assertTrue(record.get("arrayField") instanceof GenericArray); Assert.assertTrue(record.get("mapField") instanceof Map); Assert.assertEquals(((GenericRecord) record.get("nestedRecords")).get("nestedField").toString(), "test"); Assert.assertEquals(((GenericRecord) record.get("nestedRecords")).get("nestedField2").toString(), "test2"); Assert.assertTrue(((GenericArray) record.get("emptyArrayOfRecords")).isEmpty()); GenericRecord recordInArray = (GenericRecord) (((GenericArray) record.get("arrayOfRecords")).get(0)); Assert.assertEquals(recordInArray.get("field1").toString(), "test1"); Assert.assertEquals((record.get("enumField")).toString(), "ENUM2"); } }
@Test public void testArrayOfFloat() { Schema floatSchema = Schema.create(Type.FLOAT); GenericArray avroArray = CommonToGeneric .createArray(createCommonArray( floatSchema, new Float(5.5))); Float avroFloat = (Float) avroArray.get(0); assertEquals(5.5, avroFloat.floatValue(), 0.1); }
@Test public void testArrayOfDouble() { Schema doubleSchema = Schema.create(Type.DOUBLE); GenericArray avroArray = CommonToGeneric .createArray(createCommonArray( doubleSchema, new Double(5.5))); Double avroDouble = (Double) avroArray.get(0); assertEquals(5.5, avroDouble.doubleValue(), 0.1); }
@Test public void testArrayOfInteger() { Schema integerSchema = Schema.create(Type.INT); GenericArray avroArray = CommonToGeneric .createArray(createCommonArray( integerSchema, new Integer(5))); Integer avroInt = (Integer) avroArray.get(0); assertEquals(5, avroInt.intValue()); }
@Test public void testArrayOfLong() { Schema longSchema = Schema.create(Type.LONG); GenericArray avroArray = CommonToGeneric .createArray(createCommonArray( longSchema, new Long(5))); Long avroLong = (Long) avroArray.get(0); assertEquals(5, avroLong.longValue()); }
@Test public void testArrayOfBytes() { Schema bytesSchema = Schema.create(Type.BYTES); GenericArray avroArray = CommonToGeneric .createArray(createCommonArray( bytesSchema, ByteBuffer.wrap(new byte[]{1, 2}))); ByteBuffer avroBytes = (ByteBuffer) avroArray.get(0); assertArrayEquals(new byte[]{1, 2}, avroBytes.array()); }
@Test public void testArrayAddAtLocation() { Schema schema = Schema.createArray(Schema.create(Schema.Type.INT)); GenericArray<Integer> array = new GenericData.Array<>(6, schema); array.clear(); for(int i=0; i<5; ++i) array.add(i); assertEquals(5, array.size()); array.add(0, 6); assertEquals(new Integer(6), array.get(0)); assertEquals(6, array.size()); assertEquals(new Integer(0), array.get(1)); assertEquals(new Integer(4), array.get(5)); array.add(6, 7); assertEquals(new Integer(7), array.get(6)); assertEquals(7, array.size()); assertEquals(new Integer(6), array.get(0)); assertEquals(new Integer(4), array.get(5)); array.add(1, 8); assertEquals(new Integer(8), array.get(1)); assertEquals(new Integer(0), array.get(2)); assertEquals(new Integer(6), array.get(0)); assertEquals(8, array.size()); try { array.get(9); fail("Expected IndexOutOfBoundsException after adding elements"); } catch (IndexOutOfBoundsException e){} } @Test
@Test public void testArrayOfBoolean() { Schema booleanSchema = Schema.create(Type.BOOLEAN); GenericArray avroArray = CommonToGeneric .createArray(createCommonArray( booleanSchema, new Boolean(Boolean.TRUE))); Boolean avroBoolean = (Boolean) avroArray.get(0); assertTrue(avroBoolean); }
@Test public void testArrayOfString() { Schema stringSchema = Schema.create(Type.STRING); GenericArray avroArray = CommonToGeneric .createArray(createCommonArray( stringSchema, new String("abc"))); String avroString = (String) avroArray.get(0); assertEquals("abc", avroString); }
@Test public void testArraySet() { Schema schema = Schema.createArray(Schema.create(Schema.Type.INT)); GenericArray<Integer> array = new GenericData.Array<>(10, schema); array.clear(); for(int i=0; i<10; ++i) array.add(i); assertEquals(10, array.size()); assertEquals(new Integer(0), array.get(0)); assertEquals(new Integer(5), array.get(5)); assertEquals(new Integer(5), array.set(5, 55)); assertEquals(10, array.size()); assertEquals(new Integer(55), array.get(5)); }
GenericArray origValues = (GenericArray) inputRecord.get("favorite_quotes"); for (int i = 0; i < origValues.size(); i++) { origValues.set(i, origValues.get(i).toString());
@Test public void testArrayListInterface() { Schema schema = Schema.createArray(Schema.create(Schema.Type.INT)); GenericArray<Integer> array = new GenericData.Array<>(1, schema); array.add(99); assertEquals(new Integer(99), array.get(0)); List<Integer> list = new ArrayList<>(); list.add(99); assertEquals(array, list); assertEquals(list, array); assertEquals(list.hashCode(), array.hashCode()); try { array.get(2); fail("Expected IndexOutOfBoundsException getting index 2"); } catch (IndexOutOfBoundsException e) {} array.clear(); assertEquals(0, array.size()); try { array.get(0); fail("Expected IndexOutOfBoundsException getting index 0 after clear()"); } catch (IndexOutOfBoundsException e) {} } @Test
array.add(i); assertEquals(10, array.size()); assertEquals(new Integer(0), array.get(0)); assertEquals(new Integer(9), array.get(9)); assertEquals(new Integer(1), array.get(0)); assertEquals(new Integer(2), array.get(1)); assertEquals(new Integer(9), array.get(8)); array.get(9); fail("Expected IndexOutOfBoundsException after removing an element"); } catch (IndexOutOfBoundsException e){} assertEquals(new Integer(88), array.get(8));
assertTrue ("Unable to read 'employees' map", employees instanceof GenericArray); GenericArray arrayEmployees = ((GenericArray)employees); Object employeeRecord = arrayEmployees.get(0); assertTrue (employeeRecord instanceof GenericRecord); Object key = ((GenericRecord)employeeRecord).get(ReflectData.NS_MAP_KEY);
@Test public void testArrayOfFixed() { Schema fixedSchema = Schema.createFixed("someFixed", "", "", 2); GenericArray avroArray = CommonToGeneric.createArray(createCommonArray( fixedSchema, new DefaultCommonFixed(fixedSchema, new byte[]{1, 2}))); GenericFixed avroFixed = (GenericFixed) avroArray.get(0); assertArrayEquals(new byte[]{1, 2}, avroFixed.bytes()); }