public void testReadRecordOfRecord3() throws IOException, ParseException {
String projection3 = new String("r1, r2, r2.r3.f3#{y|x}");
BasicTable.Reader reader = new BasicTable.Reader(path, conf);
reader.setProjection(projection3);
List<RangeSplit> splits = reader.rangeSplit(1);
TableScanner scanner = reader.getScanner(splits.get(0), true);
scanner = reader.getScanner(splits.get(0), true);
BytesWritable key = new BytesWritable();
Tuple RowValue = TypesUtils.createTuple(scanner.getSchema());
scanner.getKey(key);
Assert.assertEquals(key, new BytesWritable("k11".getBytes()));
scanner.getValue(RowValue);
Assert.assertEquals(1, ((Tuple) RowValue.get(0)).get(0));
Assert.assertEquals(1.3F, ((Map<String, Float>) RowValue.get(2)).get("x"));
// Assert.assertEquals(null, ((Map<String,
// Float>)RowValue.get(2)).get("x"));
Assert.assertEquals(null, ((Map<String, Float>) RowValue.get(2)).get("y"));
Assert.assertEquals(null, ((Map<String, Float>) RowValue.get(2)).get("z"));
Tuple r2 = (Tuple) RowValue.get(1);
Tuple r3 = (Tuple) r2.get(0);
Map<String, Integer> f4 = (Map<String, Integer>) r3.get(1);
Integer tmp = 1;
Assert.assertEquals(tmp, f4.get("a"));
tmp = 2;
Assert.assertEquals(tmp, f4.get("b"));
tmp = 3;
Assert.assertEquals(tmp, f4.get("c"));
scanner.advance();
scanner.getKey(key);
Assert.assertEquals(key, new BytesWritable("k12".getBytes()));
scanner.getValue(RowValue);
Assert.assertEquals(2, ((Tuple) RowValue.get(0)).get(0));
Assert.assertEquals(null, ((Map<String, Long>) RowValue.get(2)).get("x"));
// Assert.assertEquals(null, ((Map<String,
// Float>)RowValue.get(2)).get("y"));
Assert.assertEquals(2.3F, ((Map<String, Long>) RowValue.get(2)).get("y"));