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:
Andrew C. Oliver 2002-11-23 19:00:46 +00:00
parent e22743ac81
commit c8a34f8af0
1 changed files with 153 additions and 0 deletions

View File

@ -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();
}
}