You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@poi.apache.org by jo...@apache.org on 2008/04/07 05:02:06 UTC

svn commit: r645348 [4/6] - in /poi/trunk/src: documentation/content/xdocs/ java/org/apache/poi/util/ testcases/org/apache/poi/ testcases/org/apache/poi/hssf/ testcases/org/apache/poi/hssf/eventusermodel/ testcases/org/apache/poi/hssf/extractor/ testca...

Modified: poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFSheet.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFSheet.java?rev=645348&r1=645347&r2=645348&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFSheet.java (original)
+++ poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFSheet.java Sun Apr  6 20:02:03 2008
@@ -1,4 +1,3 @@
-
 /* ====================================================================
    Licensed to the Apache Software Foundation (ASF) under one or more
    contributor license agreements.  See the NOTICE file distributed with
@@ -15,7 +14,6 @@
    See the License for the specific language governing permissions and
    limitations under the License.
 ==================================================================== */
-        
 
 package org.apache.poi.hssf.usermodel;
 
@@ -27,6 +25,7 @@
 
 import junit.framework.TestCase;
 
+import org.apache.poi.hssf.HSSFTestDataSamples;
 import org.apache.poi.hssf.model.Sheet;
 import org.apache.poi.hssf.record.HCenterRecord;
 import org.apache.poi.hssf.record.PasswordRecord;
@@ -36,7 +35,6 @@
 import org.apache.poi.hssf.record.WSBoolRecord;
 import org.apache.poi.hssf.record.WindowTwoRecord;
 import org.apache.poi.hssf.util.Region;
-import org.apache.poi.poifs.filesystem.POIFSFileSystem;
 import org.apache.poi.util.TempFile;
 
 /**
@@ -46,395 +44,381 @@
  * @author Glen Stampoultzis (glens at apache.org)
  * @author Andrew C. Oliver (acoliver apache org)
  */
