From c8a34f8af094230f7e43be5a54bac4a941dc47de Mon Sep 17 00:00:00 2001 From: "Andrew C. Oliver" Date: Sat, 23 Nov 2002 19:00:46 +0000 Subject: [PATCH] test for ModelFactory git-svn-id: https://svn.apache.org/repos/asf/jakarta/poi/trunk@352922 13f79535-47bb-0310-9956-ffa450edef68 --- .../poi/hssf/eventmodel/TestModelFactory.java | 153 ++++++++++++++++++ 1 file changed, 153 insertions(+) create mode 100644 src/testcases/org/apache/poi/hssf/eventmodel/TestModelFactory.java diff --git a/src/testcases/org/apache/poi/hssf/eventmodel/TestModelFactory.java b/src/testcases/org/apache/poi/hssf/eventmodel/TestModelFactory.java new file mode 100644 index 000000000..45a8a8250 --- /dev/null +++ b/src/testcases/org/apache/poi/hssf/eventmodel/TestModelFactory.java @@ -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(); + } + +} \ No newline at end of file