- *
- * However, for the purposes of the POI project, this risk is deemed
- * negligible. It is, however, so noted.
- *
- *@param stream the InputStream we're reading from
- *@param size the number of bytes to read; in
- * 99.99% of cases, this will be SHORT_SIZE, INT_SIZE, or LONG_SIZE --
- * but it doesn't have to be.
- *@return the byte array containing the
- * required number of bytes. The array will contain all zero's on end
- * of stream
- *@exception IOException will be propagated back to the caller
- *@exception BufferUnderrunException if the stream cannot provide enough
- * bytes
- */
-
- public static byte[] readFromStream(final InputStream stream,
- final int size)
- throws IOException, BufferUnderrunException {
- byte[] buffer = new byte[size];
-
- int count = stream.read(buffer);
-
- if (count == -1) {
-
- // return a zero-filled buffer
- Arrays.fill(buffer, (byte) 0);
- } else if (count != size) {
- throw new BufferUnderrunException();
- }
- return buffer;
- }
-
-
/**
* Gets the number attribute of the LittleEndian class
*
diff --git a/src/scratchpad/src/org/apache/poi/hslf/HSLFSlideShow.java b/src/scratchpad/src/org/apache/poi/hslf/HSLFSlideShow.java
index dc967fd5b..217ab7bc8 100644
--- a/src/scratchpad/src/org/apache/poi/hslf/HSLFSlideShow.java
+++ b/src/scratchpad/src/org/apache/poi/hslf/HSLFSlideShow.java
@@ -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,8 +14,6 @@
See the License for the specific language governing permissions and
limitations under the License.
==================================================================== */
-
-
package org.apache.poi.hslf;
@@ -27,7 +24,12 @@ import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.Hashtable;
+import java.util.Iterator;
+import java.util.List;
import org.apache.poi.POIDocument;
import org.apache.poi.hslf.exceptions.CorruptPowerPointFileException;
@@ -36,7 +38,6 @@ import org.apache.poi.hslf.exceptions.HSLFException;
import org.apache.poi.hslf.record.*;
import org.apache.poi.hslf.usermodel.ObjectData;
import org.apache.poi.hslf.usermodel.PictureData;
-import org.apache.poi.hslf.model.Shape;
import org.apache.poi.poifs.filesystem.DirectoryNode;
import org.apache.poi.poifs.filesystem.DocumentEntry;
import org.apache.poi.poifs.filesystem.DocumentInputStream;
@@ -51,14 +52,10 @@ import org.apache.poi.util.POILogger;
*
* @author Nick Burch
*/
-
-public class HSLFSlideShow extends POIDocument
-{
+public final class HSLFSlideShow extends POIDocument {
// For logging
private POILogger logger = POILogFactory.getLogger(this.getClass());
- private InputStream istream;
-
// Holds metadata on where things are in our document
private CurrentUserAtom currentUser;
@@ -101,11 +98,9 @@ public class HSLFSlideShow extends POIDocument
* @param inputStream the source of the data
* @throws IOException if there is a problem while parsing the document.
*/
- public HSLFSlideShow(InputStream inputStream) throws IOException
- {
+ public HSLFSlideShow(InputStream inputStream) throws IOException {
//do Ole stuff
this(new POIFSFileSystem(inputStream));
- istream = inputStream;
}
/**
@@ -160,29 +155,21 @@ public class HSLFSlideShow extends POIDocument
// Look for Picture Streams:
readPictures();
}
-
/**
* Constructs a new, empty, Powerpoint document.
*/
- public HSLFSlideShow() throws IOException
- {
- this(HSLFSlideShow.class.getResourceAsStream("/org/apache/poi/hslf/data/empty.ppt"));
- }
-
- /**
- * Shuts things down. Closes underlying streams etc
- *
- * @throws IOException
- */
- public void close() throws IOException
- {
- if(istream != null) {
- istream.close();
+ public static final HSLFSlideShow create() {
+ InputStream is = HSLFSlideShow.class.getResourceAsStream("data/empty.ppt");
+ if (is == null) {
+ throw new RuntimeException("Missing resource 'empty.ppt'");
+ }
+ try {
+ return new HSLFSlideShow(is);
+ } catch (IOException e) {
+ throw new RuntimeException(e);
}
- filesystem = null;
}
-
/**
* Extracts the main PowerPoint document stream from the
* POI file, ready to be passed
diff --git a/src/scratchpad/src/org/apache/poi/hslf/dev/SlideShowRecordDumper.java b/src/scratchpad/src/org/apache/poi/hslf/dev/SlideShowRecordDumper.java
index 04ba17ffc..74b20993a 100644
--- a/src/scratchpad/src/org/apache/poi/hslf/dev/SlideShowRecordDumper.java
+++ b/src/scratchpad/src/org/apache/poi/hslf/dev/SlideShowRecordDumper.java
@@ -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,19 +14,14 @@
See the License for the specific language governing permissions and
limitations under the License.
==================================================================== */
-
-
package org.apache.poi.hslf.dev;
-import java.util.*;
-import java.io.*;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
-import org.apache.poi.ddf.*;
-import org.apache.poi.hslf.*;
-import org.apache.poi.hslf.record.*;
-
-import org.apache.poi.util.LittleEndian;
+import org.apache.poi.hslf.HSLFSlideShow;
+import org.apache.poi.hslf.record.Record;
/**
* This class provides a way to view the contents of a powerpoint file.
@@ -36,9 +30,7 @@ import org.apache.poi.util.LittleEndian;
*
* @author Nick Burch
*/
-
-public class SlideShowRecordDumper
-{
+public final class SlideShowRecordDumper {
private HSLFSlideShow doc;
/**
@@ -57,7 +49,6 @@ public class SlideShowRecordDumper
SlideShowRecordDumper foo = new SlideShowRecordDumper(filename);
foo.printDump();
- foo.close();
}
@@ -73,19 +64,6 @@ public class SlideShowRecordDumper
doc = new HSLFSlideShow(fileName);
}
- /**
- * Shuts things down. Closes underlying streams etc
- *
- * @throws IOException
- */
- public void close() throws IOException
- {
- if(doc != null) {
- doc.close();
- }
- doc = null;
- }
-
public void printDump() throws IOException {
// Prints out the records in the tree
diff --git a/src/scratchpad/src/org/apache/poi/hslf/extractor/PowerPointExtractor.java b/src/scratchpad/src/org/apache/poi/hslf/extractor/PowerPointExtractor.java
index 865471eef..841bd38f9 100644
--- a/src/scratchpad/src/org/apache/poi/hslf/extractor/PowerPointExtractor.java
+++ b/src/scratchpad/src/org/apache/poi/hslf/extractor/PowerPointExtractor.java
@@ -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,21 +14,23 @@
See the License for the specific language governing permissions and
limitations under the License.
==================================================================== */
-
-
package org.apache.poi.hslf.extractor;
-import java.io.*;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStream;
import java.util.HashSet;
import org.apache.poi.POIOLE2TextExtractor;
+import org.apache.poi.hslf.HSLFSlideShow;
+import org.apache.poi.hslf.model.Comment;
+import org.apache.poi.hslf.model.HeadersFooters;
+import org.apache.poi.hslf.model.Notes;
+import org.apache.poi.hslf.model.Slide;
+import org.apache.poi.hslf.model.TextRun;
+import org.apache.poi.hslf.usermodel.SlideShow;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;
-import org.apache.poi.hslf.*;
-import org.apache.poi.hslf.model.*;
-import org.apache.poi.hslf.record.Comment2000;
-import org.apache.poi.hslf.record.Record;
-import org.apache.poi.hslf.usermodel.*;
/**
* This class can be used to extract text from a PowerPoint file.
@@ -37,9 +38,7 @@ import org.apache.poi.hslf.usermodel.*;
*
* @author Nick Burch
*/
-
-public class PowerPointExtractor extends POIOLE2TextExtractor
-{
+public final class PowerPointExtractor extends POIOLE2TextExtractor {
private HSLFSlideShow _hslfshow;
private SlideShow _show;
private Slide[] _slides;
@@ -74,7 +73,6 @@ public class PowerPointExtractor extends POIOLE2TextExtractor
PowerPointExtractor ppe = new PowerPointExtractor(file);
System.out.println(ppe.getText(true,notes,comments));
- ppe.close();
}
/**
@@ -110,16 +108,6 @@ public class PowerPointExtractor extends POIOLE2TextExtractor
_slides = _show.getSlides();
}
- /**
- * Shuts down the underlying streams
- */
- public void close() throws IOException {
- _hslfshow.close();
- _hslfshow = null;
- _show = null;
- _slides = null;
- }
-
/**
* Should a call to getText() return slide text?
* Default is yes
diff --git a/src/scratchpad/src/org/apache/poi/hslf/usermodel/SlideShow.java b/src/scratchpad/src/org/apache/poi/hslf/usermodel/SlideShow.java
index f38cc7716..1b2b9f5ee 100644
--- a/src/scratchpad/src/org/apache/poi/hslf/usermodel/SlideShow.java
+++ b/src/scratchpad/src/org/apache/poi/hslf/usermodel/SlideShow.java
@@ -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,24 +14,53 @@
See the License for the specific language governing permissions and
limitations under the License.
==================================================================== */
-
-
package org.apache.poi.hslf.usermodel;
-import java.util.*;
import java.awt.Dimension;
-import java.io.*;
+import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Enumeration;
+import java.util.Hashtable;
+import java.util.List;
-import org.apache.poi.ddf.*;
-import org.apache.poi.hslf.*;
-import org.apache.poi.hslf.model.*;
-import org.apache.poi.hslf.model.Notes;
-import org.apache.poi.hslf.model.Slide;
-import org.apache.poi.hslf.record.SlideListWithText.*;
-import org.apache.poi.hslf.record.*;
+import org.apache.poi.ddf.EscherBSERecord;
+import org.apache.poi.ddf.EscherContainerRecord;
+import org.apache.poi.ddf.EscherOptRecord;
+import org.apache.poi.ddf.EscherRecord;
+import org.apache.poi.hslf.HSLFSlideShow;
import org.apache.poi.hslf.exceptions.CorruptPowerPointFileException;
import org.apache.poi.hslf.exceptions.HSLFException;
+import org.apache.poi.hslf.model.HeadersFooters;
+import org.apache.poi.hslf.model.Notes;
+import org.apache.poi.hslf.model.PPFont;
+import org.apache.poi.hslf.model.Picture;
+import org.apache.poi.hslf.model.Shape;
+import org.apache.poi.hslf.model.Slide;
+import org.apache.poi.hslf.model.SlideMaster;
+import org.apache.poi.hslf.model.TitleMaster;
+import org.apache.poi.hslf.record.Document;
+import org.apache.poi.hslf.record.DocumentAtom;
+import org.apache.poi.hslf.record.FontCollection;
+import org.apache.poi.hslf.record.FontEntityAtom;
+import org.apache.poi.hslf.record.HeadersFootersContainer;
+import org.apache.poi.hslf.record.ParentAwareRecord;
+import org.apache.poi.hslf.record.PersistPtrHolder;
+import org.apache.poi.hslf.record.PositionDependentRecord;
+import org.apache.poi.hslf.record.PositionDependentRecordContainer;
+import org.apache.poi.hslf.record.Record;
+import org.apache.poi.hslf.record.RecordContainer;
+import org.apache.poi.hslf.record.RecordTypes;
+import org.apache.poi.hslf.record.SlideListWithText;
+import org.apache.poi.hslf.record.SlidePersistAtom;
+import org.apache.poi.hslf.record.UserEditAtom;
+import org.apache.poi.hslf.record.SlideListWithText.SlideAtomsSet;
import org.apache.poi.util.ArrayUtil;
import org.apache.poi.util.POILogFactory;
import org.apache.poi.util.POILogger;
@@ -48,9 +76,7 @@ import org.apache.poi.util.POILogger;
* @author Nick Burch
* @author Yegor kozlov
*/
-
-public class SlideShow
-{
+public final class SlideShow {
// What we're based on
private HSLFSlideShow _hslfSlideShow;
@@ -90,8 +116,7 @@ public class SlideShow
*
* @param hslfSlideShow the HSLFSlideShow to base on
*/
- public SlideShow(HSLFSlideShow hslfSlideShow) throws IOException
- {
+ public SlideShow(HSLFSlideShow hslfSlideShow) {
// Get useful things from our base slideshow
_hslfSlideShow = hslfSlideShow;
_records = _hslfSlideShow.getRecords();
@@ -111,8 +136,8 @@ public class SlideShow
/**
* Constructs a new, empty, Powerpoint document.
*/
- public SlideShow() throws IOException {
- this(new HSLFSlideShow());
+ public SlideShow() {
+ this(HSLFSlideShow.create());
}
/**
diff --git a/src/scratchpad/src/org/apache/poi/hssf/usermodel/HSSFChart.java b/src/scratchpad/src/org/apache/poi/hssf/usermodel/HSSFChart.java
index ab7cc61ef..5f5995afb 100644
--- a/src/scratchpad/src/org/apache/poi/hssf/usermodel/HSSFChart.java
+++ b/src/scratchpad/src/org/apache/poi/hssf/usermodel/HSSFChart.java
@@ -153,7 +153,7 @@ public final class HSSFChart {
records.add( createSeriesIndexRecord(2) );
records.add( createSeriesIndexRecord(1) );
records.add( createSeriesIndexRecord(3) );
- records.add( createEOFRecord() );
+ records.add(EOFRecord.instance);
@@ -259,12 +259,6 @@ public final class HSSFChart {
throw new IllegalStateException("No chart title found to change");
}
}
-
-
- private EOFRecord createEOFRecord()
- {
- return new EOFRecord();
- }
private SeriesIndexRecord createSeriesIndexRecord( int index )
{
diff --git a/src/scratchpad/testcases/org/apache/poi/hslf/extractor/TextExtractor.java b/src/scratchpad/testcases/org/apache/poi/hslf/extractor/TextExtractor.java
index fe995fe12..13bd1df62 100644
--- a/src/scratchpad/testcases/org/apache/poi/hslf/extractor/TextExtractor.java
+++ b/src/scratchpad/testcases/org/apache/poi/hslf/extractor/TextExtractor.java
@@ -229,12 +229,12 @@ public class TextExtractor extends TestCase {
ppe = new PowerPointExtractor(filename);
String text = ppe.getText();
- assertFalse("Comments not in by default", text.contains("This is a test comment"));
+ assertFalse("Comments not in by default", contains(text, "This is a test comment"));
ppe.setCommentsByDefault(true);
text = ppe.getText();
- assertTrue("Unable to find expected word in text\n" + text, text.contains("This is a test comment"));
+ assertTrue("Unable to find expected word in text\n" + text, contains(text, "This is a test comment"));
// And another file
@@ -242,12 +242,12 @@ public class TextExtractor extends TestCase {
ppe = new PowerPointExtractor(filename);
text = ppe.getText();
- assertFalse("Comments not in by default", text.contains("testdoc"));
+ assertFalse("Comments not in by default", contains(text, "testdoc"));
ppe.setCommentsByDefault(true);
text = ppe.getText();
- assertTrue("Unable to find expected word in text\n" + text, text.contains("testdoc"));
+ assertTrue("Unable to find expected word in text\n" + text, contains(text, "testdoc"));
}
/**
@@ -266,13 +266,13 @@ public class TextExtractor extends TestCase {
ppe = new PowerPointExtractor(hslf);
text = ppe.getText();
- assertFalse("Unable to find expected word in text\n" + text, text.contains("testdoc"));
- assertFalse("Unable to find expected word in text\n" + text, text.contains("test phrase"));
+ assertFalse("Unable to find expected word in text\n" + text, contains(text, "testdoc"));
+ assertFalse("Unable to find expected word in text\n" + text, contains(text, "test phrase"));
ppe.setNotesByDefault(true);
text = ppe.getText();
- assertTrue("Unable to find expected word in text\n" + text, text.contains("testdoc"));
- assertTrue("Unable to find expected word in text\n" + text, text.contains("test phrase"));
+ assertTrue("Unable to find expected word in text\n" + text, contains(text, "testdoc"));
+ assertTrue("Unable to find expected word in text\n" + text, contains(text, "test phrase"));
// And with a footer, also on notes
@@ -285,12 +285,16 @@ public class TextExtractor extends TestCase {
ppe = new PowerPointExtractor(filename);
text = ppe.getText();
- assertFalse("Unable to find expected word in text\n" + text, text.contains("testdoc"));
- assertFalse("Unable to find expected word in text\n" + text, text.contains("test phrase"));
+ assertFalse("Unable to find expected word in text\n" + text, contains(text, "testdoc"));
+ assertFalse("Unable to find expected word in text\n" + text, contains(text, "test phrase"));
ppe.setNotesByDefault(true);
text = ppe.getText();
- assertTrue("Unable to find expected word in text\n" + text, text.contains("testdoc"));
- assertTrue("Unable to find expected word in text\n" + text, text.contains("test phrase"));
+ assertTrue("Unable to find expected word in text\n" + text, contains(text, "testdoc"));
+ assertTrue("Unable to find expected word in text\n" + text, contains(text, "test phrase"));
}
+
+ private static boolean contains(String text, String searchString) {
+ return text.indexOf(searchString) >=0;
+ }
}
diff --git a/src/scratchpad/testcases/org/apache/poi/hslf/model/TestOleEmbedding.java b/src/scratchpad/testcases/org/apache/poi/hslf/model/TestOleEmbedding.java
index cb177048b..ae6f752ab 100644
--- a/src/scratchpad/testcases/org/apache/poi/hslf/model/TestOleEmbedding.java
+++ b/src/scratchpad/testcases/org/apache/poi/hslf/model/TestOleEmbedding.java
@@ -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,58 +14,43 @@
See the License for the specific language governing permissions and
limitations under the License.
==================================================================== */
-
-
package org.apache.poi.hslf.model;
-import java.io.*;
-import java.util.List;
-import java.util.ArrayList;
+import java.io.File;
+import java.io.FileInputStream;
+
+import junit.framework.TestCase;
import org.apache.poi.hslf.HSLFSlideShow;
import org.apache.poi.hslf.usermodel.ObjectData;
import org.apache.poi.hslf.usermodel.PictureData;
import org.apache.poi.hslf.usermodel.SlideShow;
-import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.usermodel.HSSFSheet;
-import org.apache.poi.poifs.filesystem.POIFSFileSystem;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hwpf.HWPFDocument;
-import org.apache.poi.hwpf.usermodel.Range;
-import org.apache.poi.hwpf.usermodel.Paragraph;
-import junit.framework.TestCase;
-
-public class TestOleEmbedding extends TestCase
-{
+public final class TestOleEmbedding extends TestCase {
/**
* Tests support for OLE objects.
*
* @throws Exception if an error occurs.
*/
- public void testOleEmbedding2003() throws Exception
- {
+ public void testOleEmbedding2003() throws Exception {
String dirname = System.getProperty("HSLF.testdata.path");
File file = new File(dirname, "ole2-embedding-2003.ppt");
HSLFSlideShow slideShow = new HSLFSlideShow(new FileInputStream(file));
- try
- {
- // Placeholder EMFs for clients that don't support the OLE components.
- PictureData[] pictures = slideShow.getPictures();
- assertEquals("Should be two pictures", 2, pictures.length);
- //assertDigestEquals("Wrong data for picture 1", "8d1fbadf4814f321bb1ccdd056e3c788", pictures[0].getData());
- //assertDigestEquals("Wrong data for picture 2", "987a698e83559cf3d38a0deeba1cc63b", pictures[1].getData());
+ // Placeholder EMFs for clients that don't support the OLE components.
+ PictureData[] pictures = slideShow.getPictures();
+ assertEquals("Should be two pictures", 2, pictures.length);
+ //assertDigestEquals("Wrong data for picture 1", "8d1fbadf4814f321bb1ccdd056e3c788", pictures[0].getData());
+ //assertDigestEquals("Wrong data for picture 2", "987a698e83559cf3d38a0deeba1cc63b", pictures[1].getData());
- // Actual embedded objects.
- ObjectData[] objects = slideShow.getEmbeddedObjects();
- assertEquals("Should be two objects", 2, objects.length);
- //assertDigestEquals("Wrong data for objecs 1", "0d1fcc61a83de5c4894dc0c88e9a019d", objects[0].getData());
- //assertDigestEquals("Wrong data for object 2", "b323604b2003a7299c77c2693b641495", objects[1].getData());
- }
- finally
- {
- slideShow.close();
- }
+ // Actual embedded objects.
+ ObjectData[] objects = slideShow.getEmbeddedObjects();
+ assertEquals("Should be two objects", 2, objects.length);
+ //assertDigestEquals("Wrong data for objecs 1", "0d1fcc61a83de5c4894dc0c88e9a019d", objects[0].getData());
+ //assertDigestEquals("Wrong data for object 2", "b323604b2003a7299c77c2693b641495", objects[1].getData());
}
public void testOLEShape() throws Exception {
diff --git a/src/scratchpad/testcases/org/apache/poi/hslf/usermodel/TestAddingSlides.java b/src/scratchpad/testcases/org/apache/poi/hslf/usermodel/TestAddingSlides.java
index 5e63ea990..02c6beb53 100644
--- a/src/scratchpad/testcases/org/apache/poi/hslf/usermodel/TestAddingSlides.java
+++ b/src/scratchpad/testcases/org/apache/poi/hslf/usermodel/TestAddingSlides.java
@@ -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,8 +14,6 @@
See the License for the specific language governing permissions and
limitations under the License.
==================================================================== */
-
-
package org.apache.poi.hslf.usermodel;
@@ -36,7 +33,7 @@ import org.apache.poi.hslf.model.*;
*
* @author Nick Burch (nick at torchbox dot com)
*/
-public class TestAddingSlides extends TestCase {
+public final class TestAddingSlides extends TestCase {
// An empty SlideShow
private HSLFSlideShow hss_empty;
private SlideShow ss_empty;
@@ -53,7 +50,7 @@ public class TestAddingSlides extends TestCase {
* Create/open the slideshows
*/
public void setUp() throws Exception {
- hss_empty = new HSLFSlideShow();
+ hss_empty = HSLFSlideShow.create();
ss_empty = new SlideShow(hss_empty);
String dirname = System.getProperty("HSLF.testdata.path");
@@ -82,8 +79,8 @@ public class TestAddingSlides extends TestCase {
Record[] _records = hss_empty.getRecords();
for (int i = 0; i < _records.length; i++) {
Record record = _records[i];
- if(_records[i].getRecordType() == RecordTypes.UserEditAtom.typeID) {
- usredit = (UserEditAtom)_records[i];
+ if(record.getRecordType() == RecordTypes.UserEditAtom.typeID) {
+ usredit = (UserEditAtom)record;
}
}
assertNotNull(usredit);
diff --git a/src/testcases/org/apache/poi/hssf/data/ex45582-22397.xls b/src/testcases/org/apache/poi/hssf/data/ex45582-22397.xls
new file mode 100644
index 000000000..2dc16f5e3
Binary files /dev/null and b/src/testcases/org/apache/poi/hssf/data/ex45582-22397.xls differ
diff --git a/src/testcases/org/apache/poi/hssf/eventmodel/TestEventRecordFactory.java b/src/testcases/org/apache/poi/hssf/eventmodel/TestEventRecordFactory.java
index c4a5ec84b..88f620ca4 100644
--- a/src/testcases/org/apache/poi/hssf/eventmodel/TestEventRecordFactory.java
+++ b/src/testcases/org/apache/poi/hssf/eventmodel/TestEventRecordFactory.java
@@ -63,7 +63,7 @@ public final class TestEventRecordFactory extends TestCase {
bof.setVersion((short)0x06);
bof.setHistoryBitMask(BOFRecord.HISTORY_MASK);
- EOFRecord eof = new EOFRecord();
+ EOFRecord eof = EOFRecord.instance;
byte[] bytes = new byte[bof.getRecordSize() + eof.getRecordSize()];
int offset = 0;
offset = bof.serialize(offset,bytes);
diff --git a/src/testcases/org/apache/poi/hssf/model/TestSheet.java b/src/testcases/org/apache/poi/hssf/model/TestSheet.java
index 22defb942..40b349a54 100644
--- a/src/testcases/org/apache/poi/hssf/model/TestSheet.java
+++ b/src/testcases/org/apache/poi/hssf/model/TestSheet.java
@@ -54,7 +54,7 @@ public final class TestSheet extends TestCase {
List records = new ArrayList();
records.add( new BOFRecord() );
records.add( new DimensionsRecord() );
- records.add( new EOFRecord() );
+ records.add(EOFRecord.instance);
Sheet sheet = Sheet.createSheet( records, 0, 0 );
int pos = 0;
@@ -396,7 +396,7 @@ public final class TestSheet extends TestCase {
records.add(new BOFRecord());
records.add(new UncalcedRecord());
records.add(new DimensionsRecord());
- records.add(new EOFRecord());
+ records.add(EOFRecord.instance);
Sheet sheet = Sheet.createSheet(records, 0, 0);
int estimatedSize = sheet.getSize();
diff --git a/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFWorkbook.java b/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFWorkbook.java
index 37359231f..d8b7cde29 100644
--- a/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFWorkbook.java
+++ b/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFWorkbook.java
@@ -1,19 +1,19 @@
-/*
-* Licensed to the Apache Software Foundation (ASF) under one or more
-* contributor license agreements. See the NOTICE file distributed with
-* this work for additional information regarding copyright ownership.
-* The ASF licenses this file to You under the Apache License, Version 2.0
-* (the "License"); you may not use this file except in compliance with
-* the License. You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
+/* ====================================================================
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+==================================================================== */
package org.apache.poi.hssf.usermodel;
@@ -29,8 +29,10 @@ import org.apache.poi.hssf.HSSFTestDataSamples;
import org.apache.poi.hssf.model.Sheet;
import org.apache.poi.hssf.record.NameRecord;
import org.apache.poi.hssf.record.Record;
+import org.apache.poi.hssf.record.RecordFormatException;
import org.apache.poi.hssf.record.RecordInputStream;
import org.apache.poi.hssf.record.formula.Area3DPtg;
+import org.apache.poi.util.LittleEndian;
import org.apache.poi.util.TempFile;
/**
*
@@ -512,4 +514,17 @@ public final class TestHSSFWorkbook extends TestCase {
return 8;
}
}
- }
+
+ /**
+ * The sample file provided with bug 45582 seems to have one extra byte after the EOFRecord
+ */
+ public void testExtraDataAfterEOFRecord() {
+ try {
+ HSSFTestDataSamples.openSampleWorkbook("ex45582-22397.xls");
+ } catch (RecordFormatException e) {
+ if (e.getCause() instanceof LittleEndian.BufferUnderrunException) {
+ throw new AssertionFailedError("Identified bug 45582");
+ }
+ }
+ }
+}
diff --git a/src/testcases/org/apache/poi/hssf/usermodel/TestSanityChecker.java b/src/testcases/org/apache/poi/hssf/usermodel/TestSanityChecker.java
index d32c1a1b0..f2144700d 100644
--- a/src/testcases/org/apache/poi/hssf/usermodel/TestSanityChecker.java
+++ b/src/testcases/org/apache/poi/hssf/usermodel/TestSanityChecker.java
@@ -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,7 @@
See the License for the specific language governing permissions and
limitations under the License.
==================================================================== */
-
+
package org.apache.poi.hssf.usermodel;
import junit.framework.TestCase;
@@ -27,27 +26,20 @@ import java.util.ArrayList;
import org.apache.poi.hssf.record.*;
/**
+ * A Test case for a test utility class.
* Okay, this may seem strange but I need to test my test logic.
*
* @author Glen Stampoultzis (glens at apache.org)
*/
-public class TestSanityChecker
- extends TestCase
-{
- public TestSanityChecker( String s )
- {
- super( s );
- }
+public final class TestSanityChecker extends TestCase {
- public void testCheckRecordOrder()
- throws Exception
- {
+ public void testCheckRecordOrder() {
final SanityChecker c = new SanityChecker();
List records = new ArrayList();
records.add(new BOFRecord());
records.add(new InterfaceHdrRecord());
records.add(new BoundSheetRecord());
- records.add(new EOFRecord());
+ records.add(EOFRecord.instance);
final SanityChecker.CheckRecord[] check = {
new SanityChecker.CheckRecord(BOFRecord.class, '1'),
new SanityChecker.CheckRecord(InterfaceHdrRecord.class, '0'),
@@ -74,7 +66,7 @@ public class TestSanityChecker
records.add(new BOFRecord());
records.add(new BoundSheetRecord());
records.add(new InterfaceHdrRecord());
- records.add(new EOFRecord());
+ records.add(EOFRecord.instance);
c.checkRecordOrder(records, check);
}
});
@@ -88,7 +80,7 @@ public class TestSanityChecker
records.add(new InterfaceHdrRecord());
records.add(new BoundSheetRecord());
records.add(new InterfaceHdrRecord());
- records.add(new EOFRecord());
+ records.add(EOFRecord.instance);
c.checkRecordOrder(records, check);
}
});
@@ -101,7 +93,7 @@ public class TestSanityChecker
records.add(new BOFRecord());
records.add(new BoundSheetRecord());
records.add(new NameRecord());
- records.add(new EOFRecord());
+ records.add(EOFRecord.instance);
records.add(new NameRecord());
c.checkRecordOrder(records, check);
}
@@ -114,7 +106,7 @@ public class TestSanityChecker
List records = new ArrayList();
records.add(new InterfaceHdrRecord());
records.add(new BoundSheetRecord());
- records.add(new EOFRecord());
+ records.add(EOFRecord.instance);
c.checkRecordOrder(records, check);
}
});
@@ -126,7 +118,7 @@ public class TestSanityChecker
List records = new ArrayList();
records.add(new BOFRecord());
records.add(new InterfaceHdrRecord());
- records.add(new EOFRecord());
+ records.add(EOFRecord.instance);
c.checkRecordOrder(records, check);
}
});
@@ -139,7 +131,7 @@ public class TestSanityChecker
records.add(new InterfaceHdrRecord());
records.add(new BoundSheetRecord());
records.add(new BOFRecord());
- records.add(new EOFRecord());
+ records.add(EOFRecord.instance);
c.checkRecordOrder(records, check);
}
});
@@ -152,7 +144,7 @@ public class TestSanityChecker
records.add(new BOFRecord());
records.add(new BoundSheetRecord());
records.add(new InterfaceHdrRecord());
- records.add(new EOFRecord());
+ records.add(EOFRecord.instance);
c.checkRecordOrder(records, check);
}
});
diff --git a/src/testcases/org/apache/poi/util/TestLittleEndian.java b/src/testcases/org/apache/poi/util/TestLittleEndian.java
index 4ee659cc9..0ffcd189d 100644
--- a/src/testcases/org/apache/poi/util/TestLittleEndian.java
+++ b/src/testcases/org/apache/poi/util/TestLittleEndian.java
@@ -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.util;
@@ -31,79 +29,54 @@ import java.io.InputStream;
*
* @author Marc Johnson
*/
-
-public class TestLittleEndian
- extends TestCase
-{
-
- /**
- * Constructor TestLittleEndian
- *
- * @param name
- */
- public TestLittleEndian(String name)
- {
- super(name);
- }
+public final class TestLittleEndian extends TestCase {
/**
* test the getShort() method
*/
-
- public void testGetShort()
- {
+ public void testGetShort() {
byte[] testdata = new byte[ LittleEndian.SHORT_SIZE + 1 ];
- testdata[ 0 ] = 0x01;
- testdata[ 1 ] = ( byte ) 0xFF;
- testdata[ 2 ] = 0x02;
- short expected[] = new short[ 2 ];
+ testdata[0] = 0x01;
+ testdata[1] = (byte) 0xFF;
+ testdata[2] = 0x02;
+ short expected[] = new short[2];
- expected[ 0 ] = ( short ) 0xFF01;
- expected[ 1 ] = 0x02FF;
- assertEquals(expected[ 0 ], LittleEndian.getShort(testdata));
- assertEquals(expected[ 1 ], LittleEndian.getShort(testdata, 1));
+ expected[0] = ( short ) 0xFF01;
+ expected[1] = 0x02FF;
+ assertEquals(expected[0], LittleEndian.getShort(testdata));
+ assertEquals(expected[1], LittleEndian.getShort(testdata, 1));
}
- public void testGetUShort()
- {
- byte[] testdata = new byte[ LittleEndian.SHORT_SIZE + 1 ];
+ public void testGetUShort() {
+ byte[] testdata = {
+ (byte) 0x01,
+ (byte) 0xFF,
+ (byte) 0x02,
+ };
+ byte[] testdata2 = {
+ (byte) 0x0D,
+ (byte) 0x93,
+ (byte) 0xFF,
+ };
- testdata[ 0 ] = 0x01;
- testdata[ 1 ] = ( byte ) 0xFF;
- testdata[ 2 ] = 0x02;
-
- byte[] testdata2 = new byte[ LittleEndian.SHORT_SIZE + 1 ];
-
- testdata2[ 0 ] = 0x0D;
- testdata2[ 1 ] = ( byte )0x93;
- testdata2[ 2 ] = ( byte )0xFF;
-
- int expected[] = new int[ 4 ];
-
- expected[ 0 ] = 0xFF01;
- expected[ 1 ] = 0x02FF;
- expected[ 2 ] = 0x930D;
- expected[ 3 ] = 0xFF93;
- assertEquals(expected[ 0 ], LittleEndian.getUShort(testdata));
- assertEquals(expected[ 1 ], LittleEndian.getUShort(testdata, 1));
- assertEquals(expected[ 2 ], LittleEndian.getUShort(testdata2));
- assertEquals(expected[ 3 ], LittleEndian.getUShort(testdata2, 1));
+ int expected0 = 0xFF01;
+ int expected1 = 0x02FF;
+ int expected2 = 0x930D;
+ int expected3 = 0xFF93;
+ assertEquals(expected0, LittleEndian.getUShort(testdata));
+ assertEquals(expected1, LittleEndian.getUShort(testdata, 1));
+ assertEquals(expected2, LittleEndian.getUShort(testdata2));
+ assertEquals(expected3, LittleEndian.getUShort(testdata2, 1));
byte[] testdata3 = new byte[ LittleEndian.SHORT_SIZE + 1 ];
- LittleEndian.putShort(testdata3, 0, ( short ) expected[2] );
- LittleEndian.putShort(testdata3, 1, ( short ) expected[3] );
- assertEquals(testdata3[ 0 ], 0x0D);
- assertEquals(testdata3[ 1 ], (byte)0x93);
- assertEquals(testdata3[ 2 ], (byte)0xFF);
- assertEquals(expected[ 2 ], LittleEndian.getUShort(testdata3));
- assertEquals(expected[ 3 ], LittleEndian.getUShort(testdata3, 1));
- //System.out.println("TD[1][0]: "+LittleEndian.getUShort(testdata)+" expecting 65281");
- //System.out.println("TD[1][1]: "+LittleEndian.getUShort(testdata, 1)+" expecting 767");
- //System.out.println("TD[2][0]: "+LittleEndian.getUShort(testdata2)+" expecting 37645");
- //System.out.println("TD[2][1]: "+LittleEndian.getUShort(testdata2, 1)+" expecting 65427");
- //System.out.println("TD[3][0]: "+LittleEndian.getUShort(testdata3)+" expecting 37645");
- //System.out.println("TD[3][1]: "+LittleEndian.getUShort(testdata3, 1)+" expecting 65427");
+ LittleEndian.putUShort(testdata3, 0, expected2);
+ LittleEndian.putUShort(testdata3, 1, expected3);
+ assertEquals(testdata3[0], 0x0D);
+ assertEquals(testdata3[1], (byte)0x93);
+ assertEquals(testdata3[2], (byte)0xFF);
+ assertEquals(expected2, LittleEndian.getUShort(testdata3));
+ assertEquals(expected3, LittleEndian.getUShort(testdata3, 1));
}
@@ -123,19 +96,15 @@ public class TestLittleEndian
/**
* test the getDouble() method
*/
-
- public void testGetDouble()
- {
- assertEquals(_doubles[ 0 ], LittleEndian.getDouble(_double_array), 0.000001 );
- assertEquals(_doubles[ 1 ], LittleEndian.getDouble( _double_array, LittleEndian.DOUBLE_SIZE), 0.000001);
+ public void testGetDouble() {
+ assertEquals(_doubles[0], LittleEndian.getDouble(_double_array), 0.000001 );
+ assertEquals(_doubles[1], LittleEndian.getDouble( _double_array, LittleEndian.DOUBLE_SIZE), 0.000001);
assertTrue(Double.isNaN(LittleEndian.getDouble(_nan_double_array)));
double nan = LittleEndian.getDouble(_nan_double_array);
byte[] data = new byte[8];
LittleEndian.putDouble(data, nan);
- for ( int i = 0; i < data.length; i++ )
- {
- byte b = data[i];
+ for ( int i = 0; i < data.length; i++ ) {
assertEquals(data[i], _nan_double_array[i]);
}
}
@@ -143,192 +112,154 @@ public class TestLittleEndian
/**
* test the getInt() method
*/
+ public void testGetInt() {
+ // reading 4 byte data from a 5 byte buffer
+ byte[] testdata = {
+ (byte) 0x01,
+ (byte) 0xFF,
+ (byte) 0xFF,
+ (byte) 0xFF,
+ (byte) 0x02,
+ };
- public void testGetInt()
- {
- byte[] testdata = new byte[ LittleEndian.INT_SIZE + 1 ];
-
- testdata[ 0 ] = 0x01;
- testdata[ 1 ] = ( byte ) 0xFF;
- testdata[ 2 ] = ( byte ) 0xFF;
- testdata[ 3 ] = ( byte ) 0xFF;
- testdata[ 4 ] = 0x02;
- int expected[] = new int[ 2 ];
-
- expected[ 0 ] = 0xFFFFFF01;
- expected[ 1 ] = 0x02FFFFFF;
- assertEquals(expected[ 0 ], LittleEndian.getInt(testdata));
- assertEquals(expected[ 1 ], LittleEndian.getInt(testdata, 1));
+ assertEquals(0xFFFFFF01, LittleEndian.getInt(testdata));
+ assertEquals(0x02FFFFFF, LittleEndian.getInt(testdata, 1));
}
/**
* test the getLong method
*/
+ public void testGetLong() {
- public void testGetLong()
- {
- byte[] testdata = new byte[ LittleEndian.LONG_SIZE + 1 ];
+ // reading 8 byte values from a 9 byte buffer
+ byte[] testdata = {
+ (byte) 0x01,
+ (byte) 0xFF,
+ (byte) 0xFF,
+ (byte) 0xFF,
+ (byte) 0xFF,
+ (byte) 0xFF,
+ (byte) 0xFF,
+ (byte) 0xFF,
+ (byte) 0x02,
+ };
- testdata[ 0 ] = 0x01;
- testdata[ 1 ] = ( byte ) 0xFF;
- testdata[ 2 ] = ( byte ) 0xFF;
- testdata[ 3 ] = ( byte ) 0xFF;
- testdata[ 4 ] = ( byte ) 0xFF;
- testdata[ 5 ] = ( byte ) 0xFF;
- testdata[ 6 ] = ( byte ) 0xFF;
- testdata[ 7 ] = ( byte ) 0xFF;
- testdata[ 8 ] = 0x02;
- long expected[] = new long[ 2 ];
-
- expected[ 0 ] = 0xFFFFFFFFFFFFFF01L;
- expected[ 1 ] = 0x02FFFFFFFFFFFFFFL;
- assertEquals(expected[ 0 ], LittleEndian.getLong(testdata));
- assertEquals(expected[ 1 ], LittleEndian.getLong(testdata, 1));
+ assertEquals(0xFFFFFFFFFFFFFF01L, LittleEndian.getLong(testdata));
+ assertEquals(0x02FFFFFFFFFFFFFFL, LittleEndian.getLong(testdata, 1));
}
/**
* test the PutShort method
*/
-
- public void testPutShort()
- {
+ public void testPutShort() {
byte[] expected = new byte[ LittleEndian.SHORT_SIZE + 1 ];
- expected[ 0 ] = 0x01;
- expected[ 1 ] = ( byte ) 0xFF;
- expected[ 2 ] = 0x02;
+ expected[0] = 0x01;
+ expected[1] = (byte) 0xFF;
+ expected[2] = 0x02;
byte[] received = new byte[ LittleEndian.SHORT_SIZE + 1 ];
- short testdata[] = new short[ 2 ];
+ short testdata[] = new short[2];
- testdata[ 0 ] = ( short ) 0xFF01;
- testdata[ 1 ] = 0x02FF;
- LittleEndian.putShort(received, testdata[ 0 ]);
- assertTrue(ba_equivalent(received, expected, 0,
- LittleEndian.SHORT_SIZE));
- LittleEndian.putShort(received, 1, testdata[ 1 ]);
- assertTrue(ba_equivalent(received, expected, 1,
- LittleEndian.SHORT_SIZE));
+ testdata[0] = ( short ) 0xFF01;
+ testdata[1] = 0x02FF;
+ LittleEndian.putShort(received, testdata[0]);
+ assertTrue(compareByteArrays(received, expected, 0, LittleEndian.SHORT_SIZE));
+ LittleEndian.putShort(received, 1, testdata[1]);
+ assertTrue(compareByteArrays(received, expected, 1, LittleEndian.SHORT_SIZE));
}
/**
* test the putInt method
*/
+ public void testPutInt() {
+ // writing 4 byte data to a 5 byte buffer
+ byte[] expected = {
+ (byte) 0x01,
+ (byte) 0xFF,
+ (byte) 0xFF,
+ (byte) 0xFF,
+ (byte) 0x02,
+ };
+ byte[] received = new byte[ LittleEndian.INT_SIZE + 1 ];
- public void testPutInt()
- {
- byte[] expected = new byte[ LittleEndian.INT_SIZE + 1 ];
-
- expected[ 0 ] = 0x01;
- expected[ 1 ] = ( byte ) 0xFF;
- expected[ 2 ] = ( byte ) 0xFF;
- expected[ 3 ] = ( byte ) 0xFF;
- expected[ 4 ] = 0x02;
- byte[] received = new byte[ LittleEndian.INT_SIZE + 1 ];
- int testdata[] = new int[ 2 ];
-
- testdata[ 0 ] = 0xFFFFFF01;
- testdata[ 1 ] = 0x02FFFFFF;
- LittleEndian.putInt(received, testdata[ 0 ]);
- assertTrue(ba_equivalent(received, expected, 0,
- LittleEndian.INT_SIZE));
- LittleEndian.putInt(received, 1, testdata[ 1 ]);
- assertTrue(ba_equivalent(received, expected, 1,
- LittleEndian.INT_SIZE));
+ LittleEndian.putInt(received, 0xFFFFFF01);
+ assertTrue(compareByteArrays(received, expected, 0, LittleEndian.INT_SIZE));
+ LittleEndian.putInt(received, 1, 0x02FFFFFF);
+ assertTrue(compareByteArrays(received, expected, 1, LittleEndian.INT_SIZE));
}
/**
* test the putDouble methods
*/
-
- public void testPutDouble()
- {
+ public void testPutDouble() {
byte[] received = new byte[ LittleEndian.DOUBLE_SIZE + 1 ];
- LittleEndian.putDouble(received, _doubles[ 0 ]);
- assertTrue(ba_equivalent(received, _double_array, 0,
- LittleEndian.DOUBLE_SIZE));
- LittleEndian.putDouble(received, 1, _doubles[ 1 ]);
+ LittleEndian.putDouble(received, _doubles[0]);
+ assertTrue(compareByteArrays(received, _double_array, 0, LittleEndian.DOUBLE_SIZE));
+ LittleEndian.putDouble(received, 1, _doubles[1]);
byte[] expected = new byte[ LittleEndian.DOUBLE_SIZE + 1 ];
System.arraycopy(_double_array, LittleEndian.DOUBLE_SIZE, expected,
1, LittleEndian.DOUBLE_SIZE);
- assertTrue(ba_equivalent(received, expected, 1,
- LittleEndian.DOUBLE_SIZE));
+ assertTrue(compareByteArrays(received, expected, 1, LittleEndian.DOUBLE_SIZE));
}
/**
* test the putLong method
*/
-
- public void testPutLong()
- {
- byte[] expected = new byte[ LittleEndian.LONG_SIZE + 1 ];
-
- expected[ 0 ] = 0x01;
- expected[ 1 ] = ( byte ) 0xFF;
- expected[ 2 ] = ( byte ) 0xFF;
- expected[ 3 ] = ( byte ) 0xFF;
- expected[ 4 ] = ( byte ) 0xFF;
- expected[ 5 ] = ( byte ) 0xFF;
- expected[ 6 ] = ( byte ) 0xFF;
- expected[ 7 ] = ( byte ) 0xFF;
- expected[ 8 ] = 0x02;
+ public void testPutLong() {
+ // writing 8 byte values to a 9 byte buffer
+ byte[] expected = {
+ (byte) 0x01,
+ (byte) 0xFF,
+ (byte) 0xFF,
+ (byte) 0xFF,
+ (byte) 0xFF,
+ (byte) 0xFF,
+ (byte) 0xFF,
+ (byte) 0xFF,
+ (byte) 0x02,
+ };
byte[] received = new byte[ LittleEndian.LONG_SIZE + 1 ];
- long testdata[] = new long[ 2 ];
- testdata[ 0 ] = 0xFFFFFFFFFFFFFF01L;
- testdata[ 1 ] = 0x02FFFFFFFFFFFFFFL;
- LittleEndian.putLong(received, testdata[ 0 ]);
- assertTrue(ba_equivalent(received, expected, 0,
- LittleEndian.LONG_SIZE));
- LittleEndian.putLong(received, 1, testdata[ 1 ]);
- assertTrue(ba_equivalent(received, expected, 1,
- LittleEndian.LONG_SIZE));
+ long testdata0 = 0xFFFFFFFFFFFFFF01L;
+ long testdata1 = 0x02FFFFFFFFFFFFFFL;
+ LittleEndian.putLong(received, testdata0);
+ assertTrue(compareByteArrays(received, expected, 0, LittleEndian.LONG_SIZE));
+ LittleEndian.putLong(received, 1, testdata1);
+ assertTrue(compareByteArrays(received, expected, 1, LittleEndian.LONG_SIZE));
}
- private static byte[] _good_array =
- {
- 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01,
- 0x02, 0x01, 0x02, 0x01, 0x02
+ private static byte[] _good_array = {
+ 0x01, 0x02, 0x01, 0x02,
+ 0x01, 0x02, 0x01, 0x02,
+ 0x01, 0x02, 0x01, 0x02,
+ 0x01, 0x02, 0x01, 0x02,
};
- private static byte[] _bad_array =
- {
+ private static byte[] _bad_array = {
0x01
};
/**
* test the readShort method
*/
-
- public void testReadShort()
- throws IOException
- {
+ public void testReadShort() throws IOException {
short expected_value = 0x0201;
InputStream stream = new ByteArrayInputStream(_good_array);
int count = 0;
- while (true)
- {
+ while (stream.available() > 0) {
short value = LittleEndian.readShort(stream);
-
- if (value == 0)
- {
- break;
- }
assertEquals(value, expected_value);
count++;
}
assertEquals(count,
_good_array.length / LittleEndianConsts.SHORT_SIZE);
stream = new ByteArrayInputStream(_bad_array);
- try
- {
+ try {
LittleEndian.readShort(stream);
fail("Should have caught BufferUnderrunException");
- }
- catch (BufferUnderrunException ignored)
- {
-
+ } catch (BufferUnderrunException ignored) {
// as expected
}
}
@@ -336,34 +267,22 @@ public class TestLittleEndian
/**
* test the readInt method
*/
-
- public void testReadInt()
- throws IOException
- {
+ public void testReadInt() throws IOException {
int expected_value = 0x02010201;
InputStream stream = new ByteArrayInputStream(_good_array);
int count = 0;
- while (true)
- {
+ while (stream.available() > 0) {
int value = LittleEndian.readInt(stream);
-
- if (value == 0)
- {
- break;
- }
assertEquals(value, expected_value);
count++;
}
assertEquals(count, _good_array.length / LittleEndianConsts.INT_SIZE);
stream = new ByteArrayInputStream(_bad_array);
- try
- {
+ try {
LittleEndian.readInt(stream);
fail("Should have caught BufferUnderrunException");
- }
- catch (BufferUnderrunException ignored)
- {
+ } catch (BufferUnderrunException ignored) {
// as expected
}
@@ -372,104 +291,60 @@ public class TestLittleEndian
/**
* test the readLong method
*/
-
- public void testReadLong()
- throws IOException
- {
+ public void testReadLong() throws IOException {
long expected_value = 0x0201020102010201L;
InputStream stream = new ByteArrayInputStream(_good_array);
int count = 0;
- while (true)
- {
+ while (stream.available() > 0) {
long value = LittleEndian.readLong(stream);
-
- if (value == 0)
- {
- break;
- }
assertEquals(value, expected_value);
count++;
}
assertEquals(count,
_good_array.length / LittleEndianConsts.LONG_SIZE);
stream = new ByteArrayInputStream(_bad_array);
- try
- {
+ try {
LittleEndian.readLong(stream);
fail("Should have caught BufferUnderrunException");
- }
- catch (BufferUnderrunException ignored)
- {
-
+ } catch (BufferUnderrunException ignored) {
// as expected
}
}
- /**
- * test the readFromStream method
- */
+// public void testReadFromStream() throws IOException {
+// int actual;
+// actual = LittleEndian.readUShort(new ByteArrayInputStream(new byte[] { 5, -128, }));
+// assertEquals(32773, actual);
+//
+// actual = LittleEndian.readUShort(new ByteArrayInputStream(new byte[] { 1, 2, 3, 4, }));
+// assertEquals(513, actual);
+//
+// try {
+// LittleEndian.readInt(new ByteArrayInputStream(new byte[] { 1, 2, 3, }));
+// fail("Should have caught BufferUnderrunException");
+// } catch (BufferUnderrunException ignored) {
+// // as expected
+// }
+// }
- public void testReadFromStream()
- throws IOException
- {
- InputStream stream = new ByteArrayInputStream(_good_array);
- byte[] value = LittleEndian.readFromStream(stream,
- _good_array.length);
-
- assertTrue(ba_equivalent(value, _good_array, 0, _good_array.length));
- stream = new ByteArrayInputStream(_good_array);
- try
- {
- value = LittleEndian.readFromStream(stream,
- _good_array.length + 1);
- fail("Should have caught BufferUnderrunException");
- }
- catch (BufferUnderrunException ignored)
- {
-
- // as expected
- }
- }
-
- public void testUnsignedByteToInt()
- throws Exception
- {
+ public void testUnsignedByteToInt() {
assertEquals(255, LittleEndian.ubyteToInt((byte)255));
}
- private boolean ba_equivalent(byte [] received, byte [] expected,
- int offset, int size)
- {
- boolean result = true;
+ private static boolean compareByteArrays(byte [] received, byte [] expected,
+ int offset, int size) {
- for (int j = offset; j < offset + size; j++)
- {
- if (received[ j ] != expected[ j ])
- {
+ for (int j = offset; j < offset + size; j++) {
+ if (received[j] != expected[j]) {
System.out.println("difference at index " + j);
- result = false;
- break;
+ return false;
}
}
- return result;
+ return true;
}
- public void testUnsignedShort()
- throws Exception
- {
+ public void testUnsignedShort() {
assertEquals(0xffff, LittleEndian.getUShort(new byte[] { (byte)0xff, (byte)0xff }, 0));
}
-
- /**
- * main method to run the unit tests
- *
- * @param ignored_args
- */
-
- public static void main(String [] ignored_args)
- {
- System.out.println("Testing util.LittleEndian functionality");
- junit.textui.TestRunner.run(TestLittleEndian.class);
- }
}
diff --git a/src/testcases/org/apache/poi/util/TestLongField.java b/src/testcases/org/apache/poi/util/TestLongField.java
index 05ba965f9..a37e88ed3 100644
--- a/src/testcases/org/apache/poi/util/TestLongField.java
+++ b/src/testcases/org/apache/poi/util/TestLongField.java
@@ -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.util;
@@ -28,31 +26,13 @@ import java.io.*;
*
* @author Marc Johnson (mjohnson at apache dot org)
*/
-
-public class TestLongField
- extends TestCase
-{
-
- /**
- * Constructor
- *
- * @param name
- */
-
- public TestLongField(String name)
- {
- super(name);
- }
+public final class TestLongField extends TestCase {
static private final long[] _test_array =
{
Long.MIN_VALUE, -1L, 0L, 1L, Long.MAX_VALUE
};
- /**
- * Test constructors.
- */
-
public void testConstructors()
{
try
@@ -121,10 +101,6 @@ public class TestLongField
}
}
- /**
- * Test set() methods
- */
-
public void testSet()
{
LongField field = new LongField(0);
@@ -163,10 +139,6 @@ public class TestLongField
}
}
- /**
- * Test readFromBytes
- */
-
public void testReadFromBytes()
{
LongField field = new LongField(1);
@@ -198,12 +170,6 @@ public class TestLongField
}
}
- /**
- * Test readFromStream
- *
- * @exception IOException
- */
-
public void testReadFromStream()
throws IOException
{
@@ -212,8 +178,8 @@ public class TestLongField
for (int j = 0; j < _test_array.length; j++)
{
- buffer[ (j * 8) + 0 ] = ( byte ) (_test_array[ j ] % 256);
- buffer[ (j * 8) + 1 ] = ( byte ) ((_test_array[ j ] >> 8) % 256);
+ buffer[ (j * 8) + 0 ] = ( byte ) ((_test_array[ j ] >> 0) % 256);
+ buffer[ (j * 8) + 1 ] = ( byte ) ((_test_array[ j ] >> 8) % 256);
buffer[ (j * 8) + 2 ] = ( byte ) ((_test_array[ j ] >> 16) % 256);
buffer[ (j * 8) + 3 ] = ( byte ) ((_test_array[ j ] >> 24) % 256);
buffer[ (j * 8) + 4 ] = ( byte ) ((_test_array[ j ] >> 32) % 256);
@@ -230,10 +196,6 @@ public class TestLongField
}
}
- /**
- * test writeToBytes
- */
-
public void testWriteToBytes()
{
LongField field = new LongField(0);
@@ -256,16 +218,4 @@ public class TestLongField
assertEquals("testing ", _test_array[ j ], val);
}
}
-
- /**
- * Main
- *
- * @param args
- */
-
- public static void main(String [] args)
- {
- System.out.println("Testing util.LongField functionality");
- junit.textui.TestRunner.run(TestLongField.class);
- }
}