@Test
public void empty_value_rows_works(){

    // given
    List<String> annotations = Arrays.asList("row", "value", "column");
    List<Integer> orderNumbers = Arrays.asList(0, 0, 0);
    List<String> typeList = Arrays.asList(null, "SUM", null);
    List<String> fieldNameList = Arrays.asList("fn1", "fn2", "fn3");
    sourceSheetBuilder(annotations, orderNumbers, typeList, fieldNameList);
    // when
    p.pivot(sourceSheet, targetSheet);
    // then
    Assertions.assertThat(p.valueRowOffsetY).isEqualTo(1);
    Assertions.assertThat(p.columnLabelOffsetX).isEqualTo(1);
    Assertions.assertThat(p.decoRowOffsetX).isEqualTo(1);
    Assertions.assertThat(p.valuesStartAtRownumber).isEqualTo(2); // even though there are no values
    Assertions.assertThat(targetSheet.getLastRowNum()).isEqualTo(2);
    Assertions.assertThat(targetSheet.getRow(1).getLastCellNum()).isEqualTo((short)2);
    testRow(0, "fn3", null);
    testRow(1, "fn1", null);
    // last row is for summing
    Assertions.assertThat(targetSheet.getRow(2).getCell(0).getCellType()).isEqualTo(CellType.BLANK);
    Assertions.assertThat(targetSheet.getRow(2).getCell(1).getCellType()).isEqualTo(CellType.FORMULA);
    Assertions.assertThat(targetSheet.getRow(2).getCell(1).getCellFormula()).isEqualTo("SUM(B3:B2)");
}