I find this class usefull at work for testing my application that generates spreadsheets.
------------------------------------------------------------------------


import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;

import junit.framework.Assert;

import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFPrintSetup;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;

/**
* JUnit asserts for HSSF.
* @author nchalko
*
*/
public class HSSFAssert {
/**
* Constructor for HSSFTestUtils.
*/
private HSSFAssert() {
super();
}
/**
* Method assertHSSFValuesEquals.
* @param message
* @param expected The "good" xsl file to compare against
* @param result The file to test.
* @throws AssertionFailedError if the assertion fails.
*/
public static void assertHSSFValuesEquals(String message, File expected, File result) throws IOException {
Assert.assertTrue(message + " file " + expected + " does not exists", expected.exists());
Assert.assertTrue(message + " file " + result + " does not exists", result.exists());

HSSFWorkbook expectedWB = openWorkBook(expected);
HSSFWorkbook resultWB = openWorkBook(result);
assertHSSFWorkbookValuesEquals(message +" "+expected.getName(), expectedWB, resultWB);

}

/**
* Method assertHSSFValuesEquals.
* @param message
* @param expectedWB
* @param resultWB
*/
public static void assertHSSFWorkbookValuesEquals(
String message,
HSSFWorkbook expectedWB,
HSSFWorkbook resultWB) {
Assert.assertEquals(message + " number of sheets", expectedWB.getNumberOfSheets(), resultWB.getNumberOfSheets());
int count = expectedWB.getNumberOfSheets();
for (int i = 0; i < count; i++) {
HSSFSheet expectedSheet = expectedWB.getSheetAt(i);
HSSFSheet resultSheet = resultWB.getSheetAt(i);
assertHSSFSheetValuesEquals(message + " sheet " + i + " ", expectedSheet, resultSheet);
}

}

/**
* Method assertHSSFValuesEquals.
* @param message
* @param expectedSheet
* @param resultSheet
*/
public static void assertHSSFSheetValuesEquals(String message, HSSFSheet expectedSheet, HSSFSheet resultSheet) {

Assert.assertEquals(message + " first row number ", expectedSheet.getFirstRowNum(), resultSheet.getFirstRowNum());
Assert.assertEquals(message + " last row number ", expectedSheet.getLastRowNum(), resultSheet.getLastRowNum());
int firstRow = expectedSheet.getFirstRowNum();
int lastRow = expectedSheet.getLastRowNum();
for (int i = firstRow; i <= lastRow; i++) {
HSSFRow expectedRow = expectedSheet.getRow(i);
HSSFRow resultRow = resultSheet.getRow(i);
assertHSSFRowValuesEquals(message + " row " + i + " ", expectedRow, resultRow);
}
}

/**
* Method assertHSSFValuesEquals.
* @param string
* @param expectedRow
* @param resultRow
*/
public static void assertHSSFRowValuesEquals(String message, HSSFRow expectedRow, HSSFRow resultRow) {
//Assert.assertEquals(message + " number of cells", expectedRow.getPhysicalNumberOfCells(), resultRow.getPhysicalNumberOfCells());
short firstCell =(short)Math.min(expectedRow.getFirstCellNum(),resultRow.getFirstCellNum());
short lastCell = (short)Math.max(expectedRow.getLastCellNum(),resultRow.getLastCellNum());
for (short i = firstCell; i <= lastCell; i++) {
HSSFCell expectedCell = expectedRow.getCell(i);
HSSFCell resultCell = resultRow.getCell(i);
assertHSSFCellValuesEquals(message + " cell " + i + " ", expectedCell, resultCell);
}
}

/**
* Method assertHSSFValuesEquals.
* @param string
* @param expectedCell
* @param expectedCell1
*/
public static void assertHSSFCellValuesEquals(String message, HSSFCell expectedCell, HSSFCell resultCell) {
if (expectedCell==null && resultCell==null) {return ;}
Assert.assertEquals(message + " type ", expectedCell.getCellType(), resultCell.getCellType());
switch (expectedCell.getCellType()) {
case HSSFCell.CELL_TYPE_BLANK :

break;
case HSSFCell.CELL_TYPE_BOOLEAN :
Assert.assertEquals(message + " value", expectedCell.getBooleanCellValue(), resultCell.getBooleanCellValue());
break;
case HSSFCell.CELL_TYPE_ERROR :
Assert.assertEquals(message + " value", expectedCell.getErrorCellValue(), resultCell.getErrorCellValue());
break;
case HSSFCell.CELL_TYPE_FORMULA :
Assert.assertEquals(message + " value", expectedCell.getStringCellValue(), resultCell.getStringCellValue());
break;
case HSSFCell.CELL_TYPE_NUMERIC :
Assert.assertEquals(
message + " value",
expectedCell.getNumericCellValue(),
resultCell.getNumericCellValue(),
0);
break;
case HSSFCell.CELL_TYPE_STRING :
Assert.assertEquals(message + " value", expectedCell.getStringCellValue(), resultCell.getStringCellValue());
break;

default :
Assert.fail(message + " unexpected type " + expectedCell.getCellType());
break;
}

}

public static HSSFWorkbook openWorkBook(File file) throws IOException {

POIFSFileSystem fs = new POIFSFileSystem(new FileInputStream(file));
return new HSSFWorkbook(fs);

}

/**
* Method assertHSSFSheetPrintSetupEquals.
* @param string
* @param expectedSheet
* @param resultSheet
*/
public static void assertHSSFPrintSetupEquals(String message, HSSFPrintSetup expectedPrintSetup, HSSFPrintSetup resultPrintSetup) {
Assert.assertEquals(message +"Paper Size",expectedPrintSetup.getPaperSize(),resultPrintSetup.getPaperSize());
}

}



--
To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to