+public final class TestHSSFSheet extends TestCase {
+
+	private static HSSFWorkbook openSample(String sampleFileName) {
+		return HSSFTestDataSamples.openSampleWorkbook(sampleFileName);
+	}
+
+	/**
+	 * Test the gridset field gets set as expected.
+	 */
+
+	public void testBackupRecord()
+			throws Exception
+	{
+		HSSFWorkbook wb = new HSSFWorkbook();
+		HSSFSheet s = wb.createSheet();
+		Sheet sheet = s.getSheet();
+
+		assertEquals(true, sheet.getGridsetRecord().getGridset());
+		s.setGridsPrinted(true);
+		assertEquals(false, sheet.getGridsetRecord().getGridset());
+	}
+
+	/**
+	 * Test vertically centered output.
+	 */
+
+	public void testVerticallyCenter()
+			throws Exception
+	{
+		HSSFWorkbook wb = new HSSFWorkbook();
+		HSSFSheet s = wb.createSheet();
+		Sheet sheet = s.getSheet();
+		VCenterRecord record =
+				(VCenterRecord) sheet.findFirstRecordBySid(VCenterRecord.sid);
+
+		assertEquals(false, record.getVCenter());
+		s.setVerticallyCenter(true);
+		assertEquals(true, record.getVCenter());
+
+		// wb.write(new FileOutputStream("c:\\test.xls"));
+	}
+
+	/**
+	 * Test horizontally centered output.
+	 */
+
+	public void testHorizontallyCenter()
+			throws Exception
+	{
+		HSSFWorkbook wb = new HSSFWorkbook();
+		HSSFSheet s = wb.createSheet();
+		Sheet sheet = s.getSheet();
+		HCenterRecord record =
+				(HCenterRecord) sheet.findFirstRecordBySid(HCenterRecord.sid);
+
+		assertEquals(false, record.getHCenter());
+		s.setHorizontallyCenter(true);
+		assertEquals(true, record.getHCenter());
+
+	}
 
-public class TestHSSFSheet
-        extends TestCase
-{
-    public TestHSSFSheet(String s)
-    {
-        super(s);
-    }
-
-    /**
-     * Test the gridset field gets set as expected.
-     */
-
-    public void testBackupRecord()
-            throws Exception
-    {
-        HSSFWorkbook wb = new HSSFWorkbook();
-        HSSFSheet s = wb.createSheet();
-        Sheet sheet = s.getSheet();
-
-        assertEquals(true, sheet.getGridsetRecord().getGridset());
-        s.setGridsPrinted(true);
-        assertEquals(false, sheet.getGridsetRecord().getGridset());
-    }
-
-    /**
-     * Test vertically centered output.
-     */
-
-    public void testVerticallyCenter()
-            throws Exception
-    {
-        HSSFWorkbook wb = new HSSFWorkbook();
-        HSSFSheet s = wb.createSheet();
-        Sheet sheet = s.getSheet();
-        VCenterRecord record =
-                (VCenterRecord) sheet.findFirstRecordBySid(VCenterRecord.sid);
-
-        assertEquals(false, record.getVCenter());
-        s.setVerticallyCenter(true);
-        assertEquals(true, record.getVCenter());
-
-        // wb.write(new FileOutputStream("c:\\test.xls"));
-    }
-
-    /**
-     * Test horizontally centered output.
-     */
-
-    public void testHorizontallyCenter()
-            throws Exception
-    {
-        HSSFWorkbook wb = new HSSFWorkbook();
-        HSSFSheet s = wb.createSheet();
-        Sheet sheet = s.getSheet();
-        HCenterRecord record =
-                (HCenterRecord) sheet.findFirstRecordBySid(HCenterRecord.sid);
-
-        assertEquals(false, record.getHCenter());
-        s.setHorizontallyCenter(true);
-        assertEquals(true, record.getHCenter());
-
-    }    
-    
-    
-    /**
-     * Test WSBboolRecord fields get set in the user model.
-     */
-
-    public void testWSBool()
-    {
-        HSSFWorkbook wb = new HSSFWorkbook();
-        HSSFSheet s = wb.createSheet();
-        Sheet sheet = s.getSheet();
-        WSBoolRecord record =
-                (WSBoolRecord) sheet.findFirstRecordBySid(WSBoolRecord.sid);
-
-        // Check defaults
-        assertEquals(true, record.getAlternateExpression());
-        assertEquals(true, record.getAlternateFormula());
-        assertEquals(false, record.getAutobreaks());
-        assertEquals(false, record.getDialog());
-        assertEquals(false, record.getDisplayGuts());
-        assertEquals(true, record.getFitToPage());
-        assertEquals(false, record.getRowSumsBelow());
-        assertEquals(false, record.getRowSumsRight());
-
-        // Alter
-        s.setAlternativeExpression(false);
-        s.setAlternativeFormula(false);
-        s.setAutobreaks(true);
-        s.setDialog(true);
-        s.setDisplayGuts(true);
-        s.setFitToPage(false);
-        s.setRowSumsBelow(true);
-        s.setRowSumsRight(true);
-
-        // Check
-        assertEquals(false, record.getAlternateExpression());
-        assertEquals(false, record.getAlternateFormula());
-        assertEquals(true, record.getAutobreaks());
-        assertEquals(true, record.getDialog());
-        assertEquals(true, record.getDisplayGuts());
-        assertEquals(false, record.getFitToPage());
-        assertEquals(true, record.getRowSumsBelow());
-        assertEquals(true, record.getRowSumsRight());
-        assertEquals(false, s.getAlternateExpression());
-        assertEquals(false, s.getAlternateFormula());
-        assertEquals(true, s.getAutobreaks());
-        assertEquals(true, s.getDialog());
-        assertEquals(true, s.getDisplayGuts());
-        assertEquals(false, s.getFitToPage());
-        assertEquals(true, s.getRowSumsBelow());
-        assertEquals(true, s.getRowSumsRight());
-    }
-
-    public void testReadBooleans()
-            throws Exception
-    {
-        HSSFWorkbook workbook = new HSSFWorkbook();
-        HSSFSheet sheet = workbook.createSheet("Test boolean");
-        HSSFRow row = sheet.createRow((short) 2);
-        HSSFCell cell = row.createCell((short) 9);
-        cell.setCellValue(true);
-        cell = row.createCell((short) 11);
-        cell.setCellValue(true);
-        File tempFile = TempFile.createTempFile("bool", "test.xls");
-        FileOutputStream stream = new FileOutputStream(tempFile);
-        workbook.write(stream);
-        stream.close();
-
-        FileInputStream readStream = new FileInputStream(tempFile);
-        workbook = new HSSFWorkbook(readStream);
-        sheet = workbook.getSheetAt(0);
-        row = sheet.getRow(2);
-        stream.close();
-        tempFile.delete();
-        assertNotNull(row);
-        assertEquals(2, row.getPhysicalNumberOfCells());
-    }
-
-    public void testRemoveRow()
-    {
-        HSSFWorkbook workbook = new HSSFWorkbook();
-        HSSFSheet sheet = workbook.createSheet("Test boolean");
-        HSSFRow row = sheet.createRow((short) 2);
-        sheet.removeRow(row);
-    }
-
-    public void testCloneSheet() {
-        HSSFWorkbook workbook = new HSSFWorkbook();
-        HSSFSheet sheet = workbook.createSheet("Test Clone");
-        HSSFRow row = sheet.createRow((short) 0);
-        HSSFCell cell = row.createCell((short) 0);
-        cell.setCellValue("clone_test"); 
-        HSSFSheet cloned = workbook.cloneSheet(0);
+
+	/**
+	 * Test WSBboolRecord fields get set in the user model.
+	 */
+
+	public void testWSBool()
+	{
+		HSSFWorkbook wb = new HSSFWorkbook();
+		HSSFSheet s = wb.createSheet();
+		Sheet sheet = s.getSheet();
+		WSBoolRecord record =
+				(WSBoolRecord) sheet.findFirstRecordBySid(WSBoolRecord.sid);
+
+		// Check defaults
+		assertEquals(true, record.getAlternateExpression());
+		assertEquals(true, record.getAlternateFormula());
+		assertEquals(false, record.getAutobreaks());
+		assertEquals(false, record.getDialog());
+		assertEquals(false, record.getDisplayGuts());
+		assertEquals(true, record.getFitToPage());
+		assertEquals(false, record.getRowSumsBelow());
+		assertEquals(false, record.getRowSumsRight());
+
+		// Alter
+		s.setAlternativeExpression(false);
+		s.setAlternativeFormula(false);
+		s.setAutobreaks(true);
+		s.setDialog(true);
+		s.setDisplayGuts(true);
+		s.setFitToPage(false);
+		s.setRowSumsBelow(true);
+		s.setRowSumsRight(true);
+
+		// Check
+		assertEquals(false, record.getAlternateExpression());
+		assertEquals(false, record.getAlternateFormula());
+		assertEquals(true, record.getAutobreaks());
+		assertEquals(true, record.getDialog());
+		assertEquals(true, record.getDisplayGuts());
+		assertEquals(false, record.getFitToPage());
+		assertEquals(true, record.getRowSumsBelow());
+		assertEquals(true, record.getRowSumsRight());
+		assertEquals(false, s.getAlternateExpression());
+		assertEquals(false, s.getAlternateFormula());
+		assertEquals(true, s.getAutobreaks());
+		assertEquals(true, s.getDialog());
+		assertEquals(true, s.getDisplayGuts());
+		assertEquals(false, s.getFitToPage());
+		assertEquals(true, s.getRowSumsBelow());
+		assertEquals(true, s.getRowSumsRight());
+	}
+
+	public void testReadBooleans()
+			throws Exception
+	{
+		HSSFWorkbook workbook = new HSSFWorkbook();
+		HSSFSheet sheet = workbook.createSheet("Test boolean");
+		HSSFRow row = sheet.createRow((short) 2);
+		HSSFCell cell = row.createCell((short) 9);
+		cell.setCellValue(true);
+		cell = row.createCell((short) 11);
+		cell.setCellValue(true);
+		File tempFile = TempFile.createTempFile("bool", "test.xls");
+		FileOutputStream stream = new FileOutputStream(tempFile);
+		workbook.write(stream);
+		stream.close();
+
+		FileInputStream readStream = new FileInputStream(tempFile);
+		workbook = new HSSFWorkbook(readStream);
+		sheet = workbook.getSheetAt(0);
+		row = sheet.getRow(2);
+		stream.close();
+		tempFile.delete();
+		assertNotNull(row);
+		assertEquals(2, row.getPhysicalNumberOfCells());
+	}
+
+	public void testRemoveRow()
+	{
+		HSSFWorkbook workbook = new HSSFWorkbook();
+		HSSFSheet sheet = workbook.createSheet("Test boolean");
+		HSSFRow row = sheet.createRow((short) 2);
+		sheet.removeRow(row);
+	}
+
+	public void testCloneSheet() {
+		HSSFWorkbook workbook = new HSSFWorkbook();
+		HSSFSheet sheet = workbook.createSheet("Test Clone");
+		HSSFRow row = sheet.createRow((short) 0);
+		HSSFCell cell = row.createCell((short) 0);
+		cell.setCellValue("clone_test"); 
+		HSSFSheet cloned = workbook.cloneSheet(0);
   
-        //Check for a good clone
-        assertEquals(cloned.getRow((short)0).getCell((short)0).getStringCellValue(), "clone_test");
-        
-        //Check that the cells are not somehow linked
-        cell.setCellValue("Difference Check");
-        assertEquals(cloned.getRow((short)0).getCell((short)0).getStringCellValue(), "clone_test");
-    }
-
-    /** tests that the sheet name for multiple clones of the same sheet is unique
-     * BUG 37416
-     */    
-    public void testCloneSheetMultipleTimes() {
-        HSSFWorkbook workbook = new HSSFWorkbook();
-        HSSFSheet sheet = workbook.createSheet("Test Clone");
-        HSSFRow row = sheet.createRow((short) 0);
-        HSSFCell cell = row.createCell((short) 0);
-        cell.setCellValue("clone_test");
-        //Clone the sheet multiple times
-        workbook.cloneSheet(0);
-        workbook.cloneSheet(0);
-        
-        assertNotNull(workbook.getSheet("Test Clone"));
-        assertNotNull(workbook.getSheet("Test Clone(1)"));
-        assertNotNull(workbook.getSheet("Test Clone(2)"));  
-    }
-    
-    /**
-     * Setting landscape and portrait stuff on new sheets
-     */
-    public void testPrintSetupLandscapeNew() throws Exception {
-        HSSFWorkbook workbook = new HSSFWorkbook();
-        HSSFSheet sheetL = workbook.createSheet("LandscapeS");
-        HSSFSheet sheetP = workbook.createSheet("LandscapeP");
-        
-        // Check two aspects of the print setup
-        assertFalse(sheetL.getPrintSetup().getLandscape());
-        assertFalse(sheetP.getPrintSetup().getLandscape());
-        assertEquals(0, sheetL.getPrintSetup().getCopies());
-        assertEquals(0, sheetP.getPrintSetup().getCopies());
-        
-        // Change one on each
-        sheetL.getPrintSetup().setLandscape(true);
-        sheetP.getPrintSetup().setCopies((short)3);
-        
-        // Check taken
-        assertTrue(sheetL.getPrintSetup().getLandscape());
-        assertFalse(sheetP.getPrintSetup().getLandscape());
-        assertEquals(0, sheetL.getPrintSetup().getCopies());
-        assertEquals(3, sheetP.getPrintSetup().getCopies());
-        
-        // Save and re-load, and check still there
-        ByteArrayOutputStream baos = new ByteArrayOutputStream();
-        workbook.write(baos);
-        workbook = new HSSFWorkbook(new ByteArrayInputStream(baos.toByteArray()));
-        
-        assertTrue(sheetL.getPrintSetup().getLandscape());
-        assertFalse(sheetP.getPrintSetup().getLandscape());
-        assertEquals(0, sheetL.getPrintSetup().getCopies());
-        assertEquals(3, sheetP.getPrintSetup().getCopies());
-    }
-    
-    /**
-     * Setting landscape and portrait stuff on existing sheets
-     */
-    public void testPrintSetupLandscapeExisting() throws Exception {
-        String filename = System.getProperty("HSSF.testdata.path");
-        filename = filename + "/SimpleWithPageBreaks.xls";
-        HSSFWorkbook workbook = 
-        	new HSSFWorkbook(new FileInputStream(filename));
-        
-        assertEquals(3, workbook.getNumberOfSheets());
-        
-        HSSFSheet sheetL = workbook.getSheetAt(0);
-        HSSFSheet sheetPM = workbook.getSheetAt(1);
-        HSSFSheet sheetLS = workbook.getSheetAt(2);
-        
-        // Check two aspects of the print setup
-        assertFalse(sheetL.getPrintSetup().getLandscape());
-        assertTrue(sheetPM.getPrintSetup().getLandscape());
-        assertTrue(sheetLS.getPrintSetup().getLandscape());
-        assertEquals(1, sheetL.getPrintSetup().getCopies());
-        assertEquals(1, sheetPM.getPrintSetup().getCopies());
-        assertEquals(1, sheetLS.getPrintSetup().getCopies());
-        
-        // Change one on each
-        sheetL.getPrintSetup().setLandscape(true);
-        sheetPM.getPrintSetup().setLandscape(false);
-        sheetPM.getPrintSetup().setCopies((short)3);
-        
-        // Check taken
-        assertTrue(sheetL.getPrintSetup().getLandscape());
-        assertFalse(sheetPM.getPrintSetup().getLandscape());
-        assertTrue(sheetLS.getPrintSetup().getLandscape());
-        assertEquals(1, sheetL.getPrintSetup().getCopies());
-        assertEquals(3, sheetPM.getPrintSetup().getCopies());
-        assertEquals(1, sheetLS.getPrintSetup().getCopies());
-        
-        // Save and re-load, and check still there
-        ByteArrayOutputStream baos = new ByteArrayOutputStream();
-        workbook.write(baos);
-        workbook = new HSSFWorkbook(new ByteArrayInputStream(baos.toByteArray()));
-        
-        assertTrue(sheetL.getPrintSetup().getLandscape());
-        assertFalse(sheetPM.getPrintSetup().getLandscape());
-        assertTrue(sheetLS.getPrintSetup().getLandscape());
-        assertEquals(1, sheetL.getPrintSetup().getCopies());
-        assertEquals(3, sheetPM.getPrintSetup().getCopies());
-        assertEquals(1, sheetLS.getPrintSetup().getCopies());
-    }
-    
-    public void testGroupRows() throws Exception {
-        HSSFWorkbook workbook = new HSSFWorkbook();
-        HSSFSheet s = workbook.createSheet();
-        HSSFRow r1 = s.createRow(0);
-        HSSFRow r2 = s.createRow(1);
-        HSSFRow r3 = s.createRow(2);
-        HSSFRow r4 = s.createRow(3);
-        HSSFRow r5 = s.createRow(4);
-        
-        assertEquals(0, r1.getOutlineLevel());
-        assertEquals(0, r2.getOutlineLevel());
-        assertEquals(0, r3.getOutlineLevel());
-        assertEquals(0, r4.getOutlineLevel());
-        assertEquals(0, r5.getOutlineLevel());
-        
-        s.groupRow(2,3);
-        
-        assertEquals(0, r1.getOutlineLevel());
-        assertEquals(0, r2.getOutlineLevel());
-        assertEquals(1, r3.getOutlineLevel());
-        assertEquals(1, r4.getOutlineLevel());
-        assertEquals(0, r5.getOutlineLevel());
-        
-        // Save and re-open
-        ByteArrayOutputStream baos = new ByteArrayOutputStream();
-        workbook.write(baos);
-        workbook = new HSSFWorkbook(
-        		new ByteArrayInputStream(baos.toByteArray())
-        );
-        
-        s = workbook.getSheetAt(0);
-        r1 = s.getRow(0);
-        r2 = s.getRow(1);
-        r3 = s.getRow(2);
-        r4 = s.getRow(3);
-        r5 = s.getRow(4);
-        
-        assertEquals(0, r1.getOutlineLevel());
-        assertEquals(0, r2.getOutlineLevel());
-        assertEquals(1, r3.getOutlineLevel());
-        assertEquals(1, r4.getOutlineLevel());
-        assertEquals(0, r5.getOutlineLevel());
-    }
-    
-    public void testGroupRowsExisting() throws Exception {
-        String filename = System.getProperty("HSSF.testdata.path");
-        filename = filename + "/NoGutsRecords.xls";
-        HSSFWorkbook workbook = 
-        	new HSSFWorkbook(new FileInputStream(filename));
-        
-        HSSFSheet s = workbook.getSheetAt(0);
-        HSSFRow r1 = s.getRow(0);
-        HSSFRow r2 = s.getRow(1);
-        HSSFRow r3 = s.getRow(2);
-        HSSFRow r4 = s.getRow(3);
-        HSSFRow r5 = s.getRow(4);
-        HSSFRow r6 = s.getRow(5);
-
-        assertEquals(0, r1.getOutlineLevel());
-        assertEquals(0, r2.getOutlineLevel());
-        assertEquals(0, r3.getOutlineLevel());
-        assertEquals(0, r4.getOutlineLevel());
-        assertEquals(0, r5.getOutlineLevel());
-        assertEquals(0, r6.getOutlineLevel());
-        
-        // This used to complain about lacking guts records
-        s.groupRow(2, 4);
-        
-        assertEquals(0, r1.getOutlineLevel());
-        assertEquals(0, r2.getOutlineLevel());
-        assertEquals(1, r3.getOutlineLevel());
-        assertEquals(1, r4.getOutlineLevel());
-        assertEquals(1, r5.getOutlineLevel());
-        assertEquals(0, r6.getOutlineLevel());
-        
-        // Save and re-open
-        ByteArrayOutputStream baos = new ByteArrayOutputStream();
-        workbook.write(baos);
-        workbook = new HSSFWorkbook(
-        		new ByteArrayInputStream(baos.toByteArray())
-        );
-        
-        s = workbook.getSheetAt(0);
-        r1 = s.getRow(0);
-        r2 = s.getRow(1);
-        r3 = s.getRow(2);
-        r4 = s.getRow(3);
-        r5 = s.getRow(4);
-        r6 = s.getRow(5);
-        
-        assertEquals(0, r1.getOutlineLevel());
-        assertEquals(0, r2.getOutlineLevel());
-        assertEquals(1, r3.getOutlineLevel());
-        assertEquals(1, r4.getOutlineLevel());
-        assertEquals(1, r5.getOutlineLevel());
-        assertEquals(0, r6.getOutlineLevel());
-    }
-    
-    public void testGetDrawings() throws Exception {
-        String filename = System.getProperty("HSSF.testdata.path");
-    	HSSFWorkbook wb1c = new HSSFWorkbook(
-    			new FileInputStream(new File(filename,"WithChart.xls"))
-    	);
-    	HSSFWorkbook wb2c = new HSSFWorkbook(
-    			new FileInputStream(new File(filename,"WithTwoCharts.xls"))
-    	);
-    	
-    	// 1 chart sheet -> data on 1st, chart on 2nd
-    	assertNotNull(wb1c.getSheetAt(0).getDrawingPatriarch());
-    	assertNotNull(wb1c.getSheetAt(1).getDrawingPatriarch());
-    	assertFalse(wb1c.getSheetAt(0).getDrawingPatriarch().containsChart());
-    	assertTrue(wb1c.getSheetAt(1).getDrawingPatriarch().containsChart());
-    	
-    	// 2 chart sheet -> data on 1st, chart on 2nd+3rd
-    	assertNotNull(wb2c.getSheetAt(0).getDrawingPatriarch());
-    	assertNotNull(wb2c.getSheetAt(1).getDrawingPatriarch());
-    	assertNotNull(wb2c.getSheetAt(2).getDrawingPatriarch());
-    	assertFalse(wb2c.getSheetAt(0).getDrawingPatriarch().containsChart());
-    	assertTrue(wb2c.getSheetAt(1).getDrawingPatriarch().containsChart());
-    	assertTrue(wb2c.getSheetAt(2).getDrawingPatriarch().containsChart());
-    }
-    
+		//Check for a good clone
+		assertEquals(cloned.getRow((short)0).getCell((short)0).getStringCellValue(), "clone_test");
+
+		//Check that the cells are not somehow linked
+		cell.setCellValue("Difference Check");
+		assertEquals(cloned.getRow((short)0).getCell((short)0).getStringCellValue(), "clone_test");
+	}
+
+	/** tests that the sheet name for multiple clones of the same sheet is unique
+	 * BUG 37416
+	 */
+	public void testCloneSheetMultipleTimes() {
+		HSSFWorkbook workbook = new HSSFWorkbook();
+		HSSFSheet sheet = workbook.createSheet("Test Clone");
+		HSSFRow row = sheet.createRow((short) 0);
+		HSSFCell cell = row.createCell((short) 0);
+		cell.setCellValue("clone_test");
+		//Clone the sheet multiple times
+		workbook.cloneSheet(0);
+		workbook.cloneSheet(0);
+
+		assertNotNull(workbook.getSheet("Test Clone"));
+		assertNotNull(workbook.getSheet("Test Clone(1)"));
+		assertNotNull(workbook.getSheet("Test Clone(2)"));  
+	}
+
+	/**
+	 * Setting landscape and portrait stuff on new sheets
+	 */
+	public void testPrintSetupLandscapeNew() throws Exception {
+		HSSFWorkbook workbook = new HSSFWorkbook();
+		HSSFSheet sheetL = workbook.createSheet("LandscapeS");
+		HSSFSheet sheetP = workbook.createSheet("LandscapeP");
+
+		// Check two aspects of the print setup
+		assertFalse(sheetL.getPrintSetup().getLandscape());
+		assertFalse(sheetP.getPrintSetup().getLandscape());
+		assertEquals(0, sheetL.getPrintSetup().getCopies());
+		assertEquals(0, sheetP.getPrintSetup().getCopies());
+
+		// Change one on each
+		sheetL.getPrintSetup().setLandscape(true);
+		sheetP.getPrintSetup().setCopies((short)3);
+
+		// Check taken
+		assertTrue(sheetL.getPrintSetup().getLandscape());
+		assertFalse(sheetP.getPrintSetup().getLandscape());
+		assertEquals(0, sheetL.getPrintSetup().getCopies());
+		assertEquals(3, sheetP.getPrintSetup().getCopies());
+
+		// Save and re-load, and check still there
+		ByteArrayOutputStream baos = new ByteArrayOutputStream();
+		workbook.write(baos);
+		workbook = new HSSFWorkbook(new ByteArrayInputStream(baos.toByteArray()));
+
+		assertTrue(sheetL.getPrintSetup().getLandscape());
+		assertFalse(sheetP.getPrintSetup().getLandscape());
+		assertEquals(0, sheetL.getPrintSetup().getCopies());
+		assertEquals(3, sheetP.getPrintSetup().getCopies());
+	}
+
+	/**
+	 * Setting landscape and portrait stuff on existing sheets
+	 */
+	public void testPrintSetupLandscapeExisting() throws Exception {
+		HSSFWorkbook workbook = openSample("SimpleWithPageBreaks.xls");
+
+		assertEquals(3, workbook.getNumberOfSheets());
+
+		HSSFSheet sheetL = workbook.getSheetAt(0);
+		HSSFSheet sheetPM = workbook.getSheetAt(1);
+		HSSFSheet sheetLS = workbook.getSheetAt(2);
+
+		// Check two aspects of the print setup
+		assertFalse(sheetL.getPrintSetup().getLandscape());
+		assertTrue(sheetPM.getPrintSetup().getLandscape());
+		assertTrue(sheetLS.getPrintSetup().getLandscape());
+		assertEquals(1, sheetL.getPrintSetup().getCopies());
+		assertEquals(1, sheetPM.getPrintSetup().getCopies());
+		assertEquals(1, sheetLS.getPrintSetup().getCopies());
+
+		// Change one on each
+		sheetL.getPrintSetup().setLandscape(true);
+		sheetPM.getPrintSetup().setLandscape(false);
+		sheetPM.getPrintSetup().setCopies((short)3);
+
+		// Check taken
+		assertTrue(sheetL.getPrintSetup().getLandscape());
+		assertFalse(sheetPM.getPrintSetup().getLandscape());
+		assertTrue(sheetLS.getPrintSetup().getLandscape());
+		assertEquals(1, sheetL.getPrintSetup().getCopies());
+		assertEquals(3, sheetPM.getPrintSetup().getCopies());
+		assertEquals(1, sheetLS.getPrintSetup().getCopies());
+
+		// Save and re-load, and check still there
+		ByteArrayOutputStream baos = new ByteArrayOutputStream();
+		workbook.write(baos);
+		workbook = new HSSFWorkbook(new ByteArrayInputStream(baos.toByteArray()));
+
+		assertTrue(sheetL.getPrintSetup().getLandscape());
+		assertFalse(sheetPM.getPrintSetup().getLandscape());
+		assertTrue(sheetLS.getPrintSetup().getLandscape());
+		assertEquals(1, sheetL.getPrintSetup().getCopies());
+		assertEquals(3, sheetPM.getPrintSetup().getCopies());
+		assertEquals(1, sheetLS.getPrintSetup().getCopies());
+	}
+
+	public void testGroupRows() throws Exception {
+		HSSFWorkbook workbook = new HSSFWorkbook();
+		HSSFSheet s = workbook.createSheet();
+		HSSFRow r1 = s.createRow(0);
+		HSSFRow r2 = s.createRow(1);
+		HSSFRow r3 = s.createRow(2);
+		HSSFRow r4 = s.createRow(3);
+		HSSFRow r5 = s.createRow(4);
+
+		assertEquals(0, r1.getOutlineLevel());
+		assertEquals(0, r2.getOutlineLevel());
+		assertEquals(0, r3.getOutlineLevel());
+		assertEquals(0, r4.getOutlineLevel());
+		assertEquals(0, r5.getOutlineLevel());
+
+		s.groupRow(2,3);
+
+		assertEquals(0, r1.getOutlineLevel());
+		assertEquals(0, r2.getOutlineLevel());
+		assertEquals(1, r3.getOutlineLevel());
+		assertEquals(1, r4.getOutlineLevel());
+		assertEquals(0, r5.getOutlineLevel());
+
+		// Save and re-open
+		ByteArrayOutputStream baos = new ByteArrayOutputStream();
+		workbook.write(baos);
+		workbook = new HSSFWorkbook(
+				new ByteArrayInputStream(baos.toByteArray())
+		);
+
+		s = workbook.getSheetAt(0);
+		r1 = s.getRow(0);
+		r2 = s.getRow(1);
+		r3 = s.getRow(2);
+		r4 = s.getRow(3);
+		r5 = s.getRow(4);
+
+		assertEquals(0, r1.getOutlineLevel());
+		assertEquals(0, r2.getOutlineLevel());
+		assertEquals(1, r3.getOutlineLevel());
+		assertEquals(1, r4.getOutlineLevel());
+		assertEquals(0, r5.getOutlineLevel());
+	}
+
+	public void testGroupRowsExisting() throws Exception {
+		HSSFWorkbook workbook = openSample("NoGutsRecords.xls");
+
+		HSSFSheet s = workbook.getSheetAt(0);
+		HSSFRow r1 = s.getRow(0);
+		HSSFRow r2 = s.getRow(1);
+		HSSFRow r3 = s.getRow(2);
+		HSSFRow r4 = s.getRow(3);
+		HSSFRow r5 = s.getRow(4);
+		HSSFRow r6 = s.getRow(5);
+
+		assertEquals(0, r1.getOutlineLevel());
+		assertEquals(0, r2.getOutlineLevel());
+		assertEquals(0, r3.getOutlineLevel());
+		assertEquals(0, r4.getOutlineLevel());
+		assertEquals(0, r5.getOutlineLevel());
+		assertEquals(0, r6.getOutlineLevel());
+
+		// This used to complain about lacking guts records
+		s.groupRow(2, 4);
+
+		assertEquals(0, r1.getOutlineLevel());
+		assertEquals(0, r2.getOutlineLevel());
+		assertEquals(1, r3.getOutlineLevel());
+		assertEquals(1, r4.getOutlineLevel());
+		assertEquals(1, r5.getOutlineLevel());
+		assertEquals(0, r6.getOutlineLevel());
+
+		// Save and re-open
+		ByteArrayOutputStream baos = new ByteArrayOutputStream();
+		workbook.write(baos);
+		workbook = new HSSFWorkbook(
+				new ByteArrayInputStream(baos.toByteArray())
+		);
+
+		s = workbook.getSheetAt(0);
+		r1 = s.getRow(0);
+		r2 = s.getRow(1);
+		r3 = s.getRow(2);
+		r4 = s.getRow(3);
+		r5 = s.getRow(4);
+		r6 = s.getRow(5);
+
+		assertEquals(0, r1.getOutlineLevel());
+		assertEquals(0, r2.getOutlineLevel());
+		assertEquals(1, r3.getOutlineLevel());
+		assertEquals(1, r4.getOutlineLevel());
+		assertEquals(1, r5.getOutlineLevel());
+		assertEquals(0, r6.getOutlineLevel());
+	}
+
+	public void testGetDrawings() throws Exception {
+		HSSFWorkbook wb1c = openSample("WithChart.xls");
+		HSSFWorkbook wb2c = openSample("WithTwoCharts.xls");
+
+		// 1 chart sheet -> data on 1st, chart on 2nd
+		assertNotNull(wb1c.getSheetAt(0).getDrawingPatriarch());
+		assertNotNull(wb1c.getSheetAt(1).getDrawingPatriarch());
+		assertFalse(wb1c.getSheetAt(0).getDrawingPatriarch().containsChart());
+		assertTrue(wb1c.getSheetAt(1).getDrawingPatriarch().containsChart());
+
+		// 2 chart sheet -> data on 1st, chart on 2nd+3rd
+		assertNotNull(wb2c.getSheetAt(0).getDrawingPatriarch());
+		assertNotNull(wb2c.getSheetAt(1).getDrawingPatriarch());
+		assertNotNull(wb2c.getSheetAt(2).getDrawingPatriarch());
+		assertFalse(wb2c.getSheetAt(0).getDrawingPatriarch().containsChart());
+		assertTrue(wb2c.getSheetAt(1).getDrawingPatriarch().containsChart());
+		assertTrue(wb2c.getSheetAt(2).getDrawingPatriarch().containsChart());
+	}
+
 	/**
 	 * Test that the ProtectRecord is included when creating or cloning a sheet
 	 */
@@ -443,7 +427,7 @@
 		HSSFSheet hssfSheet = workbook.createSheet();
 		Sheet sheet = hssfSheet.getSheet();
 		ProtectRecord protect = sheet.getProtect();
-   	
+   
 		assertFalse(protect.getProtect());
 
 		// This will tell us that cloneSheet, and by extension,
@@ -455,61 +439,61 @@
 		assertTrue(hssfSheet.getProtect());
 	}
 
-    public void testProtectSheet() {
-        short expected = (short)0xfef1;
+	public void testProtectSheet() {
+		short expected = (short)0xfef1;
 	HSSFWorkbook wb = new HSSFWorkbook();
-        HSSFSheet s = wb.createSheet();
-        s.protectSheet("abcdefghij");
-        Sheet sheet = s.getSheet();
+		HSSFSheet s = wb.createSheet();
+		s.protectSheet("abcdefghij");
+		Sheet sheet = s.getSheet();
 	ProtectRecord protect = sheet.getProtect();
 	PasswordRecord pass = sheet.getPassword();
-        assertTrue("protection should be on",protect.getProtect());
-        assertTrue("object protection should be on",sheet.isProtected()[1]);
-        assertTrue("scenario protection should be on",sheet.isProtected()[2]);
-        assertEquals("well known value for top secret hash should be "+Integer.toHexString(expected).substring(4),expected,pass.getPassword());
-    }
-
-
-    public void testZoom()
-            throws Exception
-    {
-        HSSFWorkbook wb = new HSSFWorkbook();
-        HSSFSheet sheet = wb.createSheet();
-        assertEquals(-1, sheet.getSheet().findFirstRecordLocBySid(SCLRecord.sid));
-        sheet.setZoom(3,4);
-        assertTrue(sheet.getSheet().findFirstRecordLocBySid(SCLRecord.sid) > 0);
-        SCLRecord sclRecord = (SCLRecord) sheet.getSheet().findFirstRecordBySid(SCLRecord.sid);
-        assertEquals(3, sclRecord.getNumerator());
-        assertEquals(4, sclRecord.getDenominator());
-
-        int sclLoc = sheet.getSheet().findFirstRecordLocBySid(SCLRecord.sid);
-        int window2Loc = sheet.getSheet().findFirstRecordLocBySid(WindowTwoRecord.sid);
-        assertTrue(sclLoc == window2Loc + 1);
+		assertTrue("protection should be on",protect.getProtect());
+		assertTrue("object protection should be on",sheet.isProtected()[1]);
+		assertTrue("scenario protection should be on",sheet.isProtected()[2]);
+		assertEquals("well known value for top secret hash should be "+Integer.toHexString(expected).substring(4),expected,pass.getPassword());
+	}
+
+
+	public void testZoom()
+			throws Exception
+	{
+		HSSFWorkbook wb = new HSSFWorkbook();
+		HSSFSheet sheet = wb.createSheet();
+		assertEquals(-1, sheet.getSheet().findFirstRecordLocBySid(SCLRecord.sid));
+		sheet.setZoom(3,4);
+		assertTrue(sheet.getSheet().findFirstRecordLocBySid(SCLRecord.sid) > 0);
+		SCLRecord sclRecord = (SCLRecord) sheet.getSheet().findFirstRecordBySid(SCLRecord.sid);
+		assertEquals(3, sclRecord.getNumerator());
+		assertEquals(4, sclRecord.getDenominator());
+
+		int sclLoc = sheet.getSheet().findFirstRecordLocBySid(SCLRecord.sid);
+		int window2Loc = sheet.getSheet().findFirstRecordLocBySid(WindowTwoRecord.sid);
+		assertTrue(sclLoc == window2Loc + 1);
+
+	}
 
-    }
-    
 
 	/**
 	 * When removing one merged region, it would break
 	 *
-	 */    
+	 */
 	public void testRemoveMerged() {
 		HSSFWorkbook wb = new HSSFWorkbook();
 		HSSFSheet sheet = wb.createSheet();
-		Region region = new Region(0, (short)0, 1, (short)1);   	
+		Region region = new Region(0, (short)0, 1, (short)1);   
 		sheet.addMergedRegion(region);
 		region = new Region(1, (short)0, 2, (short)1);
 		sheet.addMergedRegion(region);
-		
-    	sheet.removeMergedRegion(0);
-    	
-    	region = sheet.getMergedRegionAt(0);
-    	assertEquals("Left over region should be starting at row 1", 1, region.getRowFrom());
-    	
-    	sheet.removeMergedRegion(0);
-    	
+
+		sheet.removeMergedRegion(0);
+
+		region = sheet.getMergedRegionAt(0);
+		assertEquals("Left over region should be starting at row 1", 1, region.getRowFrom());
+
+		sheet.removeMergedRegion(0);
+
 		assertEquals("there should be no merged regions left!", 0, sheet.getNumMergedRegions());
-		
+
 		//an, add, remove, get(0) would null pointer
 		sheet.addMergedRegion(region);
 		assertEquals("there should now be one merged region!", 1, sheet.getNumMergedRegions());
@@ -517,16 +501,16 @@
 		assertEquals("there should now be zero merged regions!", 0, sheet.getNumMergedRegions());
 		//add it again!
 		region.setRowTo(4);
-    	
+
 		sheet.addMergedRegion(region);
 		assertEquals("there should now be one merged region!", 1, sheet.getNumMergedRegions());
-		
+
 		//should exist now!
 		assertTrue("there isn't more than one merged region in there", 1 <= sheet.getNumMergedRegions());
 		region = sheet.getMergedRegionAt(0);
 		assertEquals("the merged row to doesnt match the one we put in ", 4, region.getRowTo());
-    	
-    }
+
+	}
 
 	public void testShiftMerged() {
 		HSSFWorkbook wb = new HSSFWorkbook();
@@ -534,156 +518,132 @@
 		HSSFRow row = sheet.createRow(0);
 		HSSFCell cell = row.createCell((short)0);
 		cell.setCellValue("first row, first cell");
-		
+
 		row = sheet.createRow(1);
 		cell = row.createCell((short)1);
 		cell.setCellValue("second row, second cell");
-		
-		Region region = new Region(1, (short)0, 1, (short)1);   	
+
+		Region region = new Region(1, (short)0, 1, (short)1);   
 		sheet.addMergedRegion(region);
-		
+
 		sheet.shiftRows(1, 1, 1);
-		
+
 		region = sheet.getMergedRegionAt(0);
 		assertEquals("Merged region not moved over to row 2", 2, region.getRowFrom());
-		
+
 	}
 
