@Test
public void simpleArrayJson() throws LoadException {

  // GIVEN
  String json = "[ { \"a\": 1, \"b\": 1, \"c\": [4, 5,6]},{\"a\": 2, \"b\": 3, \"c\": [7, 8, 9 ]}]";
  // WHEN
  TableShard tableShard =
      Iterables.getOnlyElement(loader.load(0L, new BigByteBuffer(json.getBytes()), TABLE, colInfo));
  // THEN
  Assert.assertEquals(tableShard.getLongColumns().size(), 6, "Expected all long columns to be available");
  Set<Triple<Long, Long, List<Long>>> expectedValues = new HashSet<>();
  expectedValues.add(new Triple<>(1L, 1L, Arrays.asList(new Long[] { 4L, 5L, 6L })));
  expectedValues.add(new Triple<>(2L, 3L, Arrays.asList(new Long[] { 7L, 8L, 9L })));
  Set<Triple<Long, Long, List<Long>>> actualValues = new HashSet<>();
  LongStandardColumnShard colA = tableShard.getLongColumns().get("a");
  LongStandardColumnShard colB = tableShard.getLongColumns().get("b");
  LongStandardColumnShard colC0 = tableShard.getLongColumns().get(repeatedColNames.repeatedAtIndex("c", 0));
  LongStandardColumnShard colC1 = tableShard.getLongColumns().get(repeatedColNames.repeatedAtIndex("c", 1));
  LongStandardColumnShard colC2 = tableShard.getLongColumns().get(repeatedColNames.repeatedAtIndex("c", 2));
  LongStandardColumnShard colCLength = tableShard.getLongColumns().get(repeatedColNames.repeatedLength("c"));
  for (long i = tableShard.getLowestRowId(); i < tableShard.getLowestRowId()
      + tableShard.getNumberOfRowsInShard(); i++) {
    Long valueA = resolveSingleRowValue(colA, i);
    Long valueB = resolveSingleRowValue(colB, i);
    Long valueC0 = resolveSingleRowValue(colC0, i);
    Long valueC1 = resolveSingleRowValue(colC1, i);
    Long valueC2 = resolveSingleRowValue(colC2, i);
    actualValues.add(new Triple<>(valueA, valueB, Arrays.asList(new Long[] { valueC0, valueC1, valueC2 })));
    Assert.assertEquals((long) resolveSingleRowValue(colCLength, i), 3L,
        "Correct value of length col expected for row " + i);
  }
  Assert.assertEquals(actualValues, expectedValues, "Expected correct values to be encoded");
}