You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@poi.apache.org by ye...@apache.org on 2009/06/07 17:39:55 UTC

svn commit: r782402 [8/8] - in /poi/tags/REL_3_5_BETA6: ./ src/contrib/src/org/apache/poi/contrib/poibrowser/ src/documentation/ src/documentation/content/xdocs/ src/documentation/content/xdocs/hpsf/ src/documentation/content/xdocs/news/ src/documentat...

Modified: poi/tags/REL_3_5_BETA6/src/testcases/org/apache/poi/hssf/record/aggregates/TestPageSettingsBlock.java
URL: http://svn.apache.org/viewvc/poi/tags/REL_3_5_BETA6/src/testcases/org/apache/poi/hssf/record/aggregates/TestPageSettingsBlock.java?rev=782402&r1=782401&r2=782402&view=diff
==============================================================================
--- poi/tags/REL_3_5_BETA6/src/testcases/org/apache/poi/hssf/record/aggregates/TestPageSettingsBlock.java (original)
+++ poi/tags/REL_3_5_BETA6/src/testcases/org/apache/poi/hssf/record/aggregates/TestPageSettingsBlock.java Sun Jun  7 15:39:51 2009
@@ -26,14 +26,18 @@
 import org.apache.poi.hssf.model.RecordStream;
 import org.apache.poi.hssf.model.Sheet;
 import org.apache.poi.hssf.record.BOFRecord;
+import org.apache.poi.hssf.record.BottomMarginRecord;
 import org.apache.poi.hssf.record.DimensionsRecord;
 import org.apache.poi.hssf.record.EOFRecord;
 import org.apache.poi.hssf.record.FooterRecord;
+import org.apache.poi.hssf.record.HCenterRecord;
 import org.apache.poi.hssf.record.HeaderRecord;
 import org.apache.poi.hssf.record.IndexRecord;
 import org.apache.poi.hssf.record.NumberRecord;
 import org.apache.poi.hssf.record.Record;
+import org.apache.poi.hssf.record.RecordFormatException;
 import org.apache.poi.hssf.record.UnknownRecord;
+import org.apache.poi.hssf.record.VCenterRecord;
 import org.apache.poi.hssf.record.WindowTwoRecord;
 import org.apache.poi.hssf.usermodel.HSSFPrintSetup;
 import org.apache.poi.hssf.usermodel.HSSFSheet;
@@ -135,7 +139,7 @@
 		Sheet sheet = Sheet.createSheet(rs);
 
 		RecordCollector rv = new RecordCollector();
-		sheet.visitContainedRecords(rv, rowIx);
+		sheet.visitContainedRecords(rv, 0);
 		Record[] outRecs = rv.getRecords();
 		if (outRecs[4] == EOFRecord.instance) {
 			throw new AssertionFailedError("Identified bug 46953 - EOF incorrectly appended to PSB");
@@ -151,8 +155,122 @@
 		assertEquals(WindowTwoRecord.class, outRecs[6].getClass());
 		assertEquals(EOFRecord.instance, outRecs[7]);
 	}