-    /**
-     * Tests the display of gridlines, formulas, and rowcolheadings.
-     * @author Shawn Laubach (slaubach at apache dot org)
-     */
-    public void testDisplayOptions() throws Exception {
-    	HSSFWorkbook wb = new HSSFWorkbook();
-    	HSSFSheet sheet = wb.createSheet();
-	
-        File tempFile = TempFile.createTempFile("display", "test.xls");
-        FileOutputStream stream = new FileOutputStream(tempFile);
-        wb.write(stream);
-        stream.close();
-
-        FileInputStream readStream = new FileInputStream(tempFile);
-        wb = new HSSFWorkbook(readStream);
-        sheet = wb.getSheetAt(0);
-    	readStream.close();
-    
-    	assertEquals(sheet.isDisplayGridlines(), true);
-    	assertEquals(sheet.isDisplayRowColHeadings(), true);
-    	assertEquals(sheet.isDisplayFormulas(), false);
-    
-    	sheet.setDisplayGridlines(false);
-    	sheet.setDisplayRowColHeadings(false);
-    	sheet.setDisplayFormulas(true);
-
-        tempFile = TempFile.createTempFile("display", "test.xls");
-        stream = new FileOutputStream(tempFile);
-        wb.write(stream);
-        stream.close();
-
-        readStream = new FileInputStream(tempFile);
-        wb = new HSSFWorkbook(readStream);
-        sheet = wb.getSheetAt(0);
-    	readStream.close();
-    
-    
-    	assertEquals(sheet.isDisplayGridlines(), false);
-    	assertEquals(sheet.isDisplayRowColHeadings(), false);
-    	assertEquals(sheet.isDisplayFormulas(), true);
-    }
-
-    
-    /**
-     * Make sure the excel file loads work
-     *
-     */
-    public void testPageBreakFiles() throws Exception{
-        FileInputStream fis = null;
-        HSSFWorkbook wb     = null;
-        
-        String filename = System.getProperty("HSSF.testdata.path");
-
-        filename = filename + "/SimpleWithPageBreaks.xls";
-        fis = new FileInputStream(filename);
-        wb = new HSSFWorkbook(fis);
-        fis.close();
-        
-        HSSFSheet sheet = wb.getSheetAt(0);
-        assertNotNull(sheet);
-        
-        assertEquals("1 row page break", 1, sheet.getRowBreaks().length);
-        assertEquals("1 column page break", 1, sheet.getColumnBreaks().length);
-
-        assertTrue("No row page break", sheet.isRowBroken(22));
-        assertTrue("No column page break", sheet.isColumnBroken((short)4));
-        
-        sheet.setRowBreak(10);        
-        sheet.setColumnBreak((short)13);
-
-        assertEquals("row breaks number", 2, sheet.getRowBreaks().length);
-        assertEquals("column breaks number", 2, sheet.getColumnBreaks().length);
-        
-        File tempFile = TempFile.createTempFile("display", "testPagebreaks.xls");
-        FileOutputStream stream = new FileOutputStream(tempFile);
-        wb.write(stream);
-        stream.close();
-        
-        wb = new HSSFWorkbook(new FileInputStream(tempFile));
-        sheet = wb.getSheetAt(0);
-
-        assertTrue("No row page break", sheet.isRowBroken(22));
-        assertTrue("No column page break", sheet.isColumnBroken((short)4));
-
-        
-        assertEquals("row breaks number", 2, sheet.getRowBreaks().length);
-        assertEquals("column breaks number", 2, sheet.getColumnBreaks().length);
-        
-        
-    }
-    
-    public void testDBCSName () throws Exception {
-    	FileInputStream fis = null;
-        HSSFWorkbook wb     = null;
-        
-        String filename = System.getProperty("HSSF.testdata.path");
-
-        filename = filename + "/DBCSSheetName.xls";
-        fis = new FileInputStream(filename);
-        wb = new HSSFWorkbook(fis);
-        HSSFSheet s= wb.getSheetAt(1);
-        assertEquals ("DBCS Sheet Name 2", wb.getSheetName(1),"\u090f\u0915" );
-        assertEquals("DBCS Sheet Name 1", wb.getSheetName(0),"\u091c\u093e");
-    }
-    
-    /**
-     * Testing newly added method that exposes the WINDOW2.toprow
-     * parameter to allow setting the toprow in the visible view
-     * of the sheet when it is first opened.
-     */
-    public void testTopRow() throws Exception
-    {
-        FileInputStream fis = null;
-        HSSFWorkbook wb     = null;
-        
-        String filename = System.getProperty("HSSF.testdata.path");
-
-        filename = filename + "/SimpleWithPageBreaks.xls";
-        fis = new FileInputStream(filename);
-        wb = new HSSFWorkbook(fis);
-        fis.close();
-        
-        HSSFSheet sheet = wb.getSheetAt(0);
-        assertNotNull(sheet);
-        
-        short toprow = (short) 100;
-        short leftcol = (short) 50;
-        sheet.showInPane(toprow,leftcol);
-        assertEquals("HSSFSheet.getTopRow()", toprow, sheet.getTopRow());
-        assertEquals("HSSFSheet.getLeftCol()", leftcol, sheet.getLeftCol());
-    }
-    
-    /** cell with formula becomes null on cloning a sheet*/
+	/**
+	 * Tests the display of gridlines, formulas, and rowcolheadings.
+	 * @author Shawn Laubach (slaubach at apache dot org)
+	 */
+	public void testDisplayOptions() throws Exception {
+		HSSFWorkbook wb = new HSSFWorkbook();
+		HSSFSheet sheet = wb.createSheet();
+
+		File tempFile = TempFile.createTempFile("display", "test.xls");
+		FileOutputStream stream = new FileOutputStream(tempFile);
+		wb.write(stream);
+		stream.close();
+
+		FileInputStream readStream = new FileInputStream(tempFile);
+		wb = new HSSFWorkbook(readStream);
+		sheet = wb.getSheetAt(0);
+		readStream.close();
+
+		assertEquals(sheet.isDisplayGridlines(), true);
+		assertEquals(sheet.isDisplayRowColHeadings(), true);
+		assertEquals(sheet.isDisplayFormulas(), false);
+
+		sheet.setDisplayGridlines(false);
+		sheet.setDisplayRowColHeadings(false);
+		sheet.setDisplayFormulas(true);
+
+		tempFile = TempFile.createTempFile("display", "test.xls");
+		stream = new FileOutputStream(tempFile);
+		wb.write(stream);
+		stream.close();
+
+		readStream = new FileInputStream(tempFile);
+		wb = new HSSFWorkbook(readStream);
+		sheet = wb.getSheetAt(0);
+		readStream.close();
+
+
+		assertEquals(sheet.isDisplayGridlines(), false);
+		assertEquals(sheet.isDisplayRowColHeadings(), false);
+		assertEquals(sheet.isDisplayFormulas(), true);
+	}
+
+
+	/**
+	 * Make sure the excel file loads work
+	 *
+	 */
+	public void testPageBreakFiles() throws Exception{
+		HSSFWorkbook wb = openSample("SimpleWithPageBreaks.xls");
+
+		HSSFSheet sheet = wb.getSheetAt(0);
+		assertNotNull(sheet);
+
+		assertEquals("1 row page break", 1, sheet.getRowBreaks().length);
+		assertEquals("1 column page break", 1, sheet.getColumnBreaks().length);
+
+		assertTrue("No row page break", sheet.isRowBroken(22));
+		assertTrue("No column page break", sheet.isColumnBroken((short)4));
+
+		sheet.setRowBreak(10);
+		sheet.setColumnBreak((short)13);
+
+		assertEquals("row breaks number", 2, sheet.getRowBreaks().length);
+		assertEquals("column breaks number", 2, sheet.getColumnBreaks().length);
+
+		File tempFile = TempFile.createTempFile("display", "testPagebreaks.xls");
+		FileOutputStream stream = new FileOutputStream(tempFile);
+		wb.write(stream);
+		stream.close();
+
+		wb = new HSSFWorkbook(new FileInputStream(tempFile));
+		sheet = wb.getSheetAt(0);
+
+		assertTrue("No row page break", sheet.isRowBroken(22));
+		assertTrue("No column page break", sheet.isColumnBroken((short)4));
+
+
+		assertEquals("row breaks number", 2, sheet.getRowBreaks().length);
+		assertEquals("column breaks number", 2, sheet.getColumnBreaks().length);
+
+
+	}
+
+	public void testDBCSName () throws Exception {
+		HSSFWorkbook wb = openSample("DBCSSheetName.xls");
+		HSSFSheet s= wb.getSheetAt(1);
+		assertEquals ("DBCS Sheet Name 2", wb.getSheetName(1),"\u090f\u0915" );
+		assertEquals("DBCS Sheet Name 1", wb.getSheetName(0),"\u091c\u093e");
+	}
+
+	/**
+	 * Testing newly added method that exposes the WINDOW2.toprow
+	 * parameter to allow setting the toprow in the visible view
+	 * of the sheet when it is first opened.
+	 */
+	public void testTopRow() {
+		HSSFWorkbook wb = openSample("SimpleWithPageBreaks.xls");
+
+		HSSFSheet sheet = wb.getSheetAt(0);
+		assertNotNull(sheet);
+
+		short toprow = (short) 100;
+		short leftcol = (short) 50;
+		sheet.showInPane(toprow,leftcol);
+		assertEquals("HSSFSheet.getTopRow()", toprow, sheet.getTopRow());
+		assertEquals("HSSFSheet.getLeftCol()", leftcol, sheet.getLeftCol());
+	}
+
+	/** cell with formula becomes null on cloning a sheet*/
 	 public void test35084() {
-   	
+   
    	HSSFWorkbook wb = new HSSFWorkbook();
    	HSSFSheet s =wb.createSheet("Sheet1");
    	HSSFRow r = s.createRow(0);
@@ -696,8 +656,8 @@
    	assertEquals("formula", r.getCell((short)1).getCellFormula(), "A1*2");
    }
 
