View | Details | Raw Unified | Return to bug 58403
Collapse All | Expand All

(-)src/java/org/apache/poi/ss/util/CellRangeAddressBase.java (-4 / +64 lines)
Lines 17-22 Link Here
17
17
18
package org.apache.poi.ss.util;
18
package org.apache.poi.ss.util;
19
19
20
import java.util.Arrays;
21
20
import org.apache.poi.ss.SpreadsheetVersion;
22
import org.apache.poi.ss.SpreadsheetVersion;
21
23
22
24
Lines 72-85 Link Here
72
	}
74
	}
73
75
74
76
75
	//TODO use the correct SpreadsheetVersion
77
	/**
78
	 * @deprecated since September 2015. Use {@link #isFullColumnRange(SpreadsheetVersion)}
79
	 * @return
80
	 */
81
	@Deprecated
76
	public final boolean isFullColumnRange() {
82
	public final boolean isFullColumnRange() {
77
		return (_firstRow == 0 && _lastRow == SpreadsheetVersion.EXCEL97.getLastRowIndex())
83
		return isFullColumnRange(SpreadsheetVersion.EXCEL97);
84
	}
85
	/**
86
	 * Returns true if CellRangeAddress spans one or more entire columns
87
	 *
88
	 * @param version
89
	 * @return
90
	 */
91
	public final boolean isFullColumnRange(SpreadsheetVersion version) {
92
		return (_firstRow == 0 && _lastRow == version.getLastRowIndex())
78
		  || (_firstRow == -1 && _lastRow == -1);
93
		  || (_firstRow == -1 && _lastRow == -1);
79
	}
94
	}
80
	//TODO use the correct SpreadsheetVersion
95
	/**
96
	 * @deprecated since September 2015. Use {@link #isFullRowRange(SpreadsheetVersion)}
97
	 * @return
98
	 */
99
	@Deprecated
81
	public final boolean isFullRowRange() {
100
	public final boolean isFullRowRange() {
82
		return (_firstCol == 0 && _lastCol == SpreadsheetVersion.EXCEL97.getLastColumnIndex())
101
		return isFullRowRange(SpreadsheetVersion.EXCEL97);
102
	}
103
	/**
104
	 * Returns true if CellRangeAddress spans one or more entire rows
105
	 *
106
	 * @param version
107
	 * @return
108
	 */
109
	public final boolean isFullRowRange(SpreadsheetVersion version) {
110
		return (_firstCol == 0 && _lastCol == version.getLastColumnIndex())
83
		  || (_firstCol == -1 && _lastCol == -1);
111
		  || (_firstCol == -1 && _lastCol == -1);
84
	}
112
	}
85
113
Lines 164-167 Link Here
164
		CellReference crB = new CellReference(_lastRow, _lastCol);
192
		CellReference crB = new CellReference(_lastRow, _lastCol);
165
		return getClass().getName() + " [" + crA.formatAsString() + ":" + crB.formatAsString() +"]";
193
		return getClass().getName() + " [" + crA.formatAsString() + ":" + crB.formatAsString() +"]";
166
	}
194
	}
195
	
196
	   // In case _firstRow > _lastRow or _firstCol > _lastCol
197
    protected int getMinRow() {
198
        return Math.min(_firstRow, _lastRow);
199
    }
200
    protected int getMaxRow() {
201
        return Math.max(_firstRow, _lastRow);
202
    }
203
    protected int getMinColumn() {
204
        return Math.min(_firstCol, _lastCol);
205
    }
206
    protected int getMaxColumn() {
207
        return Math.max(_firstCol, _lastCol);
208
    }
209
    
210
    @Override
211
    public boolean equals(Object other) {
212
        if (other instanceof CellRangeAddressBase) {
213
            CellRangeAddressBase o = (CellRangeAddressBase) other;
214
            return ((getMinRow() == o.getMinRow()) &&
215
                    (getMaxRow() == o.getMaxRow()) &&
216
                    (getMinColumn() == o.getMinColumn()) &&
217
                    (getMaxColumn() == o.getMaxColumn()));
218
        }
219
        return false;
220
    }
221
    
222
    @Override
223
    public int hashCode() {
224
        final int[] values = new int[]{getMinRow(), getMaxRow(), getMinColumn(), getMaxColumn()};
225
        return Arrays.hashCode(values);
226
    }