+	/**
+	 * Bug 47199 was due to the margin records being located well after the initial PSB records.
+	 * The example file supplied (attachment 23710) had three non-PSB record types 
+	 * between the PRINTSETUP record and first MARGIN record:
+	 * <ul>
+	 * <li>PRINTSETUP(0x00A1)</li>
+	 * <li>DEFAULTCOLWIDTH(0x0055)</li>
+	 * <li>COLINFO(0x007D)</li>
+	 * <li>DIMENSIONS(0x0200)</li>
+	 * <li>BottomMargin(0x0029)</li>
+	 * </ul>
+	 */
+	public void testLateMargins_bug47199() {
+
+		Record[] recs = {
+				BOFRecord.createSheetBOF(),
+				new HeaderRecord("&LSales Figures"),
+				new FooterRecord("&LJanuary"),
+				new DimensionsRecord(),
+				createBottomMargin(0.787F),
+				new WindowTwoRecord(),
+				EOFRecord.instance,
+		};
+		RecordStream rs = new RecordStream(Arrays.asList(recs), 0);
+
+		Sheet sheet;
+		try {
+			sheet = Sheet.createSheet(rs);
+		} catch (RuntimeException e) {
+			if (e.getMessage().equals("two Page Settings Blocks found in the same sheet")) {
+				throw new AssertionFailedError("Identified bug 47199a - failed to process late margings records");
+			}
+			throw e;
+		}
+
+		RecordCollector rv = new RecordCollector();
+		sheet.visitContainedRecords(rv, 0);
+		Record[] outRecs = rv.getRecords();
+		assertEquals(recs.length+1, outRecs.length); // +1 for index record
+
+		assertEquals(BOFRecord.class, outRecs[0].getClass());
+		assertEquals(IndexRecord.class, outRecs[1].getClass());
+		assertEquals(HeaderRecord.class, outRecs[2].getClass());
+		assertEquals(FooterRecord.class, outRecs[3].getClass());
+		assertEquals(DimensionsRecord.class, outRecs[5].getClass());
+		assertEquals(WindowTwoRecord.class, outRecs[6].getClass());
+		assertEquals(EOFRecord.instance, outRecs[7]);
+	}
+
+	private Record createBottomMargin(float value) {
+		BottomMarginRecord result = new BottomMarginRecord();
+		result.setMargin(value);
+		return result;
+	}
+
+	/**
+	 * The PageSettingsBlock should not allow multiple copies of the same record.  This extra assertion
+	 * was added while fixing bug 47199.  All existing POI test samples comply with this requirement.
+	 */
+	public void testDuplicatePSBRecord_bug47199() {
+
+		// Hypothetical setup of PSB records which should cause POI to crash
+		Record[] recs = {
+				new HeaderRecord("&LSales Figures"),
+				new HeaderRecord("&LInventory"),
+		};
+		RecordStream rs = new RecordStream(Arrays.asList(recs), 0);
+
+		try {
+			new PageSettingsBlock(rs);
+			throw new AssertionFailedError("Identified bug 47199b - duplicate PSB records should not be allowed");
+		} catch (RecordFormatException e) {
+			if (e.getMessage().equals("Duplicate PageSettingsBlock record (sid=0x14)")) {
+				// expected during successful test
+			} else {
+				throw new AssertionFailedError("Expected RecordFormatException due to duplicate PSB record");
+			}
+		}
+	}
 
 	private static UnknownRecord ur(int sid, String hexData) {
 		return new UnknownRecord(sid, HexRead.readFromString(hexData));
 	}
+	
+	/**
+	 * Excel tolerates missing header / footer records, but adds them (empty) in when re-saving.
+	 * This is not critical functionality but it has been decided to keep POI consistent with
+	 * Excel in this regard.
+	 */
+	public void testMissingHeaderFooter() {
+		// initialise PSB with some records, but not the header / footer
+		Record[] recs = {
+				new HCenterRecord(),
+				new VCenterRecord(),
+		};
+		RecordStream rs = new RecordStream(Arrays.asList(recs), 0);
+		PageSettingsBlock psb = new PageSettingsBlock(rs);
+
+		// serialize the PSB to see what records come out
+		RecordCollector rc = new RecordCollector();
+		psb.visitContainedRecords(rc);
+		Record[] outRecs = rc.getRecords();
+		
+		if (outRecs.length == 2) {
+			throw new AssertionFailedError("PageSettingsBlock didn't add missing header/footer records");
+		}
+		assertEquals(4, outRecs.length);
+		assertEquals(HeaderRecord.class, outRecs[0].getClass());
+		assertEquals(FooterRecord.class, outRecs[1].getClass());
+		assertEquals(HCenterRecord.class, outRecs[2].getClass());
+		assertEquals(VCenterRecord.class, outRecs[3].getClass());
+		
+		// make sure the added header / footer records are empty 
+		HeaderRecord hr = (HeaderRecord) outRecs[0];
+		assertEquals("", hr.getText());
+		FooterRecord fr = (FooterRecord) outRecs[1];
+		assertEquals("", fr.getText());
+	}
 }

