remove some junit dependencies in example-code build: do not pass junit-jar to normal compile targets to avoid introducing it as dependency again Reformat code, fix warnings, ... git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1798202 13f79535-47bb-0310-9956-ffa450edef68tags/REL_3_17_BETA1
@@ -325,12 +325,15 @@ under the License. | |||
<path id="main.classpath"> | |||
<pathelement location="${main.commons-logging.jar}"/> | |||
<pathelement location="${main.commons-codec.jar}"/> | |||
<pathelement location="${main.log4j.jar}"/> | |||
<pathelement location="${main.commons-collections4.jar}"/> | |||
</path> | |||
<!-- some libraries should only be required for compiling/running tests --> | |||
<path id="test.jar.classpath"> | |||
<pathelement location="${main.junit.jar}"/> | |||
<pathelement location="${main.jmh.jar}"/> | |||
<pathelement location="${main.jmhAnnotation.jar}"/> | |||
<pathelement location="${main.hamcrest.jar}"/> | |||
<pathelement location="${main.commons-collections4.jar}"/> | |||
</path> | |||
<path id="scratchpad.classpath"> | |||
@@ -375,6 +378,7 @@ under the License. | |||
<path id="test.ooxml.classpath"> | |||
<path refid="ooxml.classpath"/> | |||
<path refid="test.jar.classpath"/> | |||
<pathelement location="${ooxml.output.dir}"/> | |||
<pathelement location="${ooxml.output.test.dir}"/> | |||
<pathelement location="${main.output.test.dir}"/> | |||
@@ -385,6 +389,7 @@ under the License. | |||
<pathelement location="${integration.src.test}"/> | |||
<path refid="scratchpad.classpath"/> | |||
<path refid="ooxml.classpath"/> | |||
<path refid="test.jar.classpath"/> | |||
<pathelement location="${main.output.test.dir}"/> | |||
<pathelement location="${ooxml.output.dir}"/> | |||
<pathelement location="${integration.output.test.dir}"/> | |||
@@ -420,6 +425,7 @@ under the License. | |||
<path id="test.excelant.classpath"> | |||
<path refid="ooxml.classpath"/> | |||
<path refid="test.jar.classpath"/> | |||
<pathelement location="${ooxml.output.dir}"/> | |||
<pathelement location="${excelant.output.dir}"/> | |||
<pathelement location="${excelant.output.test.dir}"/> | |||
@@ -857,6 +863,10 @@ under the License. | |||
includeantruntime="false"> | |||
<!-- debug="${compile.debug}" --> | |||
<classpath refid="ooxml.classpath"/> | |||
<!-- unfortunately JUnit is required here for OOXMLLite, we should rather move OOXMLLite | |||
to test or a separate folder to clean up dependencies --> | |||
<classpath location="${main.junit.jar}"/> | |||
</javac> | |||
<jar basedir="${xmlbean.classes.dir}" destfile="@{classes-jar}" excludes="org/apache/**" level="9" /> | |||
@@ -918,6 +928,7 @@ under the License. | |||
includeantruntime="false"> | |||
<classpath> | |||
<path refid="main.classpath"/> | |||
<path refid="test.jar.classpath"/> | |||
<pathelement path="${main.output.dir}"/> | |||
</classpath> | |||
</javac> | |||
@@ -981,6 +992,7 @@ under the License. | |||
includeantruntime="false"> | |||
<classpath> | |||
<path refid="scratchpad.classpath"/> | |||
<path refid="test.jar.classpath"/> | |||
<pathelement location="${scratchpad.output.dir}"/> | |||
<pathelement location="${main.output.test.dir}"/> | |||
</classpath> | |||
@@ -1024,6 +1036,10 @@ under the License. | |||
<classpath> | |||
<path refid="ooxml.classpath"/> | |||
<path refid="ooxml.xmlsec.classpath"/> | |||
<!-- unfortunately JUnit is required here for OOXMLLite, we should rather move OOXMLLite | |||
to test or a separate folder to clean up dependencies --> | |||
<pathelement location="${main.junit.jar}"/> | |||
</classpath> | |||
</javac> | |||
<!-- compile the tests --> | |||
@@ -1114,6 +1130,7 @@ under the License. | |||
includeantruntime="false"> | |||
<classpath> | |||
<path refid="excelant.classpath"/> | |||
<path refid="test.jar.classpath"/> | |||
<pathelement location="${excelant.output.dir}"/> | |||
<pathelement path="${main.output.test.dir}"/> | |||
</classpath> | |||
@@ -1135,6 +1152,7 @@ under the License. | |||
<classpath> | |||
<path refid="scratchpad.classpath"/> | |||
<path refid="ooxml.classpath"/> | |||
<path refid="test.jar.classpath"/> | |||
<pathelement location="${ooxml.output.dir}"/> | |||
<pathelement location="${main.output.test.dir}"/> | |||
<pathelement location="${examples.output.dir}"/> | |||
@@ -1274,6 +1292,7 @@ under the License. | |||
<junit fork="yes" forkmode="once" printsummary="yes" haltonfailure="${halt.on.test.failure}" | |||
failureproperty="main.test.failed" showoutput="true"> | |||
<classpath refid="test.classpath"/> | |||
<classpath refid="test.jar.classpath"/> | |||
<syspropertyset refid="junit.properties"/> | |||
<jvmarg value="-ea"/> | |||
<jvmarg value="-Xmx256m"/> | |||
@@ -1391,6 +1410,7 @@ under the License. | |||
<junit printsummary="yes" fork="yes" forkmode="once" haltonfailure="${halt.on.test.failure}" | |||
failureproperty="scratchpad.test.failed"> | |||
<classpath refid="test.scratchpad.classpath"/> | |||
<classpath refid="test.jar.classpath"/> | |||
<syspropertyset refid="junit.properties"/> | |||
<jvmarg value="-ea"/> | |||
<!-- jvmarg value="-Duser.timezone=UTC"/ --> | |||
@@ -1443,7 +1463,10 @@ under the License. | |||
<jacoco:coverage enabled="${coverage.enabled}" excludes="${coverage.excludes}" destfile="build/jacoco-@{type}.exec"> | |||
<junit printsummary="yes" fork="yes" forkmode="once" haltonfailure="${halt.on.test.failure}" | |||
failureproperty="ooxml.test.failed"> | |||
<classpath refid="@{classpath}"/> | |||
<classpath> | |||
<path refid="@{classpath}"/> | |||
<path refid="test.jar.classpath"/> | |||
</classpath> | |||
<syspropertyset refid="junit.properties"/> | |||
<jvmarg value="${maxpermsize}"/> | |||
<jvmarg value="-Xmx768M"/> | |||
@@ -1476,6 +1499,7 @@ under the License. | |||
failureproperty="ooxml.xmlsec.test.failed"> | |||
<classpath> | |||
<path refid="@{classpath}"/> | |||
<path refid="test.jar.classpath"/> | |||
<path refid="ooxml.xmlsec.classpath"/> | |||
</classpath> | |||
<syspropertyset refid="junit.properties"/> |
@@ -19,8 +19,6 @@ | |||
package org.apache.poi.xwpf.usermodel.examples; | |||
import static org.junit.Assert.assertEquals; | |||
import java.io.File; | |||
import java.io.FileInputStream; | |||
import java.io.FileNotFoundException; | |||
@@ -77,7 +75,7 @@ public class UpdateEmbeddedDoc { | |||
this.docFile = new File(filename); | |||
FileInputStream fis = null; | |||
if (!this.docFile.exists()) { | |||
throw new FileNotFoundException("The Word dcoument " + filename + " does not exist."); | |||
throw new FileNotFoundException("The Word document " + filename + " does not exist."); | |||
} | |||
try { | |||
// Open the Word document file and instantiate the XWPFDocument | |||
@@ -90,7 +88,7 @@ public class UpdateEmbeddedDoc { | |||
} | |||
/** | |||
* Called to update the embedded Excel workbook. As the format and structire | |||
* Called to update the embedded Excel workbook. As the format and structure | |||
* of the workbook are known in advance, all this code attempts to do is | |||
* write a new value into the first cell on the first row of the first | |||
* worksheet. Prior to executing this method, that cell will contain the | |||
@@ -99,7 +97,7 @@ public class UpdateEmbeddedDoc { | |||
* @throws org.apache.poi.openxml4j.exceptions.OpenXML4JException | |||
* Rather | |||
* than use the specific classes (HSSF/XSSF) to handle the embedded | |||
* workbook this method uses those defeined in the SS stream. As | |||
* workbook this method uses those defined in the SS stream. As | |||
* a result, it might be the case that a SpreadsheetML file is | |||
* opened for processing, throwing this exception if that file is | |||
* invalid. | |||
@@ -160,7 +158,7 @@ public class UpdateEmbeddedDoc { | |||
* @throws org.apache.poi.openxml4j.exceptions.OpenXML4JException | |||
* Rather | |||
* than use the specific classes (HSSF/XSSF) to handle the embedded | |||
* workbook this method uses those defeined in the SS stream. As | |||
* workbook this method uses those defined in the SS stream. As | |||
* a result, it might be the case that a SpreadsheetML file is | |||
* opened for processing, throwing this exception if that file is | |||
* invalid. | |||
@@ -178,7 +176,9 @@ public class UpdateEmbeddedDoc { | |||
Sheet sheet = workbook.getSheetAt(SHEET_NUM); | |||
Row row = sheet.getRow(ROW_NUM); | |||
Cell cell = row.getCell(CELL_NUM); | |||
assertEquals(cell.getNumericCellValue(), NEW_VALUE, 0.0001); | |||
if(cell.getNumericCellValue() != NEW_VALUE) { | |||
throw new IllegalStateException("Failed to validate document content."); | |||
} | |||
} finally { | |||
IOUtils.closeQuietly(workbook); | |||
IOUtils.closeQuietly(is); | |||
@@ -189,9 +189,6 @@ public class UpdateEmbeddedDoc { | |||
/** | |||
* Code to test updating of the embedded Excel workbook. | |||
* | |||
* @param args | |||
* @throws OpenXML4JException | |||
*/ | |||
public static void main(String[] args) throws IOException, OpenXML4JException { | |||
UpdateEmbeddedDoc ued = new UpdateEmbeddedDoc(args[0]); |
@@ -27,47 +27,47 @@ import org.apache.poi.hwpf.extractor.WordExtractor; | |||
import org.junit.Test; | |||
public class HWPFFileHandler extends POIFSFileHandler { | |||
@Override | |||
public void handleFile(InputStream stream, String path) throws Exception { | |||
HWPFDocument doc = new HWPFDocument(stream); | |||
assertNotNull(doc.getBookmarks()); | |||
assertNotNull(doc.getCharacterTable()); | |||
assertNotNull(doc.getEndnotes()); | |||
handlePOIDocument(doc); | |||
} | |||
@Override | |||
public void handleFile(InputStream stream, String path) throws Exception { | |||
HWPFDocument doc = new HWPFDocument(stream); | |||
assertNotNull(doc.getBookmarks()); | |||
assertNotNull(doc.getCharacterTable()); | |||
assertNotNull(doc.getEndnotes()); | |||
handlePOIDocument(doc); | |||
} | |||
// a test-case to test this locally without executing the full TestAllFiles | |||
@Override | |||
// a test-case to test this locally without executing the full TestAllFiles | |||
@Override | |||
@Test | |||
public void test() throws Exception { | |||
public void test() throws Exception { | |||
File file = new File("test-data/document/52117.doc"); | |||
InputStream stream = new FileInputStream(file); | |||
try { | |||
handleFile(stream, file.getPath()); | |||
} finally { | |||
stream.close(); | |||
} | |||
handleExtracting(file); | |||
stream = new FileInputStream(file); | |||
try { | |||
WordExtractor extractor = new WordExtractor(stream); | |||
try { | |||
assertNotNull(extractor.getText()); | |||
} finally { | |||
extractor.close(); | |||
} | |||
} finally { | |||
stream.close(); | |||
} | |||
} | |||
try { | |||
handleFile(stream, file.getPath()); | |||
} finally { | |||
stream.close(); | |||
} | |||
handleExtracting(file); | |||
stream = new FileInputStream(file); | |||
try { | |||
WordExtractor extractor = new WordExtractor(stream); | |||
try { | |||
assertNotNull(extractor.getText()); | |||
} finally { | |||
extractor.close(); | |||
} | |||
} finally { | |||
stream.close(); | |||
} | |||
} | |||
@Test | |||
public void testExtractingOld() throws Exception { | |||
File file = new File("test-data/document/52117.doc"); | |||
handleExtracting(file); | |||
} | |||
@Test | |||
public void testExtractingOld() throws Exception { | |||
File file = new File("test-data/document/52117.doc"); | |||
handleExtracting(file); | |||
} | |||
} |
@@ -91,6 +91,7 @@ public class SheetUtil { | |||
public void evaluateAll() {} | |||
@Override | |||
public int evaluateFormulaCell(Cell cell) { | |||
//noinspection deprecation | |||
return cell.getCachedFormulaResultType(); | |||
} | |||
/** | |||
@@ -157,9 +158,9 @@ public class SheetUtil { | |||
AttributedString str = new AttributedString(txt); | |||
copyAttributes(font, str, 0, txt.length()); | |||
if (rt.numFormattingRuns() > 0) { | |||
/*if (rt.numFormattingRuns() > 0) { | |||
// TODO: support rich text fragments | |||
} | |||
}*/ | |||
width = getCellWidth(defaultCharWidth, colspan, style, width, str); | |||
} | |||
@@ -329,7 +330,7 @@ public class SheetUtil { | |||
/** | |||
* Copy text attributes from the supplied Font to Java2D AttributedString | |||
*/ | |||
private static void copyAttributes(Font font, AttributedString str, int startIdx, int endIdx) { | |||
private static void copyAttributes(Font font, AttributedString str, @SuppressWarnings("SameParameterValue") int startIdx, int endIdx) { | |||
str.addAttribute(TextAttribute.FAMILY, font.getFontName(), startIdx, endIdx); | |||
str.addAttribute(TextAttribute.SIZE, (float)font.getFontHeightInPoints()); | |||
if (font.getBold()) str.addAttribute(TextAttribute.WEIGHT, TextAttribute.WEIGHT_BOLD, startIdx, endIdx); | |||
@@ -360,9 +361,9 @@ public class SheetUtil { | |||
* Use this where you want to know if the given cell is explicitly defined | |||
* or not. | |||
* | |||
* @param sheet | |||
* @param rowIx | |||
* @param colIx | |||
* @param sheet The workbook sheet to look at. | |||
* @param rowIx The 0-based index of the row. | |||
* @param colIx The 0-based index of the cell. | |||
* @return cell at the given location, or null if not defined | |||
* @throws NullPointerException if sheet is null | |||
*/ | |||
@@ -384,10 +385,10 @@ public class SheetUtil { | |||
* then will return the cell itself. | |||
* <p>If there is no cell defined at the given co-ordinates, will return | |||
* null. | |||
* | |||
* @param sheet | |||
* @param rowIx | |||
* @param colIx | |||
* | |||
* @param sheet The workbook sheet to look at. | |||
* @param rowIx The 0-based index of the row. | |||
* @param colIx The 0-based index of the cell. | |||
* @return cell at the given location, its base merged cell, or null if not defined | |||
* @throws NullPointerException if sheet is null | |||
*/ |
@@ -143,9 +143,7 @@ public final class OOXMLLite { | |||
copyFile(cls.getResourceAsStream('/' + classRef), destFile); | |||
if(cls.isInterface()){ | |||
/** | |||
* Copy classes and interfaces declared as members of this class | |||
*/ | |||
/// Copy classes and interfaces declared as members of this class | |||
for(Class<?> fc : cls.getDeclaredClasses()){ | |||
className = fc.getName(); | |||
classRef = className.replace('.', '/') + ".class"; | |||
@@ -235,7 +233,6 @@ public final class OOXMLLite { | |||
} | |||
} catch (Throwable e) { // NOSONAR | |||
System.out.println("Class " + cls + " is not in classpath"); | |||
return; | |||
} | |||
} | |||
} |
@@ -948,15 +948,16 @@ public final class TestPackage { | |||
// bug 60128 | |||
@Test | |||
public void testCorruptFile() throws IOException { | |||
public void testCorruptFile() throws IOException, InvalidFormatException { | |||
OPCPackage pkg = null; | |||
File file = OpenXML4JTestDataSamples.getSampleFile("invalid.xlsx"); | |||
try { | |||
pkg = OPCPackage.open(file, PackageAccess.READ); | |||
} catch (Exception e) { | |||
System.out.println(e.getClass().getName()); | |||
} catch (NotOfficeXmlFileException e) { | |||
/*System.out.println(e.getClass().getName()); | |||
System.out.println(e.getMessage()); | |||
e.printStackTrace(); | |||
e.printStackTrace();*/ | |||
// ignore exception | |||
} finally { | |||
if (pkg != null) { | |||
pkg.close(); |
@@ -19,128 +19,76 @@ package org.apache.poi.hwpf.model; | |||
import java.nio.charset.Charset; | |||
import org.apache.poi.util.BitField; | |||
import org.apache.poi.util.BitFieldFactory; | |||
import org.apache.poi.util.Internal; | |||
import org.apache.poi.util.LittleEndian; | |||
import org.apache.poi.util.StringUtil; | |||
@Internal | |||
public final class PieceDescriptor | |||
{ | |||
short descriptor; | |||
private static BitField fNoParaLast = BitFieldFactory.getInstance(0x01); | |||
private static BitField fPaphNil = BitFieldFactory.getInstance(0x02); | |||
private static BitField fCopied = BitFieldFactory.getInstance(0x04); | |||
int fc; | |||
PropertyModifier prm; | |||
boolean unicode = false; | |||
private final Charset charset; | |||
public final class PieceDescriptor { | |||
private final short descriptor; | |||
int fc; // used from the outside?!? | |||
private final PropertyModifier prm; | |||
private final boolean unicode; | |||
private final Charset charset; | |||
public PieceDescriptor(byte[] buf, int offset) { | |||
this(buf, offset, null); | |||
} | |||
/** | |||
* | |||
* This initializer should only be used for HWPFOldDocuments. | |||
* | |||
* @param buf | |||
* @param offset | |||
* @param buf The buffer to read data from | |||
* @param offset The offset into the buffer to start reading from | |||
* @param charset which charset to use if this is not unicode | |||
*/ | |||
public PieceDescriptor(byte[] buf, int offset, Charset charset) { | |||
descriptor = LittleEndian.getShort(buf, offset); | |||
offset += LittleEndian.SHORT_SIZE; | |||
fc = LittleEndian.getInt(buf, offset); | |||
offset += LittleEndian.INT_SIZE; | |||
prm = new PropertyModifier(LittleEndian.getShort(buf, offset)); | |||
if (charset == null) { | |||
// see if this piece uses unicode. | |||
//From the documentation: If the second most significant bit | |||
//is clear, then this indicates the actual file offset of the Unicode character (two bytes). If the | |||
//second most significant bit is set, then the actual address of the codepage-1252 | |||
//compressed version of the Unicode character (one byte), is actually at the offset indicated | |||
//by clearing this bit and dividing by two. | |||
if ((fc & 0x40000000) == 0) { | |||
unicode = true; | |||
this.charset = null; | |||
public PieceDescriptor(byte[] buf, int offset, Charset charset) { | |||
descriptor = LittleEndian.getShort(buf, offset); | |||
offset += LittleEndian.SHORT_SIZE; | |||
fc = LittleEndian.getInt(buf, offset); | |||
offset += LittleEndian.INT_SIZE; | |||
prm = new PropertyModifier(LittleEndian.getShort(buf, offset)); | |||
if (charset == null) { | |||
// see if this piece uses unicode. | |||
//From the documentation: If the second most significant bit | |||
//is clear, then this indicates the actual file offset of the Unicode character (two bytes). If the | |||
//second most significant bit is set, then the actual address of the codepage-1252 | |||
//compressed version of the Unicode character (one byte), is actually at the offset indicated | |||
//by clearing this bit and dividing by two. | |||
if ((fc & 0x40000000) == 0) { | |||
unicode = true; | |||
this.charset = null; | |||
} else { | |||
unicode = false; | |||
fc &= ~(0x40000000);//gives me FC in doc stream | |||
fc /= 2; | |||
this.charset = StringUtil.WIN_1252; | |||
} | |||
} else { | |||
unicode = false; | |||
fc &= ~(0x40000000);//gives me FC in doc stream | |||
fc /= 2; | |||
this.charset = StringUtil.WIN_1252; | |||
if (charset == StringUtil.UTF16LE) { | |||
unicode = true; | |||
} else { | |||
unicode = false; | |||
} | |||
this.charset = charset; | |||
} | |||
} else { | |||
if (charset == StringUtil.UTF16LE) { | |||
unicode = true; | |||
} | |||
this.charset = charset; | |||
} | |||
} | |||
public int getFilePosition() | |||
{ | |||
return fc; | |||
} | |||
public void setFilePosition(int pos) | |||
{ | |||
fc = pos; | |||
} | |||
public boolean isUnicode() | |||
{ | |||
return unicode; | |||
} | |||
/** | |||
* | |||
* @return charset to use if this is not a Unicode PieceDescriptor | |||
* this can be <code>null</code> | |||
*/ | |||
public Charset getCharset() { | |||
return charset; | |||
} | |||
public PropertyModifier getPrm() | |||
{ | |||
return prm; | |||
} | |||
protected byte[] toByteArray() | |||
{ | |||
// set up the fc | |||
int tempFc = fc; | |||
if (!unicode) | |||
{ | |||
tempFc *= 2; | |||
tempFc |= (0x40000000); | |||
public int getFilePosition() { | |||
return fc; | |||
} | |||
int offset = 0; | |||
byte[] buf = new byte[8]; | |||
LittleEndian.putShort(buf, offset, descriptor); | |||
offset += LittleEndian.SHORT_SIZE; | |||
LittleEndian.putInt(buf, offset, tempFc); | |||
offset += LittleEndian.INT_SIZE; | |||
LittleEndian.putShort(buf, offset, prm.getValue()); | |||
return buf; | |||
} | |||
public void setFilePosition(int pos) { | |||
fc = pos; | |||
} | |||
public static int getSizeInBytes() | |||
{ | |||
return 8; | |||
} | |||
public boolean isUnicode() { | |||
return unicode; | |||
} | |||
@Override | |||
public int hashCode() | |||
{ | |||
public int hashCode() { | |||
final int prime = 31; | |||
int result = 1; | |||
result = prime * result + descriptor; | |||
@@ -149,35 +97,66 @@ public final class PieceDescriptor | |||
return result; | |||
} | |||
/** | |||
* @return charset to use if this is not a Unicode PieceDescriptor | |||
* this can be <code>null</code> | |||
*/ | |||
public Charset getCharset() { | |||
return charset; | |||
} | |||
public PropertyModifier getPrm() { | |||
return prm; | |||
} | |||
protected byte[] toByteArray() { | |||
// set up the fc | |||
int tempFc = fc; | |||
if (!unicode) { | |||
tempFc *= 2; | |||
tempFc |= (0x40000000); | |||
} | |||
int offset = 0; | |||
byte[] buf = new byte[8]; | |||
LittleEndian.putShort(buf, offset, descriptor); | |||
offset += LittleEndian.SHORT_SIZE; | |||
LittleEndian.putInt(buf, offset, tempFc); | |||
offset += LittleEndian.INT_SIZE; | |||
LittleEndian.putShort(buf, offset, prm.getValue()); | |||
return buf; | |||
} | |||
public static int getSizeInBytes() { | |||
return 8; | |||
} | |||
@Override | |||
public boolean equals( Object obj ) | |||
{ | |||
if ( this == obj ) | |||
public boolean equals(Object obj) { | |||
if (this == obj) | |||
return true; | |||
if ( obj == null ) | |||
if (obj == null) | |||
return false; | |||
if ( getClass() != obj.getClass() ) | |||
if (getClass() != obj.getClass()) | |||
return false; | |||
PieceDescriptor other = (PieceDescriptor) obj; | |||
if ( descriptor != other.descriptor ) | |||
if (descriptor != other.descriptor) | |||
return false; | |||
if ( prm == null ) | |||
{ | |||
if ( other.prm != null ) | |||
if (prm == null) { | |||
if (other.prm != null) | |||
return false; | |||
} | |||
else if ( !prm.equals( other.prm ) ) | |||
} else if (!prm.equals(other.prm)) | |||
return false; | |||
if ( unicode != other.unicode ) | |||
if (unicode != other.unicode) | |||
return false; | |||
return true; | |||
} | |||
@Override | |||
public String toString() | |||
{ | |||
public String toString() { | |||
return "PieceDescriptor (pos: " + getFilePosition() + "; " | |||
+ ( isUnicode() ? "unicode" : "non-unicode" ) + "; prm: " | |||
+ (isUnicode() ? "unicode" : "non-unicode") + "; prm: " | |||
+ getPrm() + ")"; | |||
} | |||
} |
@@ -37,8 +37,8 @@ import static org.junit.Assert.*; | |||
import static org.junit.Assume.assumeTrue; | |||
/** | |||
* Common superclass for testing {@link org.apache.poi.xssf.usermodel.XSSFCell} and | |||
* {@link org.apache.poi.hssf.usermodel.HSSFCell} | |||
* Common superclass for testing {@link HSSFCell}, org.apache.poi.xssf.usermodel.XSSFCell and | |||
* org.apache.poi.xssf.streaming.SXSSFCell | |||
*/ | |||
public abstract class BaseTestSheet { | |||
private static final int ROW_COUNT = 40000; | |||
@@ -417,7 +417,7 @@ public abstract class BaseTestSheet { | |||
//should exist now! | |||
assertTrue("there isn't more than one merged region in there", 1 <= sheet.getNumMergedRegions()); | |||
region = sheet.getMergedRegion(0); | |||
assertEquals("the merged row to doesnt match the one we put in ", 4, region.getLastRow()); | |||
assertEquals("the merged row to doesn't match the one we put in ", 4, region.getLastRow()); | |||
wb.close(); | |||
} |