testmissingrecordawarehssflistener.java
来自「EXCEL read and write」· Java 代码 · 共 426 行 · 第 1/2 页
JAVA
426 行
assertEquals(0, lrs[0].getRow()); assertEquals(3, lrs[1].getLastColumnNumber()); assertEquals(1, lrs[1].getRow()); assertEquals(5, lrs[2].getLastColumnNumber()); assertEquals(2, lrs[2].getRow()); for(int i=3; i<=19; i++) { assertEquals(-1, lrs[i].getLastColumnNumber()); assertEquals(i, lrs[i].getRow()); } assertEquals(4, lrs[20].getLastColumnNumber()); assertEquals(20, lrs[20].getRow()); assertEquals(6, lrs[21].getLastColumnNumber()); assertEquals(21, lrs[21].getRow()); assertEquals(11, lrs[22].getLastColumnNumber()); assertEquals(22, lrs[22].getRow()); } public void testMissingCellRecords() { openNormal(); // Find the cell at 0,0 int cell00 = -1; for(int i=0; i<r.length; i++) { if(r[i] instanceof LabelSSTRecord) { LabelSSTRecord lr = (LabelSSTRecord)r[i]; if(lr.getRow() == 0 && lr.getColumn() == 0) { cell00 = i; } } } assertTrue(cell00 > -1); // We have rows 0, 1, 2, 20 and 21 // Row 0 has 1 entry, 0 // Row 1 has 4 entries, 0+3 // Row 2 has 6 entries, 0+5 // Row 20 has 5 entries, 0-5 // Row 21 has 7 entries, 0+1+3+5+6 // Row 22 has 12 entries, 0+3+4+11 // Row 0 assertFalse(r[cell00+0] instanceof MissingCellDummyRecord); assertFalse(r[cell00+1] instanceof MissingCellDummyRecord); // Row 1 assertFalse(r[cell00+2] instanceof MissingCellDummyRecord); assertTrue(r[cell00+3] instanceof MissingCellDummyRecord); assertTrue(r[cell00+4] instanceof MissingCellDummyRecord); assertFalse(r[cell00+5] instanceof MissingCellDummyRecord); assertFalse(r[cell00+6] instanceof MissingCellDummyRecord); // Row 2 assertFalse(r[cell00+7] instanceof MissingCellDummyRecord); assertTrue(r[cell00+8] instanceof MissingCellDummyRecord); assertTrue(r[cell00+9] instanceof MissingCellDummyRecord); assertTrue(r[cell00+10] instanceof MissingCellDummyRecord); assertTrue(r[cell00+11] instanceof MissingCellDummyRecord); assertFalse(r[cell00+12] instanceof MissingCellDummyRecord); assertFalse(r[cell00+13] instanceof MissingCellDummyRecord); // Row 3-19 assertFalse(r[cell00+14] instanceof MissingCellDummyRecord); assertFalse(r[cell00+15] instanceof MissingCellDummyRecord); // Row 20 assertFalse(r[cell00+31] instanceof MissingCellDummyRecord); assertFalse(r[cell00+32] instanceof MissingCellDummyRecord); assertFalse(r[cell00+33] instanceof MissingCellDummyRecord); assertFalse(r[cell00+34] instanceof MissingCellDummyRecord); assertFalse(r[cell00+35] instanceof MissingCellDummyRecord); assertFalse(r[cell00+36] instanceof MissingCellDummyRecord); // Row 21 assertFalse(r[cell00+37] instanceof MissingCellDummyRecord); assertFalse(r[cell00+38] instanceof MissingCellDummyRecord); assertTrue(r[cell00+39] instanceof MissingCellDummyRecord); assertFalse(r[cell00+40] instanceof MissingCellDummyRecord); assertTrue(r[cell00+41] instanceof MissingCellDummyRecord); assertFalse(r[cell00+42] instanceof MissingCellDummyRecord); assertFalse(r[cell00+43] instanceof MissingCellDummyRecord); assertFalse(r[cell00+44] instanceof MissingCellDummyRecord); // Row 22 assertFalse(r[cell00+45] instanceof MissingCellDummyRecord); assertTrue(r[cell00+46] instanceof MissingCellDummyRecord); assertTrue(r[cell00+47] instanceof MissingCellDummyRecord); assertFalse(r[cell00+48] instanceof MissingCellDummyRecord); assertFalse(r[cell00+49] instanceof MissingCellDummyRecord); assertTrue(r[cell00+50] instanceof MissingCellDummyRecord); assertTrue(r[cell00+51] instanceof MissingCellDummyRecord); assertTrue(r[cell00+52] instanceof MissingCellDummyRecord); assertTrue(r[cell00+53] instanceof MissingCellDummyRecord); assertTrue(r[cell00+54] instanceof MissingCellDummyRecord); assertTrue(r[cell00+55] instanceof MissingCellDummyRecord); assertFalse(r[cell00+56] instanceof MissingCellDummyRecord); assertFalse(r[cell00+57] instanceof MissingCellDummyRecord); // Check some numbers MissingCellDummyRecord mc; mc = (MissingCellDummyRecord)r[cell00+3]; assertEquals(1, mc.getRow()); assertEquals(1, mc.getColumn()); mc = (MissingCellDummyRecord)r[cell00+4]; assertEquals(1, mc.getRow()); assertEquals(2, mc.getColumn()); mc = (MissingCellDummyRecord)r[cell00+8]; assertEquals(2, mc.getRow()); assertEquals(1, mc.getColumn()); mc = (MissingCellDummyRecord)r[cell00+9]; assertEquals(2, mc.getRow()); assertEquals(2, mc.getColumn()); mc = (MissingCellDummyRecord)r[cell00+55]; assertEquals(22, mc.getRow()); assertEquals(10, mc.getColumn()); } // Make sure we don't put in any extra new lines // that aren't already there public void testNoExtraNewLines() { // Load a different file // This file has has something in lines 1-33 readRecords("MRExtraLines.xls"); int rowCount=0; for(int i=0; i<r.length; i++) { if(r[i] instanceof LastCellOfRowDummyRecord) { LastCellOfRowDummyRecord eor = (LastCellOfRowDummyRecord) r[i]; assertEquals(rowCount, eor.getRow()); rowCount++; } } // Check we got the 33 rows assertEquals(33, rowCount); } private static final class MockHSSFListener implements HSSFListener { public MockHSSFListener() {} private final List _records = new ArrayList(); private boolean logToStdOut = false; public void processRecord(Record record) { _records.add(record); if(record instanceof MissingRowDummyRecord) { MissingRowDummyRecord mr = (MissingRowDummyRecord)record; log("Got dummy row " + mr.getRowNumber()); } if(record instanceof MissingCellDummyRecord) { MissingCellDummyRecord mc = (MissingCellDummyRecord)record; log("Got dummy cell " + mc.getRow() + " " + mc.getColumn()); } if(record instanceof LastCellOfRowDummyRecord) { LastCellOfRowDummyRecord lc = (LastCellOfRowDummyRecord)record; log("Got end-of row, row was " + lc.getRow() + ", last column was " + lc.getLastColumnNumber()); } if(record instanceof BOFRecord) { BOFRecord r = (BOFRecord)record; if(r.getType() == BOFRecord.TYPE_WORKSHEET) { log("On new sheet"); } } if(record instanceof RowRecord) { RowRecord rr = (RowRecord)record; log("Starting row #" + rr.getRowNumber()); } } private void log(String msg) { if(logToStdOut) { System.out.println(msg); } } public Record[] getRecords() { Record[] result = new Record[_records.size()]; _records.toArray(result); return result; } } /** * Make sure that the presence of shared formulas does not cause extra * end-of-row records. */ public void testEndOfRow_bug45672() { readRecords("ex45672.xls"); Record[] rr = r; int eorCount=0; int sfrCount=0; for (int i = 0; i < rr.length; i++) { Record record = rr[i]; if (record instanceof SharedFormulaRecord) { sfrCount++; } if (record instanceof LastCellOfRowDummyRecord) { eorCount++; } } if (eorCount == 2) { throw new AssertionFailedError("Identified bug 45672"); } assertEquals(1, eorCount); assertEquals(1, sfrCount); }}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?