Modified: poi/tags/REL_3_5_BETA6/src/testcases/org/apache/poi/hssf/usermodel/TestBugs.java
URL: http://svn.apache.org/viewvc/poi/tags/REL_3_5_BETA6/src/testcases/org/apache/poi/hssf/usermodel/TestBugs.java?rev=782402&r1=782401&r2=782402&view=diff
==============================================================================
--- poi/tags/REL_3_5_BETA6/src/testcases/org/apache/poi/hssf/usermodel/TestBugs.java (original)
+++ poi/tags/REL_3_5_BETA6/src/testcases/org/apache/poi/hssf/usermodel/TestBugs.java Sun Jun  7 15:39:51 2009
@@ -17,16 +17,20 @@
 
 package org.apache.poi.hssf.usermodel;
 
-import java.io.*;
+import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.util.Arrays;
 import java.util.Iterator;
 import java.util.List;
 
 import junit.framework.AssertionFailedError;
-import junit.framework.TestCase;
 
+import org.apache.poi.hssf.HSSFITestDataProvider;
 import org.apache.poi.hssf.HSSFTestDataSamples;
 import org.apache.poi.hssf.OldExcelFormatException;
-import org.apache.poi.hssf.HSSFITestDataProvider;
 import org.apache.poi.hssf.model.Workbook;
 import org.apache.poi.hssf.record.CellValueRecordInterface;
 import org.apache.poi.hssf.record.EmbeddedObjectRefSubRecord;
@@ -34,11 +38,7 @@
 import org.apache.poi.hssf.record.aggregates.FormulaRecordAggregate;
 import org.apache.poi.hssf.record.formula.DeletedArea3DPtg;
 import org.apache.poi.hssf.record.formula.Ptg;
-import org.apache.poi.ss.usermodel.Cell;
-import org.apache.poi.ss.usermodel.RichTextString;
-import org.apache.poi.ss.usermodel.Row;
 import org.apache.poi.ss.usermodel.BaseTestBugzillaIssues;
-import org.apache.poi.ss.util.CellRangeAddress;
 import org.apache.poi.util.TempFile;
 
 /**
@@ -1247,16 +1247,18 @@
     }
 
     /**
-     * header / footer text too long
+     * The resolution for bug 45777 assumed that the maximum text length in a header / footer
+     * record was 256 bytes.  This assumption appears to be wrong.  Since the fix for bug 47244,
+     * POI now supports header / footer text lengths beyond 256 bytes.  
      */
     public void test45777() {
         HSSFWorkbook wb = new HSSFWorkbook();
         HSSFSheet s = wb.createSheet();
 
-        String s248 = "";
-        for(int i=0; i<248; i++) {
-            s248 += "x";
-        }
+        char[] cc248 = new char[248];
+        Arrays.fill(cc248, 'x');
+        String s248 = new String(cc248);
+
         String s249 = s248 + "1";
         String s250 = s248 + "12";
         String s251 = s248 + "123";
@@ -1268,42 +1270,45 @@
 
         // Try on headers
         s.getHeader().setCenter(s248);
-        assertEquals(254, s.getHeader().getRawHeader().length());
+        assertEquals(254, s.getHeader().getRawText().length());
         writeOutAndReadBack(wb);
 
-        s.getHeader().setCenter(s249);
-        assertEquals(255, s.getHeader().getRawHeader().length());
+        s.getHeader().setCenter(s251);
+        assertEquals(257, s.getHeader().getRawText().length());
         writeOutAndReadBack(wb);
 
         try {
-            s.getHeader().setCenter(s250); // 256
-            fail();
-        } catch(IllegalArgumentException e) {}
+            s.getHeader().setCenter(s250); // 256 bytes required
+        } catch(IllegalArgumentException e) {
+            throw new AssertionFailedError("Identified bug 47244b - header can be more than 256 bytes");
+        }
 
         try {
-            s.getHeader().setCenter(s251); // 257
-            fail();
-        } catch(IllegalArgumentException e) {}
-
+            s.getHeader().setCenter(s251); // 257 bytes required
+        } catch(IllegalArgumentException e) {
+            throw new AssertionFailedError("Identified bug 47244b - header can be more than 256 bytes");
+        }
 
         // Now try on footers
         s.getFooter().setCenter(s248);
-        assertEquals(254, s.getFooter().getRawFooter().length());
+        assertEquals(254, s.getFooter().getRawText().length());
         writeOutAndReadBack(wb);
 
