@Override
  public Object getValue(final int columnIndex) {
    return values.getValue(columnIndex - 1);
  }
@Test
  public void shouldOneIndexColumnNames() {
    assertThat(row.getValue(1), is("foo"));
    assertThat(row.getValue(2), is(2));
    assertThat(row.getValue(3), is(1234L));
    assertThat(row.getValue(4), is(34.43));
    assertThat(row.getValue(5), is(false));
    assertThat(row.getValue(6), is(12.21));

    // Base64 encoded byte. The getValue() does not know if the returned value is a String or
    // byte (same as JsonArray), so it cannot be decoded to bytes. Only getBytes() will do the
    // decoding. In this test, we only test that getValue() returns the encoded string.
    assertThat(row.getValue(7), is("AAEC"));
    assertThat(row.getValue(8), is(new JsonArray("[\"e1\",\"e2\"]")));
    assertThat(row.getValue(9), is(new JsonObject("{\"k1\":\"v1\",\"k2\":\"v2\"}")));
    assertThat(row.getValue(10), is(new JsonObject("{\"f1\":\"baz\",\"f2\":12}")));
    assertThat(row.getValue(11), is(nullValue()));
    assertThat(row.getValue(12), is("2020-01-01T04:40:34.789"));
    assertThat(row.getValue(13), is("2020-01-01"));
    assertThat(row.getValue(14), is("04:40:34.789"));
  }