-    /** test that new default column styles get applied */
-    public void testDefaultColumnStyle() {
+	/** test that new default column styles get applied */
+	public void testDefaultColumnStyle() {
 	HSSFWorkbook wb = new HSSFWorkbook();
 	HSSFCellStyle style = wb.createCellStyle();
 	HSSFSheet s = wb.createSheet();
@@ -705,53 +665,42 @@
 	HSSFRow r = s.createRow(0);
 	HSSFCell c = r.createCell((short)0);
 	assertEquals("style should match", style.getIndex(), c.getCellStyle().getIndex());
-    }
+	}
 
 
-    /**
-     *
-     */
-    public void testAddEmptyRow() throws Exception {
-        //try to add 5 empty rows to a new sheet
-        HSSFWorkbook workbook = new HSSFWorkbook();
-        HSSFSheet sheet = workbook.createSheet();
-        for (int i = 0; i < 5; i++) sheet.createRow(i);
-
-        ByteArrayOutputStream out = new ByteArrayOutputStream();
-        workbook.write(out);
-        out.close();
-
-        workbook = new HSSFWorkbook(new ByteArrayInputStream(out.toByteArray()));
-        assertTrue("No Exceptions while reading file", true);
-
-        //try adding empty rows in an existing worksheet
-        String cwd = System.getProperty("HSSF.testdata.path");
-        FileInputStream in = new FileInputStream(new File(cwd, "Simple.xls"));
-        workbook = new HSSFWorkbook(in);
-        in.close();
-        assertTrue("No Exceptions while reading file", true);
-
-        sheet = workbook.getSheetAt(0);
-        for (int i = 3; i < 10; i++) sheet.createRow(i);
-
-        out = new ByteArrayOutputStream();
-        workbook.write(out);
-        out.close();
-
-        workbook = new HSSFWorkbook(new ByteArrayInputStream(out.toByteArray()));
-        assertTrue("No Exceptions while reading file", true);
-
-    }
-    
-    public void testAutoSizeColumn() throws Exception {
-		String filename = System.getProperty("HSSF.testdata.path");
-		filename = filename + "/43902.xls";
+	/**
+	 *
+	 */
+	public void testAddEmptyRow() throws Exception {
+		//try to add 5 empty rows to a new sheet
+		HSSFWorkbook workbook = new HSSFWorkbook();
+		HSSFSheet sheet = workbook.createSheet();
+		for (int i = 0; i < 5; i++) sheet.createRow(i);
+
+		ByteArrayOutputStream out = new ByteArrayOutputStream();
+		workbook.write(out);
+		out.close();
+
+		workbook = new HSSFWorkbook(new ByteArrayInputStream(out.toByteArray()));
+
+		//try adding empty rows in an existing worksheet
+		workbook = openSample("Simple.xls");
+
+		sheet = workbook.getSheetAt(0);
+		for (int i = 3; i < 10; i++) sheet.createRow(i);
+
+		out = new ByteArrayOutputStream();
+		workbook.write(out);
+		out.close();
+
+		workbook = new HSSFWorkbook(new ByteArrayInputStream(out.toByteArray()));
+	}
+
+	public void testAutoSizeColumn() throws Exception {
+		HSSFWorkbook wb = openSample("43902.xls");
 		String sheetName = "my sheet";
-		FileInputStream is = new FileInputStream(filename);
-		POIFSFileSystem fs = new POIFSFileSystem(is);
-		HSSFWorkbook wb = new HSSFWorkbook(fs);
 		HSSFSheet sheet = wb.getSheet(sheetName);
-		
+
 		// Can't use literal numbers for column sizes, as
 		//  will come out with different values on different
 		//  machines based on the fonts available.
@@ -761,27 +710,27 @@
 		int maxWithRow1And2 = 7800;
 		int minWithRow1Only = 2750;
 		int maxWithRow1Only = 3300;
-		
+
 		// autoSize the first column and check its size before the merged region (1,0,1,1) is set:
 		// it has to be based on the 2nd row width
 		sheet.autoSizeColumn((short)0);
 		assertTrue("Column autosized with only one row: wrong width", sheet.getColumnWidth((short)0) >= minWithRow1And2);
 		assertTrue("Column autosized with only one row: wrong width", sheet.getColumnWidth((short)0) <= maxWithRow1And2);
-		
+
 		//create a region over the 2nd row and auto size the first column
 		sheet.addMergedRegion(new Region(1,(short)0,1,(short)1));
 		sheet.autoSizeColumn((short)0);
 		ByteArrayOutputStream out = new ByteArrayOutputStream();
 		wb.write(out);
 		out.close();
-		
+
 		// check that the autoSized column width has ignored the 2nd row 
 		// because it is included in a merged region (Excel like behavior)
 		HSSFWorkbook wb2 = new HSSFWorkbook(new ByteArrayInputStream(out.toByteArray()));
 		HSSFSheet sheet2 = wb2.getSheet(sheetName);
 		assertTrue(sheet2.getColumnWidth((short)0) >= minWithRow1Only);
 		assertTrue(sheet2.getColumnWidth((short)0) <= maxWithRow1Only);
-		
+
 		// remove the 2nd row merged region and check that the 2nd row value is used to the autoSizeColumn width
 		sheet2.removeMergedRegion(1);
 		sheet2.autoSizeColumn((short)0);
@@ -792,143 +741,140 @@
 		HSSFSheet sheet3 = wb3.getSheet(sheetName);
 		assertTrue(sheet3.getColumnWidth((short)0) >= minWithRow1And2);
 		assertTrue(sheet3.getColumnWidth((short)0) <= maxWithRow1And2);
-    }
+	}
 
