@Test
public void headerRow_Fill_works() {

    // given case for 3 col, 2 val
    List<String> annotations = Arrays.asList("row", "column", "column", "column", "value", "value", "deco", "deco");
    List<Integer> orderNumbers = Arrays.asList(0, 1, 2, 3, 1, 2, 1, 2);
    List<String> typeList = Arrays.asList(null, null, null, null, "SUM", "SUM", null, null);
    List<String> fieldNameList = Arrays.asList("fn-r1", "fn-c", "fn-c1", "fn-c2", "fn-v1", "fn-v2", "fn-d1", "fn-d2");
    List<?> v1 = Arrays.asList("r1", "a", "c1-1", "c2-1", null, null, "r1d1", null);
    List<?> v2 = Arrays.asList("r2", "a", "c1-2", "c2-1", null, null, null, "r2d2");
    List<?> v3 = Arrays.asList("r3", "b", "c1-3", "c2-2", null, null, "r3d1", "r3d2");
    sourceSheetBuilder(annotations, orderNumbers, typeList, fieldNameList, v1, v2, v3);
    // when
    p.pivot(sourceSheet, targetSheet);
    // then
    Assertions.assertThat(targetSheet.getLastRowNum()).isEqualTo(7);
    testRow(0, null, null, "fn-c", "a", null, null, null, null, null, null, null, null, null, null, null, "b"); //etc
    testRow(1, null, null, "fn-c1", "c1-1", null, null, null, "c1-2", null, null, null, "c1-3", null, null, null, "c1-1"); //etc
    testRow(2, null, null, "fn-c2", "c2-1", null, "c2-2", null, "c2-1", null, "c2-2", null, "c2-1", null, "c2-2", null, "c2-1"); //etc
    testRow(3, "fn-r1", "fn-d1", "fn-d2", "fn-v1 (sum)", "fn-v2 (sum)", "fn-v1 (sum)", "fn-v2 (sum)", "fn-v1 (sum)", "fn-v2 (sum)"); //etc
    testRow(4, "r1", "r1d1", null); //etc
    testRow(5, "r2", null, "r2d2");
    testRow(6, "r3", "r3d1", "r3d2");
    // last row is for summing
}