@Test
public void testThreeCellRow() {

  CellChunk cellChunk1 = createCell("row_key1", "family", "qualifier", "value", 1, false);
  CellChunk cellChunk2 = createCell(null, null, "qualifier2", "value2", 2, false);
  CellChunk cellChunk3 = createCell(null, null, null, "value3", 1, true);
  RowMerger underTest = new RowMerger(observer);
  underTest.onNext(ReadRowsResponse.newBuilder().addChunks(cellChunk1).build());
  underTest.onNext(ReadRowsResponse.newBuilder().addChunks(cellChunk2).build());
  underTest.onNext(ReadRowsResponse.newBuilder().addChunks(cellChunk3).build());
  FlatRow expected =
      FlatRow.newBuilder()
          .withRowKey(cellChunk1.getRowKey())
          .addCell(
              cellChunk1.getFamilyName().getValue(),
              cellChunk1.getQualifier().getValue(),
              cellChunk1.getTimestampMicros(),
              cellChunk1.getValue())
          .addCell(
              cellChunk1.getFamilyName().getValue(),
              cellChunk2.getQualifier().getValue(),
              cellChunk2.getTimestampMicros(),
              cellChunk2.getValue())
          .addCell(
              cellChunk1.getFamilyName().getValue(),
              cellChunk2.getQualifier().getValue(),
              cellChunk3.getTimestampMicros(),
              cellChunk3.getValue())
          .build();
  verify(observer, times(1)).onNext(eq(expected));
}