use of io.cdap.cdap.common.io.BinaryDecoder in project cdap by caskdata.
the class RecordWithString method testEmptyValue.
// this tests that the datum reader treats empty fields correctly. It reproduces the issue in ENG-2404.
@Test
public void testEmptyValue() throws UnsupportedTypeException, IOException {
Schema schema = new ReflectionSchemaGenerator().generate(RecordWithString.class);
TypeRepresentation typeRep = new TypeRepresentation(RecordWithString.class);
DatumWriter<RecordWithString> datumWriter = new ReflectionDatumWriter<>(schema);
@SuppressWarnings("unchecked") ReflectionDatumReader<RecordWithString> datumReader = new ReflectionDatumReader<>(schema, (TypeToken<RecordWithString>) TypeToken.of(typeRep.toType()));
RecordWithString record = new RecordWithString();
record.setA(42);
record.setTheString("");
ByteArrayOutputStream bos = new ByteArrayOutputStream();
BinaryEncoder encoder = new BinaryEncoder(bos);
datumWriter.encode(record, encoder);
byte[] bytes = bos.toByteArray();
ByteArrayInputStream bis = new ByteArrayInputStream(bytes);
BinaryDecoder decoder = new BinaryDecoder(bis);
RecordWithString rec = datumReader.read(decoder, schema);
Assert.assertEquals(record.getA(), rec.getA());
Assert.assertEquals(record.getTheString(), rec.getTheString());
}
use of io.cdap.cdap.common.io.BinaryDecoder in project cdap by caskdata.
the class ASMDatumCodecTest method testMap.
@Test
public void testMap() throws IOException, UnsupportedTypeException {
TypeToken<Map<String, List<String>>> type = new TypeToken<Map<String, List<String>>>() {
};
PipedOutputStream os = new PipedOutputStream();
PipedInputStream is = new PipedInputStream(os);
DatumWriter<Map<String, List<String>>> writer = getWriter(type);
ImmutableMap<String, List<String>> map = ImmutableMap.<String, List<String>>of("k1", Lists.newArrayList("v1"), "k2", Lists.newArrayList("v2", null));
writer.encode(map, new BinaryEncoder(os));
ReflectionDatumReader<Map<String, List<String>>> reader = new ReflectionDatumReader<>(getSchema(type), type);
Assert.assertEquals(map, reader.read(new BinaryDecoder(is), getSchema(type)));
}
use of io.cdap.cdap.common.io.BinaryDecoder in project cdap by caskdata.
the class ASMDatumCodecTest method testDouble.
@Test
public void testDouble() throws UnsupportedTypeException, IOException {
TypeToken<Double> type = new TypeToken<Double>() {
};
PipedOutputStream os = new PipedOutputStream();
PipedInputStream is = new PipedInputStream(os);
DatumWriter<Double> writer = getWriter(type);
writer.encode(3.14d, new BinaryEncoder(os));
ReflectionDatumReader<Double> reader = new ReflectionDatumReader<>(getSchema(type), type);
double value = reader.read(new BinaryDecoder(is), getSchema(type));
Assert.assertEquals(3.14d, value, 0.000001d);
}
use of io.cdap.cdap.common.io.BinaryDecoder in project cdap by caskdata.
the class ASMDatumCodecTest method testShort.
@Test
public void testShort() throws UnsupportedTypeException, IOException {
TypeToken<Short> type = new TypeToken<Short>() {
};
PipedOutputStream os = new PipedOutputStream();
PipedInputStream is = new PipedInputStream(os);
DatumWriter<Short> writer = getWriter(type);
writer.encode((short) 3000, new BinaryEncoder(os));
ReflectionDatumReader<Short> reader = new ReflectionDatumReader<>(getSchema(type), type);
short value = reader.read(new BinaryDecoder(is), getSchema(type));
Assert.assertEquals((short) 3000, value);
}
use of io.cdap.cdap.common.io.BinaryDecoder in project cdap by caskdata.
the class ASMDatumCodecTest method testReferenceArray.
@Test
public void testReferenceArray() throws IOException, UnsupportedTypeException {
TypeToken<String[]> type = new TypeToken<String[]>() {
};
PipedOutputStream os = new PipedOutputStream();
PipedInputStream is = new PipedInputStream(os);
String[] writeValue = new String[] { "1", "2", null, "3" };
DatumWriter<String[]> writer = getWriter(type);
writer.encode(writeValue, new BinaryEncoder(os));
ReflectionDatumReader<String[]> reader = new ReflectionDatumReader<>(getSchema(type), type);
String[] value = reader.read(new BinaryDecoder(is), getSchema(type));
Assert.assertArrayEquals(writeValue, value);
}
Aggregations