167
}
227
}
(-)src/testcases/org/apache/poi/hssf/record/cf/TestCellRange.java (-2 / +3 lines)
Lines 22-27 Link Here
22
import junit.framework.AssertionFailedError;
22
import junit.framework.AssertionFailedError;
23
import junit.framework.TestCase;
23
import junit.framework.TestCase;
24
24
25
import org.apache.poi.ss.SpreadsheetVersion;
25
import org.apache.poi.ss.util.CellRangeAddress;
26
import org.apache.poi.ss.util.CellRangeAddress;
26
27
27
/**
28
/**
Lines 181-188 Link Here
181
	}
182
	}
182
183
183
	private static void confirmRange(CellRangeAddress cr, boolean isFullRow, boolean isFullColumn) {
184
	private static void confirmRange(CellRangeAddress cr, boolean isFullRow, boolean isFullColumn) {
184
		assertEquals("isFullRowRange", isFullRow, cr.isFullRowRange());
185
		assertEquals("isFullRowRange", isFullRow, cr.isFullRowRange(SpreadsheetVersion.EXCEL97));
185
		assertEquals("isFullColumnRange", isFullColumn, cr.isFullColumnRange());
186
		assertEquals("isFullColumnRange", isFullColumn, cr.isFullColumnRange(SpreadsheetVersion.EXCEL97));
186
	}
187
	}
187
	
188
	
188
	public void testNumberOfCells() {
189
	public void testNumberOfCells() {
(-)src/testcases/org/apache/poi/ss/util/TestCellRangeAddress.java (+82 lines)
Lines 23-28 Link Here
23
import junit.framework.TestCase;
23
import junit.framework.TestCase;
24
24
25
import org.apache.poi.hssf.record.TestcaseRecordInputStream;
25
import org.apache.poi.hssf.record.TestcaseRecordInputStream;
26
import org.apache.poi.ss.SpreadsheetVersion;
26
import org.apache.poi.util.LittleEndianOutputStream;
27
import org.apache.poi.util.LittleEndianOutputStream;
27
28
28
public final class TestCellRangeAddress extends TestCase {
29
public final class TestCellRangeAddress extends TestCase {
Lines 190-193 Link Here
190
        ref = new CellRangeAddress(-1, -1, -1, -1);
191
        ref = new CellRangeAddress(-1, -1, -1, -1);
191
        assertEquals(":", ref.formatAsString());
192
        assertEquals(":", ref.formatAsString());
192
    }
193
    }
194
    
195
    public static void testIsFullRowRange() {
196
        CellRangeAddress ref = new CellRangeAddress(0, 0, 0, 0);
197
        assertFalse("single cell range",
198
                ref.isFullRowRange(SpreadsheetVersion.EXCEL97));
199
        
200
        // 1 before last column (for Excel 97
201
        ref = new CellRangeAddress(0, 0, 0, 254);
202
        assertFalse("1 before last column for EXCEL97",
203
                ref.isFullRowRange(SpreadsheetVersion.EXCEL97));
204
        
205
        // last column (for Excel97)
206
        ref = new CellRangeAddress(0, 0, 0, 255);
207
        assertTrue("last column for Excel 97",
208
                ref.isFullRowRange(SpreadsheetVersion.EXCEL97));
209
        assertFalse("many before last column for Excel 2007",
210
                ref.isFullRowRange(SpreadsheetVersion.EXCEL2007));
211
        
212
        // 1 before last column
213
        ref = new CellRangeAddress(0, 0, 0, 16382);
214
        assertFalse("many after last column for Excel 97",
215
                ref.isFullRowRange(SpreadsheetVersion.EXCEL97));
216
        assertFalse("1 before last column for Excel 2007",
217
                ref.isFullRowRange(SpreadsheetVersion.EXCEL2007));
218
        
219
        //last column
220
        ref = new CellRangeAddress(0, 0, 0, 16383);
221
        assertTrue("last column for Excel 2007",
222
                ref.isFullRowRange(SpreadsheetVersion.EXCEL2007));
223
        
224
        //1 after last column
225
        ref = new CellRangeAddress(0, 0, 0, 16384);
226
        assertFalse("1 after last column for Excel 2007",
227
                ref.isFullRowRange(SpreadsheetVersion.EXCEL2007));
228
        
229
        // Does -1, -1 mean this is an invalid/deleted reference? Is this a useful test?
230
        ref = new CellRangeAddress(0, 0, -1, -1);
231
        assertTrue(ref.isFullRowRange(SpreadsheetVersion.EXCEL97));
232
        assertTrue(ref.isFullRowRange(SpreadsheetVersion.EXCEL2007));
233
    }
234
    
235
    public static void testIsFullColumnRange() {
236
        CellRangeAddress ref = new CellRangeAddress(0, 0, 0, 0);
237
        assertFalse(ref.isFullColumnRange(SpreadsheetVersion.EXCEL97));
238
        
239
        ref = new CellRangeAddress(0, 65534, 0, 0);
240
        assertFalse(ref.isFullColumnRange(SpreadsheetVersion.EXCEL97));
241
        
242
        ref = new CellRangeAddress(0, 65535, 0, 0);
243
        assertTrue(ref.isFullColumnRange(SpreadsheetVersion.EXCEL97));
244
        assertFalse(ref.isFullColumnRange(SpreadsheetVersion.EXCEL2007));
245
        
246
        ref = new CellRangeAddress(0, 1048574, 0, 0);
247
        assertFalse(ref.isFullColumnRange(SpreadsheetVersion.EXCEL97));
248
        assertFalse(ref.isFullColumnRange(SpreadsheetVersion.EXCEL2007));
249
        
250
        ref = new CellRangeAddress(0, 1048575, 0, 0);
251
        assertTrue(ref.isFullColumnRange(SpreadsheetVersion.EXCEL2007));
252
        
253
        ref = new CellRangeAddress(0, 1048576, 0, 0);
254
        assertFalse(ref.isFullColumnRange(SpreadsheetVersion.EXCEL2007));
255
        
256
        // Does -1, -1 mean this is an invalid/deleted reference? Is this a relevant test?
257
        ref = new CellRangeAddress(-1, -1, 0, 0);
258
        assertTrue(ref.isFullColumnRange(SpreadsheetVersion.EXCEL97));
259
        assertTrue(ref.isFullColumnRange(SpreadsheetVersion.EXCEL2007));
260
    }
261
    
262
    public static void testEquals() {
263
        final CellRangeAddress a = new CellRangeAddress(0, 0, 0, 0);
264
        final CellRangeAddress b = new CellRangeAddress(0, 0, 0, 0);
265
        assertNotSame(a, b);
266
        assertEquals(a, b);
267
    }
268
    
269
    public static void testHashCode() {
270
        final CellRangeAddress a = new CellRangeAddress(0, 0, 0, 0);
271
        final CellRangeAddress b = new CellRangeAddress(0, 0, 0, 0);
272
        assertNotSame(a, b);
273
        assertEquals(a.hashCode(), b.hashCode());
274
    }
193
}
275
}

Return to bug 58403