-        s.getFooter().setCenter(s249);
-        assertEquals(255, s.getFooter().getRawFooter().length());
+        s.getFooter().setCenter(s251);
+        assertEquals(257, s.getFooter().getRawText().length());
         writeOutAndReadBack(wb);
 
         try {
-            s.getFooter().setCenter(s250); // 256
-            fail();
-        } catch(IllegalArgumentException e) {}
+            s.getFooter().setCenter(s250); // 256 bytes required
+        } catch(IllegalArgumentException e) {
+            throw new AssertionFailedError("Identified bug 47244b - footer can be more than 256 bytes");
+        }
 
         try {
-            s.getFooter().setCenter(s251); // 257
-            fail();
-        } catch(IllegalArgumentException e) {}
+            s.getFooter().setCenter(s251); // 257 bytes required
+        } catch(IllegalArgumentException e) {
+            throw new AssertionFailedError("Identified bug 47244b - footer can be more than 256 bytes");
+        }
     }
 
     /**
@@ -1469,24 +1474,24 @@
      * java.io.IOException: block[ 0 ] already removed
      * (is an excel 95 file though)
      */
-    public void test46904() throws IOException {
-    	try {
-    		HSSFWorkbook wb = openSample("46904.xls");
-    		fail();
-    	} catch(OldExcelFormatException e) {
-    		assertTrue(e.getMessage().startsWith(
-    				"The supplied spreadsheet seems to be Excel"
-    		));
-    	}
+    public void test46904() {
+        try {
+            openSample("46904.xls");
+            fail();
+        } catch(OldExcelFormatException e) {
+            assertTrue(e.getMessage().startsWith(
+                    "The supplied spreadsheet seems to be Excel"
+            ));
+        }
     }
     
     /**
      * java.lang.NegativeArraySizeException reading long
      *  non-unicode data for a name record
      */
-    public void test47034() throws IOException {
-		HSSFWorkbook wb = openSample("47034.xls");
-		assertEquals(893, wb.getNumberOfNames());
-		assertEquals("Matthew\\Matthew11_1\\Matthew2331_1\\Matthew2351_1\\Matthew2361_1___lab", wb.getNameName(300));
+    public void test47034() {
+        HSSFWorkbook wb = openSample("47034.xls");
+        assertEquals(893, wb.getNumberOfNames());
+        assertEquals("Matthew\\Matthew11_1\\Matthew2331_1\\Matthew2351_1\\Matthew2361_1___lab", wb.getNameName(300));
     }
 }

Modified: poi/tags/REL_3_5_BETA6/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFHeaderFooter.java
URL: http://svn.apache.org/viewvc/poi/tags/REL_3_5_BETA6/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFHeaderFooter.java?rev=782402&r1=782401&r2=782402&view=diff
==============================================================================
--- poi/tags/REL_3_5_BETA6/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFHeaderFooter.java (original)
+++ poi/tags/REL_3_5_BETA6/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFHeaderFooter.java Sun Jun  7 15:39:51 2009
@@ -17,43 +17,43 @@
 
 package org.apache.poi.hssf.usermodel;
 
+import junit.framework.AssertionFailedError;
 import junit.framework.TestCase;
 
 import org.apache.poi.hssf.HSSFTestDataSamples;
 
 /**
- * Tests row shifting capabilities.
- *
+ * Tests for {@link HSSFHeader} / {@link HSSFFooter}
  *
  * @author Shawn Laubach (slaubach at apache dot com)
  */
 public final class TestHSSFHeaderFooter extends TestCase {
 
 	/**
-	 * Tests that get header retreives the proper values.
+	 * Tests that get header retrieves the proper values.
 	 *
 	 * @author Shawn Laubach (slaubach at apache dot org)
 	 */
 	public void testRetrieveCorrectHeader() {
-		// Read initial file in
+
 		HSSFWorkbook wb = HSSFTestDataSamples.openSampleWorkbook("EmbeddedChartHeaderTest.xls");
 		HSSFSheet s = wb.getSheetAt( 0 );
-    	HSSFHeader head = s.getHeader();
-    
-    	assertEquals("Top Left", head.getLeft());
-    	assertEquals("Top Center", head.getCenter());
-    	assertEquals("Top Right", head.getRight());
+		HSSFHeader head = s.getHeader();
+
+		assertEquals("Top Left", head.getLeft());
+		assertEquals("Top Center", head.getCenter());
+		assertEquals("Top Right", head.getRight());
 	}
-	
+
 	public void testSpecialChars() {
 		assertEquals("&U", HSSFHeader.startUnderline());
 		assertEquals("&U", HSSFHeader.endUnderline());
 		assertEquals("&P", HSSFHeader.page());
-		
+
 		assertEquals("&22", HSSFFooter.fontSize((short)22));
 		assertEquals("&\"Arial,bold\"", HSSFFooter.font("Arial", "bold"));
 	}
-	
+
 	public void testStripFields() {
 		String simple = "I am a test header";
 		String withPage = "I am a&P test header";
@@ -61,54 +61,51 @@
 		String withFont = "I&22 am a&\"Arial,bold\" test header";
 		String withOtherAnds = "I am a&P test header&&";
 		String withOtherAnds2 = "I am a&P test header&a&b";
-		
+
 		assertEquals(simple, HSSFHeader.stripFields(simple));
 		assertEquals(simple, HSSFHeader.stripFields(withPage));
 		assertEquals(simple, HSSFHeader.stripFields(withLots));
 		assertEquals(simple, HSSFHeader.stripFields(withFont));
 		assertEquals(simple + "&&", HSSFHeader.stripFields(withOtherAnds));
 		assertEquals(simple + "&a&b", HSSFHeader.stripFields(withOtherAnds2));
-		
+
 		// Now test the default strip flag
 		HSSFWorkbook wb = HSSFTestDataSamples.openSampleWorkbook("EmbeddedChartHeaderTest.xls");
 		HSSFSheet s = wb.getSheetAt( 0 );
-    	HSSFHeader head = s.getHeader();
-    
-    	assertEquals("Top Left", head.getLeft());
-    	assertEquals("Top Center", head.getCenter());
-    	assertEquals("Top Right", head.getRight());
-    	
-    	head.setLeft("Top &P&F&D Left");
-    	assertEquals("Top &P&F&D Left", head.getLeft());
-    	assertFalse(head.areFieldsStripped());
-    	
-    	head.setAreFieldsStripped(true);
-    	assertEquals("Top  Left", head.getLeft());
-    	assertTrue(head.areFieldsStripped());
-    	
-    	// Now even more complex
-    	head.setCenter("HEADER TEXT &P&N&D&T&Z&F&F&A&G&X END");
-    	assertEquals("HEADER TEXT  END", head.getCenter());
+		HSSFHeader head = s.getHeader();
+
+		assertEquals("Top Left", head.getLeft());
+		assertEquals("Top Center", head.getCenter());
+		assertEquals("Top Right", head.getRight());
+
+		head.setLeft("Top &P&F&D Left");
+		assertEquals("Top &P&F&D Left", head.getLeft());
+
+		assertEquals("Top  Left", HeaderFooter.stripFields(head.getLeft()));
+
+		// Now even more complex
+		head.setCenter("HEADER TEXT &P&N&D&T&Z&F&F&A&G&X END");
+		assertEquals("HEADER TEXT  END",  HeaderFooter.stripFields(head.getCenter()));
 	}
 
 	/**
-	 * Tests that get header retreives the proper values.
+	 * Tests that get header retrieves the proper values.
 	 *
 	 * @author Shawn Laubach (slaubach at apache dot org)
 	 */
 	public void testRetrieveCorrectFooter() {
-		// Read initial file in
+
 		HSSFWorkbook wb = HSSFTestDataSamples.openSampleWorkbook("EmbeddedChartHeaderTest.xls");
-		HSSFSheet s = wb.getSheetAt( 0 );
-    	HSSFFooter foot = s.getFooter();
-    
-    	assertEquals("Bottom Left", foot.getLeft());
-    	assertEquals("Bottom Center", foot.getCenter());
-    	assertEquals("Bottom Right", foot.getRight());
+		HSSFSheet s = wb.getSheetAt(0);
+		HSSFFooter foot = s.getFooter();
+
+		assertEquals("Bottom Left", foot.getLeft());
+		assertEquals("Bottom Center", foot.getCenter());
+		assertEquals("Bottom Right", foot.getRight());
 	}
-	
+
 	/**
-	 * Testcase for Bug 17039 HSSFHeader  doesnot support DBCS 
+	 * Testcase for Bug 17039 HSSFHeader  does not support DBCS
 	 */
 	public void testHeaderHas16bitCharacter() {
 		HSSFWorkbook b = new HSSFWorkbook();
@@ -117,17 +114,17 @@
 		h.setLeft("\u0391");
 		h.setCenter("\u0392");
 		h.setRight("\u0393");
-		
+
 		HSSFWorkbook b2 = HSSFTestDataSamples.writeOutAndReadBack(b);
 		HSSFHeader h2 = b2.getSheet("Test").getHeader();
-		
+
 		assertEquals(h2.getLeft(),"\u0391");
 		assertEquals(h2.getCenter(),"\u0392");
 		assertEquals(h2.getRight(),"\u0393");
 	}
-	
+
 	/**
-	 * Testcase for Bug 17039 HSSFFooter doesnot support DBCS 
+	 * Testcase for Bug 17039 HSSFFooter does not support DBCS
 	 */
 	 public void testFooterHas16bitCharacter() {
 		HSSFWorkbook b = new HSSFWorkbook();
@@ -136,10 +133,10 @@
 		f.setLeft("\u0391");
 		f.setCenter("\u0392");
 		f.setRight("\u0393");
-		
+
 		HSSFWorkbook b2 = HSSFTestDataSamples.writeOutAndReadBack(b);
 		HSSFFooter f2 = b2.getSheet("Test").getFooter();
-		
+
 		assertEquals(f2.getLeft(),"\u0391");
 		assertEquals(f2.getCenter(),"\u0392");
 		assertEquals(f2.getRight(),"\u0393");
@@ -152,11 +149,38 @@
 		assertEquals("Header Left " ,h.getLeft(),"\u090f\u0915");
 		assertEquals("Header Center " ,h.getCenter(),"\u0939\u094b\u0917\u093e");
 		assertEquals("Header Right " ,h.getRight(),"\u091c\u093e");
-		
+
 		HSSFFooter f = s.getFooter();
 		assertEquals("Footer Left " ,f.getLeft(),"\u091c\u093e");
 		assertEquals("Footer Center " ,f.getCenter(),"\u091c\u093e");
 		assertEquals("Footer Right " ,f.getRight(),"\u091c\u093e");
 	}
-}
 
+	/**
+	 * Excel tolerates files with missing HEADER/FOOTER records.  POI should do the same.
+	 */
+	public void testMissingHeaderFooterRecord_bug47244() {
+		// noHeaderFooter47244.xls was created by a slightly modified POI
+		// which omitted the HEADER/FOOTER records
+		HSSFWorkbook wb = HSSFTestDataSamples.openSampleWorkbook("noHeaderFooter47244.xls");
+		HSSFSheet sheet = wb.getSheetAt(0);
+		HSSFFooter footer;
+		try {
+			footer = sheet.getFooter();
+		} catch (NullPointerException e) {
+			throw new AssertionFailedError("Identified bug 47244a");
+		}
+		assertEquals("", footer.getRawText());
+		HSSFHeader header = sheet.getHeader();
+		assertEquals("", header.getRawText());
+
+		// make sure header / footer is properly linked to underlying data 
+		HSSFHeader header2 = sheet.getHeader();
+		header.setCenter("foo");
+		assertEquals("foo", header2.getCenter());
+
+		HSSFFooter footer2 = sheet.getFooter();
+		footer.setCenter("bar");
+		assertEquals("bar", footer2.getCenter());
+	}
+}