-    /**
-     * Setting ForceFormulaRecalculation on sheets
-     */
-    public void testForceRecalculation() throws Exception {
-        String filename = System.getProperty("HSSF.testdata.path");
-        filename = filename + "/UncalcedRecord.xls";
-        HSSFWorkbook workbook = new HSSFWorkbook(new FileInputStream(filename));
-        
-        HSSFSheet sheet = workbook.getSheetAt(0);
-        HSSFSheet sheet2 = workbook.getSheetAt(0);
-        HSSFRow row = sheet.getRow(0);
-        row.createCell((short) 0).setCellValue(5);
-        row.createCell((short) 1).setCellValue(8);
+	/**
+	 * Setting ForceFormulaRecalculation on sheets
+	 */
+	public void testForceRecalculation() throws Exception {
+		HSSFWorkbook workbook = openSample("UncalcedRecord.xls");
+
+		HSSFSheet sheet = workbook.getSheetAt(0);
+		HSSFSheet sheet2 = workbook.getSheetAt(0);
+		HSSFRow row = sheet.getRow(0);
+		row.createCell((short) 0).setCellValue(5);
+		row.createCell((short) 1).setCellValue(8);
 		assertFalse(sheet.getForceFormulaRecalculation());
 		assertFalse(sheet2.getForceFormulaRecalculation());
 
-        // Save and manually verify that on column C we have 0, value in template
-        File tempFile = new File(System.getProperty("java.io.tmpdir")+"/uncalced_err.xls" );
-        tempFile.delete();
-        FileOutputStream fout = new FileOutputStream( tempFile );
-        workbook.write( fout );
-        fout.close();
-        sheet.setForceFormulaRecalculation(true);
+		// Save and manually verify that on column C we have 0, value in template
+		File tempFile = new File(System.getProperty("java.io.tmpdir")+"/uncalced_err.xls" );
+		tempFile.delete();
+		FileOutputStream fout = new FileOutputStream( tempFile );
+		workbook.write( fout );
+		fout.close();
+		sheet.setForceFormulaRecalculation(true);
 		assertTrue(sheet.getForceFormulaRecalculation());
 
-        // Save and manually verify that on column C we have now 13, calculated value
-        tempFile = new File(System.getProperty("java.io.tmpdir")+"/uncalced_succ.xls" );
-        tempFile.delete();
-        fout = new FileOutputStream( tempFile );
-        workbook.write( fout );
-        fout.close();
+		// Save and manually verify that on column C we have now 13, calculated value
+		tempFile = new File(System.getProperty("java.io.tmpdir")+"/uncalced_succ.xls" );
+		tempFile.delete();
+		fout = new FileOutputStream( tempFile );
+		workbook.write( fout );
+		fout.close();
 
-        // Try it can be opened
+		// Try it can be opened
 		HSSFWorkbook wb2 = new HSSFWorkbook(new FileInputStream(tempFile));
-		
+
 		// And check correct sheet settings found
 		sheet = wb2.getSheetAt(0);
 		sheet2 = wb2.getSheetAt(1);
 		assertTrue(sheet.getForceFormulaRecalculation());
 		assertFalse(sheet2.getForceFormulaRecalculation());
-		
+
 		// Now turn if back off again
 		sheet.setForceFormulaRecalculation(false);
-		
-        fout = new FileOutputStream( tempFile );
-        wb2.write( fout );
-        fout.close();
-        wb2 = new HSSFWorkbook(new FileInputStream(tempFile));
-        
+
+		fout = new FileOutputStream( tempFile );
+		wb2.write( fout );
+		fout.close();
+		wb2 = new HSSFWorkbook(new FileInputStream(tempFile));
+
 		assertFalse(wb2.getSheetAt(0).getForceFormulaRecalculation());
 		assertFalse(wb2.getSheetAt(1).getForceFormulaRecalculation());
 		assertFalse(wb2.getSheetAt(2).getForceFormulaRecalculation());
-		
+
 		// Now add a new sheet, and check things work
 		//  with old ones unset, new one set
 		HSSFSheet s4 = wb2.createSheet();
 		s4.setForceFormulaRecalculation(true);
-		
+
 		assertFalse(sheet.getForceFormulaRecalculation());
 		assertFalse(sheet2.getForceFormulaRecalculation());
 		assertTrue(s4.getForceFormulaRecalculation());
-		
-        fout = new FileOutputStream( tempFile );
-        wb2.write( fout );
-        fout.close();
-        
+
+		fout = new FileOutputStream( tempFile );
+		wb2.write( fout );
+		fout.close();
+
 		HSSFWorkbook wb3 = new HSSFWorkbook(new FileInputStream(tempFile));
 		assertFalse(wb3.getSheetAt(0).getForceFormulaRecalculation());
 		assertFalse(wb3.getSheetAt(1).getForceFormulaRecalculation());
 		assertFalse(wb3.getSheetAt(2).getForceFormulaRecalculation());
 		assertTrue(wb3.getSheetAt(3).getForceFormulaRecalculation());
-    }
+	}
 
