test for ModelFactory
git-svn-id: https://svn.apache.org/repos/asf/jakarta/poi/trunk@352922 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
e22743ac81
commit
c8a34f8af0
@ -0,0 +1,153 @@
|
||||
package org.apache.poi.hssf.eventmodel;
|
||||
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.OutputStream;
|
||||
import java.io.InputStream;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
|
||||
import org.apache.poi.hssf.model.Model;
|
||||
import org.apache.poi.hssf.model.Sheet;
|
||||
import org.apache.poi.hssf.model.Workbook;
|
||||
import org.apache.poi.hssf.usermodel.HSSFCell;
|
||||
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;
|
||||
|
||||
import junit.framework.TestCase;
|
||||
|
||||
/**
|
||||
* Tests the ModelFactory.
|
||||
*
|
||||
* @author Andrew C. Oliver acoliver@apache.org
|
||||
*/
|
||||
public class TestModelFactory extends TestCase
|
||||
{
|
||||
private ModelFactory factory;
|
||||
private HSSFWorkbook book;
|
||||
private InputStream in;
|
||||
private List models;
|
||||
|
||||
/**
|
||||
* Tests that the listeners collection is created
|
||||
* @param arg0
|
||||
*/
|
||||
public TestModelFactory(String arg0)
|
||||
{
|
||||
super(arg0);
|
||||
ModelFactory mf = new ModelFactory();
|
||||
assertTrue("listeners member cannot be null", mf.listeners != null);
|
||||
assertTrue("listeners member must be a List", mf.listeners instanceof List);
|
||||
}
|
||||
|
||||
public static void main(String[] args)
|
||||
{
|
||||
junit.textui.TestRunner.run(TestModelFactory.class);
|
||||
}
|
||||
|
||||
protected void setUp() throws Exception
|
||||
{
|
||||
super.setUp();
|
||||
models = new ArrayList(3);
|
||||
factory = new ModelFactory();
|
||||
book = new HSSFWorkbook();
|
||||
ByteArrayOutputStream stream = (ByteArrayOutputStream)setupRunFile(book);
|
||||
POIFSFileSystem fs = new POIFSFileSystem(
|
||||
new ByteArrayInputStream(stream.toByteArray())
|
||||
);
|
||||
in = fs.createDocumentInputStream("Workbook");
|
||||
}
|
||||
|
||||
protected void tearDown() throws Exception
|
||||
{
|
||||
super.tearDown();
|
||||
factory = null;
|
||||
book = null;
|
||||
in = null;
|
||||
}
|
||||
|
||||
/**
|
||||
* tests that listeners can be registered
|
||||
*/
|
||||
public void testRegisterListener()
|
||||
{
|
||||
if (factory.listeners.size() != 0) {
|
||||
factory = new ModelFactory();
|
||||
}
|
||||
|
||||
factory.registerListener(new MFListener(null));
|
||||
factory.registerListener(new MFListener(null));
|
||||
assertTrue("Factory listeners should be two, was="+
|
||||
factory.listeners.size(),
|
||||
factory.listeners.size() == 2);
|
||||
}
|
||||
|
||||
/**
|
||||
* tests that given a simple input stream with one workbook and sheet
|
||||
* that those models are processed and returned.
|
||||
*/
|
||||
public void testRun()
|
||||
{
|
||||
Model temp = null;
|
||||
Iterator mi = null;
|
||||
|
||||
if (factory.listeners.size() != 0) {
|
||||
factory = new ModelFactory();
|
||||
}
|
||||
|
||||
factory.registerListener(new MFListener(models));
|
||||
factory.run(in);
|
||||
|
||||
assertTrue("Models size must be 2 was = "+models.size(),
|
||||
models.size() == 2);
|
||||
mi = models.iterator();
|
||||
temp = (Model)mi.next();
|
||||
|
||||
assertTrue("First model is Workbook was " + temp.getClass().getName(),
|
||||
temp instanceof Workbook);
|
||||
|
||||
temp = (Model)mi.next();
|
||||
|
||||
assertTrue("Second model is Sheet was " + temp.getClass().getName(),
|
||||
temp instanceof Sheet);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets up a test file
|
||||
*/
|
||||
private ByteArrayOutputStream setupRunFile(HSSFWorkbook book) throws Exception {
|
||||
ByteArrayOutputStream stream = new ByteArrayOutputStream();
|
||||
HSSFSheet sheet = book.createSheet("Test");
|
||||
HSSFRow row = sheet.createRow(0);
|
||||
HSSFCell cell = row.createCell((short)0);
|
||||
cell.setCellValue(10.5);
|
||||
book.write(stream);
|
||||
return stream;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* listener for use in the test
|
||||
*/
|
||||
class MFListener implements ModelFactoryListener {
|
||||
private List mlist;
|
||||
public MFListener(List mlist) {
|
||||
this.mlist = mlist;
|
||||
}
|
||||
|
||||
public boolean process(Model model)
|
||||
{
|
||||
mlist.add(model);
|
||||
return true;
|
||||
}
|
||||
|
||||
public Iterator models() {
|
||||
return mlist.iterator();
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue
Block a user