Modified: poi/tags/REL_3_5_BETA6/src/testcases/org/apache/poi/ss/util/TestCellReference.java
URL: http://svn.apache.org/viewvc/poi/tags/REL_3_5_BETA6/src/testcases/org/apache/poi/ss/util/TestCellReference.java?rev=782402&r1=782401&r2=782402&view=diff
==============================================================================
--- poi/tags/REL_3_5_BETA6/src/testcases/org/apache/poi/ss/util/TestCellReference.java (original)
+++ poi/tags/REL_3_5_BETA6/src/testcases/org/apache/poi/ss/util/TestCellReference.java Sun Jun  7 15:39:51 2009
@@ -17,15 +17,17 @@
 
 package org.apache.poi.ss.util;
 
+import org.apache.poi.ss.SpreadsheetVersion;
 import org.apache.poi.ss.util.CellReference;
 
+import junit.framework.AssertionFailedError;
 import junit.framework.TestCase;
 
 
 /**
  * Tests that the common CellReference works as we need it to
  */
-public class TestCellReference extends TestCase {
+public final class TestCellReference extends TestCase {
 	
 	public void testGetCellRefParts() {
 		CellReference cellReference;
@@ -168,4 +170,35 @@
 		String collRef4 = new CellReference(0, col4).formatAsString();
 		assertEquals("CBA1", collRef4);
 	}
+
+	public void testBadRowNumber() {
+		SpreadsheetVersion v97 = SpreadsheetVersion.EXCEL97;
+		SpreadsheetVersion v2007 = SpreadsheetVersion.EXCEL2007;
+
+		confirmCrInRange(true, "A", "1", v97);
+		confirmCrInRange(true, "IV", "65536", v97);
+		confirmCrInRange(false, "IV", "65537", v97);
+		confirmCrInRange(false, "IW", "65536", v97);
+
+		confirmCrInRange(true, "A", "1", v2007);
+		confirmCrInRange(true, "XFD", "1048576", v2007);
+		confirmCrInRange(false, "XFD", "1048577", v2007);
+		confirmCrInRange(false, "XFE", "1048576", v2007);
+
+		if (CellReference.cellReferenceIsWithinRange("B", "0", v97)) {
+			throw new AssertionFailedError("Identified bug 47312a");
+		}
+
+		confirmCrInRange(false, "A", "0", v97);
+		confirmCrInRange(false, "A", "0", v2007);
+	}
+
+	private static void confirmCrInRange(boolean expResult, String colStr, String rowStr,
+			SpreadsheetVersion sv) {
+		if (expResult == CellReference.cellReferenceIsWithinRange(colStr, rowStr, sv)) {
+			return;
+		}
+		throw new AssertionFailedError("expected (c='" + colStr + "', r='" + rowStr + "' to be "
+				+ (expResult ? "within" : "out of") + " bounds for version " + sv.name());
+	}
 }

Modified: poi/tags/REL_3_5_BETA6/src/testcases/org/apache/poi/util/AllPOIUtilTests.java
URL: http://svn.apache.org/viewvc/poi/tags/REL_3_5_BETA6/src/testcases/org/apache/poi/util/AllPOIUtilTests.java?rev=782402&r1=782401&r2=782402&view=diff
==============================================================================
--- poi/tags/REL_3_5_BETA6/src/testcases/org/apache/poi/util/AllPOIUtilTests.java (original)
+++ poi/tags/REL_3_5_BETA6/src/testcases/org/apache/poi/util/AllPOIUtilTests.java Sun Jun  7 15:39:51 2009
@@ -35,8 +35,6 @@
         result.addTestSuite(TestHexDump.class);
         result.addTestSuite(TestIntegerField.class);
         result.addTestSuite(TestIntList.class);
-        result.addTestSuite(TestIntList2d.class);
-        result.addTestSuite(TestList2d.class);
         result.addTestSuite(TestLittleEndian.class);
         result.addTestSuite(TestLongField.class);
         result.addTestSuite(TestPOILogFactory.class);

Modified: poi/tags/REL_3_5_BETA6/src/types/styles/hdftype_document.xsl
URL: http://svn.apache.org/viewvc/poi/tags/REL_3_5_BETA6/src/types/styles/hdftype_document.xsl?rev=782402&r1=782401&r2=782402&view=diff
==============================================================================
--- poi/tags/REL_3_5_BETA6/src/types/styles/hdftype_document.xsl (original)
+++ poi/tags/REL_3_5_BETA6/src/types/styles/hdftype_document.xsl Sun Jun  7 15:39:51 2009
@@ -50,7 +50,6 @@
     <footer>
         <legal>
           Copyright (c) @year@ The Poi Project All rights reserved.
-          $Revision$ $Date$
         </legal>
     </footer>
 



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