-    
-    public static void main(java.lang.String[] args) {
+
+	public static void main(java.lang.String[] args) {
 		 junit.textui.TestRunner.run(TestHSSFSheet.class);
 	}
 
-    public void testColumnWidth() throws Exception {
-        //check we can correctly read column widths from a reference workbook
-        String filename = System.getProperty("HSSF.testdata.path") + "/colwidth.xls";
-        HSSFWorkbook wb = new HSSFWorkbook(new FileInputStream(filename));
-
-        //reference values
-        int[] ref = {365, 548, 731, 914, 1097, 1280, 1462, 1645, 1828, 2011, 2194, 2377, 2560, 2742, 2925, 3108, 3291, 3474, 3657};
-
-        HSSFSheet sh = wb.getSheetAt(0);
-        for (char i = 'A'; i <= 'S'; i++) {
-            int idx = i - 'A';
-            int w = sh.getColumnWidth((short)idx);
-            assertEquals(ref[idx], w);
-        }
-
-        //the second sheet doesn't have overridden column widths
-        sh = wb.getSheetAt(1);
-        int def_width = sh.getDefaultColumnWidth();
-        for (char i = 'A'; i <= 'S'; i++) {
-            int idx = i - 'A';
-            int w = sh.getColumnWidth((short)idx);
-            //getDefaultColumnWidth returns width measued in characters
-            //getColumnWidth returns width measued in 1/256th units
-            assertEquals(def_width*256, w);
-        }
-
-        //test new workbook
-        wb = new HSSFWorkbook();
-        sh = wb.createSheet();
-        sh.setDefaultColumnWidth((short)10);
-        assertEquals(10, sh.getDefaultColumnWidth());
-        assertEquals(256*10, sh.getColumnWidth((short)0));
-        assertEquals(256*10, sh.getColumnWidth((short)1));
-        assertEquals(256*10, sh.getColumnWidth((short)2));
-        for (char i = 'D'; i <= 'F'; i++) {
-            short w = (short)(256*12);
-            sh.setColumnWidth((short)i, w);
-            assertEquals(w, sh.getColumnWidth((short)i));
-        }
-
-        //serialize and read again
-        ByteArrayOutputStream out = new ByteArrayOutputStream();
-        wb.write(out);
-        out.close();
-
-        wb = new HSSFWorkbook(new ByteArrayInputStream(out.toByteArray()));
-        sh = wb.getSheetAt(0);
-        assertEquals(10, sh.getDefaultColumnWidth());
-        //columns A-C have default width
-        assertEquals(256*10, sh.getColumnWidth((short)0));
-        assertEquals(256*10, sh.getColumnWidth((short)1));
-        assertEquals(256*10, sh.getColumnWidth((short)2));
-        //columns D-F have custom wodth
-        for (char i = 'D'; i <= 'F'; i++) {
-            short w = (short)(256*12);
-            assertEquals(w, sh.getColumnWidth((short)i));
-        }
+	public void testColumnWidth() throws Exception {
+		//check we can correctly read column widths from a reference workbook
+		HSSFWorkbook wb = openSample("colwidth.xls");
+
+		//reference values
+		int[] ref = {365, 548, 731, 914, 1097, 1280, 1462, 1645, 1828, 2011, 2194, 2377, 2560, 2742, 2925, 3108, 3291, 3474, 3657};
+
+		HSSFSheet sh = wb.getSheetAt(0);
+		for (char i = 'A'; i <= 'S'; i++) {
+			int idx = i - 'A';
+			int w = sh.getColumnWidth((short)idx);
+			assertEquals(ref[idx], w);
+		}
+
+		//the second sheet doesn't have overridden column widths
+		sh = wb.getSheetAt(1);
+		int def_width = sh.getDefaultColumnWidth();
+		for (char i = 'A'; i <= 'S'; i++) {
+			int idx = i - 'A';
+			int w = sh.getColumnWidth((short)idx);
+			//getDefaultColumnWidth returns width measued in characters
+			//getColumnWidth returns width measued in 1/256th units
+			assertEquals(def_width*256, w);
+		}
+
+		//test new workbook
+		wb = new HSSFWorkbook();
+		sh = wb.createSheet();
+		sh.setDefaultColumnWidth((short)10);
+		assertEquals(10, sh.getDefaultColumnWidth());
+		assertEquals(256*10, sh.getColumnWidth((short)0));
+		assertEquals(256*10, sh.getColumnWidth((short)1));
+		assertEquals(256*10, sh.getColumnWidth((short)2));
+		for (char i = 'D'; i <= 'F'; i++) {
+			short w = (short)(256*12);
+			sh.setColumnWidth((short)i, w);
+			assertEquals(w, sh.getColumnWidth((short)i));
+		}
+
+		//serialize and read again
+		ByteArrayOutputStream out = new ByteArrayOutputStream();
+		wb.write(out);
+		out.close();
 
-    }
+		wb = new HSSFWorkbook(new ByteArrayInputStream(out.toByteArray()));
+		sh = wb.getSheetAt(0);
+		assertEquals(10, sh.getDefaultColumnWidth());
+		//columns A-C have default width
+		assertEquals(256*10, sh.getColumnWidth((short)0));
+		assertEquals(256*10, sh.getColumnWidth((short)1));
+		assertEquals(256*10, sh.getColumnWidth((short)2));
+		//columns D-F have custom wodth
+		for (char i = 'D'; i <= 'F'; i++) {
+			short w = (short)(256*12);
+			assertEquals(w, sh.getColumnWidth((short)i));
+		}
+
+	}
 }

