### Question:
TabularRow implements Iterable<TabularCell> { @Override public String toString() { return joiner.join(transform(this, toStringFunction())); } TabularRow(final Row row, final String quote, final String delimiter);  TabularRow(final Row row, final String quote);  TabularRow(final Row row); @Override String toString(); @Override Iterator<TabularCell> iterator(); static final String defaultDelimiter; }### Answer:
@Test public void testEmptyRow() { when(mockRow.getLastCellNum()).thenReturn((short) 0); assertEquals("", new TabularRow(mockRow).toString()); }
@Test public void testSingleEmptyCell() { when(mockRow.getLastCellNum()).thenReturn((short) 1); when(mockEmptyCell.getCellType()).thenReturn(CELL_TYPE_BLANK); when(mockRow.getCell(0)).thenReturn(mockEmptyCell); assertEquals("", new TabularRow(mockRow).toString()); }
@Test public void testSingleStringCell() { when(stringCell.getStringCellValue()).thenReturn(TEST_STRING_VALUE); when(stringCell.getCellType()).thenReturn(CELL_TYPE_STRING); when(mockRow.getLastCellNum()).thenReturn((short) 1); when(mockRow.getCell(0)).thenReturn(stringCell); assertEquals(TEST_STRING_PRINTED_VALUE, new TabularRow(mockRow).toString()); }
@Test public void testTwoStringCells() { when(stringCell.getStringCellValue()).thenReturn(TEST_STRING_VALUE); when(stringCell.getCellType()).thenReturn(CELL_TYPE_STRING); when(mockRow.getLastCellNum()).thenReturn((short) 2); when(mockRow.getCell(0)).thenReturn(stringCell); when(mockRow.getCell(1)).thenReturn(stringCell); final String testValue = TEST_STRING_PRINTED_VALUE + "," + TEST_STRING_PRINTED_VALUE; assertEquals(testValue, new TabularRow(mockRow).toString()); }