Lines 25-30
Link Here
|
25 |
import org.apache.poi.ss.util.CellRangeAddress; |
25 |
import org.apache.poi.ss.util.CellRangeAddress; |
26 |
import org.apache.poi.ss.util.CellReference; |
26 |
import org.apache.poi.ss.util.CellReference; |
27 |
|
27 |
|
|
|
28 |
import java.util.Arrays; |
29 |
|
28 |
/** |
30 |
/** |
29 |
* Common superclass for testing usermodel API for array formulas.<br/> |
31 |
* Common superclass for testing usermodel API for array formulas.<br/> |
30 |
* Formula evaluation is not tested here. |
32 |
* Formula evaluation is not tested here. |
Lines 438-456
Link Here
|
438 |
assertTrue(scell.isPartOfArrayFormulaGroup()); |
440 |
assertTrue(scell.isPartOfArrayFormulaGroup()); |
439 |
assertEquals(1, sheet.getNumMergedRegions()); |
441 |
assertEquals(1, sheet.getNumMergedRegions()); |
440 |
|
442 |
|
441 |
//we cannot merge cells included in an array formula |
443 |
// we cannot merge cells included in an array formula |
442 |
CellRange<? extends Cell> mrange = |
444 |
CellRange<? extends Cell> mrange = |
443 |
sheet.setArrayFormula("A1:A3*B1:B3", CellRangeAddress.valueOf("C1:C3")); |
445 |
sheet.setArrayFormula("A1:A3*B1:B3", CellRangeAddress.valueOf("C2:F5")); |
444 |
CellRangeAddress cra = CellRangeAddress.valueOf("C1:C3"); |
446 |
for (String ref : Arrays.asList( |
|
|
447 |
"C2:F5", // identity |
448 |
"D3:E4", "B1:G6", // contains |
449 |
"B1:C2", "F1:G2", "F5:G6", "B5:C6", // 1x1 corner intersection |
450 |
"B1:C6", "B1:G2", "F1:G6", "B5:G6", // 1-row/1-column intersection |
451 |
"B1:D3", "E1:G3", "E4:G6", "B4:D6", // 2x2 corner intersection |
452 |
"B1:D6", "B1:G3", "E1:G6", "B4:G6" // 2-row/2-column intersection |
453 |
)) { |
454 |
CellRangeAddress cra = CellRangeAddress.valueOf(ref); |
445 |
try { |
455 |
try { |
446 |
sheet.addMergedRegion(cra); |
456 |
sheet.addMergedRegion(cra); |
447 |
fail("expected exception"); |
457 |
fail("expected exception"); |
448 |
} catch (IllegalStateException e){ |
458 |
} catch (IllegalStateException e){ |
449 |
String msg = "The range "+cra.formatAsString()+" intersects with a multi-cell array formula. You cannot merge cells of an array."; |
459 |
String expectedMessage = "The range " + cra.formatAsString() |
450 |
assertEquals(msg, e.getMessage()); |
460 |
+ " intersects with a multi-cell array formula. You cannot merge cells of an array."; |
|
|
461 |
assertEquals(expectedMessage, e.getMessage()); |
451 |
} |
462 |
} |
|
|
463 |
} |
464 |
int expectedNumMergedRegions = 1; |
452 |
//the number of merged regions remains the same |
465 |
//the number of merged regions remains the same |
453 |
assertEquals(1, sheet.getNumMergedRegions()); |
466 |
assertEquals(expectedNumMergedRegions, sheet.getNumMergedRegions()); |
|
|
467 |
|
468 |
// we can merge non-intersecting cells |
469 |
for (String ref : Arrays.asList("C1:F1", "G2:G5", "C6:F6", "B2:B5", "H7:J9")) { |
470 |
CellRangeAddress cra = CellRangeAddress.valueOf(ref); |
471 |
try { |
472 |
sheet.addMergedRegion(cra); |
473 |
expectedNumMergedRegions++; |
474 |
assertEquals(expectedNumMergedRegions, sheet.getNumMergedRegions()); |
475 |
} catch (IllegalStateException e) { |
476 |
fail("did not expect exception"); |
477 |
} |
478 |
} |
454 |
} |
479 |
} |
455 |
|
480 |
|
456 |
public void testModifyArrayCells_shiftRows(){ |
481 |
public void testModifyArrayCells_shiftRows(){ |