Modified: poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFWorkbook.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFWorkbook.java?rev=645348&r1=645347&r2=645348&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFWorkbook.java (original)
+++ poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFWorkbook.java Sun Apr  6 20:02:03 2008
@@ -14,28 +14,22 @@
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
+
 package org.apache.poi.hssf.usermodel;
 
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.File;
-import java.io.FileInputStream;
+import junit.framework.TestCase;
 
-import junit.framework.*;
+import org.apache.poi.hssf.HSSFTestDataSamples;
 import org.apache.poi.hssf.record.NameRecord;
+/**
+ * 
+ */
+public final class TestHSSFWorkbook extends TestCase {
+    private static HSSFWorkbook openSample(String sampleFileName) {
+        return HSSFTestDataSamples.openSampleWorkbook(sampleFileName);
+    }
 
-public class TestHSSFWorkbook extends TestCase
-{
-    HSSFWorkbook hssfWorkbook;
-    String filename;
-
-	protected void setUp() throws Exception {
-		super.setUp();
-        filename = System.getProperty("HSSF.testdata.path");
-	}
-
-	public void testSetRepeatingRowsAndColumns() throws Exception
-    {
+    public void testSetRepeatingRowsAndColumns() {
         // Test bug 29747
         HSSFWorkbook b = new HSSFWorkbook( );
         b.createSheet();
@@ -46,9 +40,7 @@
         assertEquals( 3, nameRecord.getIndexToSheet() );
     }
     
-    public void testDuplicateNames()
-            throws Exception
-    {
+    public void testDuplicateNames() {
         HSSFWorkbook b = new HSSFWorkbook( );
         b.createSheet("Sheet1");
         b.createSheet();
@@ -105,15 +97,15 @@
     public void testSheetSelection() {
         HSSFWorkbook b = new HSSFWorkbook();
         b.createSheet("Sheet One");
-        HSSFSheet s = b.createSheet("Sheet Two");
+        b.createSheet("Sheet Two");
         b.setSelectedTab((short) 1);
         b.setDisplayedTab((short) 1);
         assertEquals(b.getSelectedTab(), 1);
         assertEquals(b.getDisplayedTab(), 1);
     }
     
-    public void testSheetClone() throws Exception {
-    	// First up, try a simple file
+    public void testSheetClone() {
+        // First up, try a simple file
         HSSFWorkbook b = new HSSFWorkbook();
         assertEquals(0, b.getNumberOfSheets());
         b.createSheet("Sheet One");
@@ -122,24 +114,20 @@
         assertEquals(2, b.getNumberOfSheets());
         b.cloneSheet(0);
         assertEquals(3, b.getNumberOfSheets());
-    	
-    	// Now try a problem one with drawing records in it
-        b = new HSSFWorkbook(
-        		new FileInputStream(new File(filename,"SheetWithDrawing.xls"))
-        );
+        
+        // Now try a problem one with drawing records in it
+        b = openSample("SheetWithDrawing.xls");
         assertEquals(1, b.getNumberOfSheets());
         b.cloneSheet(0);
         assertEquals(2, b.getNumberOfSheets());
     }
     
-    public void testReadWriteWithCharts() throws Exception {
+    public void testReadWriteWithCharts() {
         HSSFWorkbook b;
         HSSFSheet s;
         
         // Single chart, two sheets
-        b = new HSSFWorkbook(
-        		new FileInputStream(new File(filename,"44010-SingleChart.xls"))
-        );
+        b = openSample("44010-SingleChart.xls");
         assertEquals(2, b.getNumberOfSheets());
         s = b.getSheetAt(1);
         assertEquals(0, s.getFirstRowNum());
@@ -154,9 +142,7 @@
         // We've now called getDrawingPatriarch() so 
         //  everything will be all screwy
         // So, start again
-        b = new HSSFWorkbook(
-        		new FileInputStream(new File(filename,"44010-SingleChart.xls"))
-        );
+        b = openSample("44010-SingleChart.xls");
         
         b = writeRead(b);
         assertEquals(2, b.getNumberOfSheets());
@@ -166,9 +152,7 @@
 
         
         // Two charts, three sheets
-        b = new HSSFWorkbook(
-        		new FileInputStream(new File(filename,"44010-TwoCharts.xls"))
-        );
+        b = openSample("44010-TwoCharts.xls");
         assertEquals(3, b.getNumberOfSheets());
         
         s = b.getSheetAt(1);
@@ -188,9 +172,7 @@
         // We've now called getDrawingPatriarch() so 
         //  everything will be all screwy
         // So, start again
-        b = new HSSFWorkbook(
-        		new FileInputStream(new File(filename,"44010-TwoCharts.xls"))
-        );
+        b = openSample("44010-TwoCharts.xls");
         
         b = writeRead(b);
         assertEquals(3, b.getNumberOfSheets());
@@ -203,11 +185,7 @@
         assertEquals(0, s.getLastRowNum());
     }
     
-    private HSSFWorkbook writeRead(HSSFWorkbook b) throws Exception {
-    	ByteArrayOutputStream baos = new ByteArrayOutputStream();
-    	b.write(baos);
-    	return new HSSFWorkbook(
-    			new ByteArrayInputStream(baos.toByteArray())
-    	);
+    private static HSSFWorkbook writeRead(HSSFWorkbook b) {
+    	return HSSFTestDataSamples.writeOutAndReadBack(b);
     }
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@poi.apache.org
For additional commands, e-mail: commits-help@poi.apache.org