You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@poi.apache.org by ki...@apache.org on 2021/05/14 00:37:53 UTC
svn commit: r1889871 [11/17] - in /poi: site/src/documentation/content/xdocs/
site/src/documentation/content/xdocs/components/ trunk/ trunk/maven/
trunk/osgi/ trunk/osgi/src/test/java/org/apache/poi/osgi/
trunk/poi-examples/src/main/java/org/apache/poi...
Modified: poi/trunk/poi-scratchpad/src/test/java/org/apache/poi/hslf/record/TestInteractiveInfo.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi-scratchpad/src/test/java/org/apache/poi/hslf/record/TestInteractiveInfo.java?rev=1889871&r1=1889870&r2=1889871&view=diff
==============================================================================
--- poi/trunk/poi-scratchpad/src/test/java/org/apache/poi/hslf/record/TestInteractiveInfo.java (original)
+++ poi/trunk/poi-scratchpad/src/test/java/org/apache/poi/hslf/record/TestInteractiveInfo.java Fri May 14 00:37:50 2021
@@ -24,8 +24,7 @@ package org.apache.poi.hslf.record;
import static org.junit.jupiter.api.Assertions.assertArrayEquals;
import static org.junit.jupiter.api.Assertions.assertEquals;
-import java.io.ByteArrayOutputStream;
-
+import org.apache.commons.io.output.UnsynchronizedByteArrayOutputStream;
import org.junit.jupiter.api.Test;
/**
@@ -57,7 +56,7 @@ public class TestInteractiveInfo {
@Test
void testWrite() throws Exception {
InteractiveInfo ii = new InteractiveInfo(data_a, 0, data_a.length);
- ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ UnsynchronizedByteArrayOutputStream baos = new UnsynchronizedByteArrayOutputStream();
ii.writeOut(baos);
assertArrayEquals(data_a, baos.toByteArray());
}
@@ -75,7 +74,7 @@ public class TestInteractiveInfo {
ia.setHyperlinkType((byte)8);
// Check it's now the same as a
- ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ UnsynchronizedByteArrayOutputStream baos = new UnsynchronizedByteArrayOutputStream();
ii.writeOut(baos);
assertArrayEquals(data_a, baos.toByteArray());
}
Modified: poi/trunk/poi-scratchpad/src/test/java/org/apache/poi/hslf/record/TestInteractiveInfoAtom.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi-scratchpad/src/test/java/org/apache/poi/hslf/record/TestInteractiveInfoAtom.java?rev=1889871&r1=1889870&r2=1889871&view=diff
==============================================================================
--- poi/trunk/poi-scratchpad/src/test/java/org/apache/poi/hslf/record/TestInteractiveInfoAtom.java (original)
+++ poi/trunk/poi-scratchpad/src/test/java/org/apache/poi/hslf/record/TestInteractiveInfoAtom.java Fri May 14 00:37:50 2021
@@ -21,8 +21,7 @@ package org.apache.poi.hslf.record;
import static org.junit.jupiter.api.Assertions.assertArrayEquals;
import static org.junit.jupiter.api.Assertions.assertEquals;
-import java.io.ByteArrayOutputStream;
-
+import org.apache.commons.io.output.UnsynchronizedByteArrayOutputStream;
import org.junit.jupiter.api.Test;
/**
@@ -74,7 +73,7 @@ public class TestInteractiveInfoAtom {
@Test
void testWrite() throws Exception {
InteractiveInfoAtom ia = new InteractiveInfoAtom(data_a, 0, data_a.length);
- ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ UnsynchronizedByteArrayOutputStream baos = new UnsynchronizedByteArrayOutputStream();
ia.writeOut(baos);
assertArrayEquals(data_a, baos.toByteArray());
}
@@ -91,7 +90,7 @@ public class TestInteractiveInfoAtom {
ia.setHyperlinkType((byte)8);
// Check it's now the same as a
- ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ UnsynchronizedByteArrayOutputStream baos = new UnsynchronizedByteArrayOutputStream();
ia.writeOut(baos);
assertArrayEquals(data_a, baos.toByteArray());
}
@@ -105,7 +104,7 @@ public class TestInteractiveInfoAtom {
ia.setHyperlinkID(4);
// Check bytes are now the same
- ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ UnsynchronizedByteArrayOutputStream baos = new UnsynchronizedByteArrayOutputStream();
ia.writeOut(baos);
assertArrayEquals(data_b, baos.toByteArray());
}
Modified: poi/trunk/poi-scratchpad/src/test/java/org/apache/poi/hslf/record/TestNotesAtom.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi-scratchpad/src/test/java/org/apache/poi/hslf/record/TestNotesAtom.java?rev=1889871&r1=1889870&r2=1889871&view=diff
==============================================================================
--- poi/trunk/poi-scratchpad/src/test/java/org/apache/poi/hslf/record/TestNotesAtom.java (original)
+++ poi/trunk/poi-scratchpad/src/test/java/org/apache/poi/hslf/record/TestNotesAtom.java Fri May 14 00:37:50 2021
@@ -22,8 +22,7 @@ import static org.junit.jupiter.api.Asse
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertFalse;
-import java.io.ByteArrayOutputStream;
-
+import org.apache.commons.io.output.UnsynchronizedByteArrayOutputStream;
import org.junit.jupiter.api.Test;
/**
@@ -52,7 +51,7 @@ public final class TestNotesAtom {
@Test
void testWrite() throws Exception {
NotesAtom na = new NotesAtom(data_a, 0, data_a.length);
- ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ UnsynchronizedByteArrayOutputStream baos = new UnsynchronizedByteArrayOutputStream();
na.writeOut(baos);
assertArrayEquals(data_a, baos.toByteArray());
}
Modified: poi/trunk/poi-scratchpad/src/test/java/org/apache/poi/hslf/record/TestSlideAtom.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi-scratchpad/src/test/java/org/apache/poi/hslf/record/TestSlideAtom.java?rev=1889871&r1=1889870&r2=1889871&view=diff
==============================================================================
--- poi/trunk/poi-scratchpad/src/test/java/org/apache/poi/hslf/record/TestSlideAtom.java (original)
+++ poi/trunk/poi-scratchpad/src/test/java/org/apache/poi/hslf/record/TestSlideAtom.java Fri May 14 00:37:50 2021
@@ -22,9 +22,9 @@ import static org.junit.jupiter.api.Asse
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertTrue;
-import java.io.ByteArrayOutputStream;
import java.io.IOException;
+import org.apache.commons.io.output.UnsynchronizedByteArrayOutputStream;
import org.apache.poi.hslf.HSLFTestDataSamples;
import org.apache.poi.hslf.record.SlideAtomLayout.SlideLayoutType;
import org.apache.poi.hslf.usermodel.HSLFSlide;
@@ -43,7 +43,7 @@ public final class TestSlideAtom {
@Test
void testRecordType() {
SlideAtom sa = new SlideAtom(data_a, 0, data_a.length);
- assertEquals(1007l, sa.getRecordType());
+ assertEquals(1007L, sa.getRecordType());
}
@Test
@@ -75,23 +75,23 @@ public final class TestSlideAtom {
@Test
void testWrite() throws IOException {
SlideAtom sa = new SlideAtom(data_a, 0, data_a.length);
- ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ UnsynchronizedByteArrayOutputStream baos = new UnsynchronizedByteArrayOutputStream();
sa.writeOut(baos);
assertArrayEquals(data_a, baos.toByteArray());
}
@Test
void testSSSlideInfoAtom() throws IOException {
- HSLFSlideShow ss1 = new HSLFSlideShow();
- HSLFSlide slide1 = ss1.createSlide(), slide2 = ss1.createSlide();
- slide2.setHidden(true);
-
- HSLFSlideShow ss2 = HSLFTestDataSamples.writeOutAndReadBack(ss1);
- slide1 = ss2.getSlides().get(0);
- slide2 = ss2.getSlides().get(1);
- assertFalse(slide1.isHidden());
- assertTrue(slide2.isHidden());
- ss2.close();
- ss1.close();
+ try (HSLFSlideShow ppt1 = new HSLFSlideShow()) {
+ HSLFSlide slide1 = ppt1.createSlide(), slide2 = ppt1.createSlide();
+ slide2.setHidden(true);
+
+ try (HSLFSlideShow ppt2 = HSLFTestDataSamples.writeOutAndReadBack(ppt1)) {
+ slide1 = ppt2.getSlides().get(0);
+ slide2 = ppt2.getSlides().get(1);
+ assertFalse(slide1.isHidden());
+ assertTrue(slide2.isHidden());
+ }
+ }
}
}
Modified: poi/trunk/poi-scratchpad/src/test/java/org/apache/poi/hslf/record/TestSlidePersistAtom.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi-scratchpad/src/test/java/org/apache/poi/hslf/record/TestSlidePersistAtom.java?rev=1889871&r1=1889870&r2=1889871&view=diff
==============================================================================
--- poi/trunk/poi-scratchpad/src/test/java/org/apache/poi/hslf/record/TestSlidePersistAtom.java (original)
+++ poi/trunk/poi-scratchpad/src/test/java/org/apache/poi/hslf/record/TestSlidePersistAtom.java Fri May 14 00:37:50 2021
@@ -22,8 +22,7 @@ import static org.junit.jupiter.api.Asse
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertTrue;
-import java.io.ByteArrayOutputStream;
-
+import org.apache.commons.io.output.UnsynchronizedByteArrayOutputStream;
import org.junit.jupiter.api.Test;
/**
@@ -53,7 +52,7 @@ public final class TestSlidePersistAtom
@Test
void testWrite() throws Exception {
SlidePersistAtom spa = new SlidePersistAtom(data_a, 0, data_a.length);
- ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ UnsynchronizedByteArrayOutputStream baos = new UnsynchronizedByteArrayOutputStream();
spa.writeOut(baos);
assertArrayEquals(data_a, baos.toByteArray());
}
Modified: poi/trunk/poi-scratchpad/src/test/java/org/apache/poi/hslf/record/TestStyleTextPropAtom.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi-scratchpad/src/test/java/org/apache/poi/hslf/record/TestStyleTextPropAtom.java?rev=1889871&r1=1889870&r2=1889871&view=diff
==============================================================================
--- poi/trunk/poi-scratchpad/src/test/java/org/apache/poi/hslf/record/TestStyleTextPropAtom.java (original)
+++ poi/trunk/poi-scratchpad/src/test/java/org/apache/poi/hslf/record/TestStyleTextPropAtom.java Fri May 14 00:37:50 2021
@@ -26,15 +26,14 @@ import static org.junit.jupiter.api.Asse
import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.junit.jupiter.api.Assertions.assertTrue;
-import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.List;
+import org.apache.commons.io.output.UnsynchronizedByteArrayOutputStream;
import org.apache.poi.hslf.exceptions.HSLFException;
import org.apache.poi.hslf.model.textproperties.CharFlagsTextProp;
import org.apache.poi.hslf.model.textproperties.TextProp;
import org.apache.poi.hslf.model.textproperties.TextPropCollection;
-import org.apache.poi.util.HexDump;
import org.junit.jupiter.api.Test;
/**
@@ -467,14 +466,9 @@ public final class TestStyleTextPropAtom
tpc.setValue(0xFE0033FF);
// Should now be the same as data_a
- ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ UnsynchronizedByteArrayOutputStream baos = new UnsynchronizedByteArrayOutputStream();
stpa.writeOut(baos);
- byte[] b = baos.toByteArray();
-
- assertEquals(data_a.length, b.length);
- for(int i=0; i<data_a.length; i++) {
- assertEquals(data_a[i],b[i]);
- }
+ assertArrayEquals(data_a, baos.toByteArray());
}
/**
@@ -621,34 +615,20 @@ public final class TestStyleTextPropAtom
assertEquals(tpa.getValue(), tpb.getValue());
}
- ByteArrayOutputStream ba = new ByteArrayOutputStream();
- ByteArrayOutputStream bb = new ByteArrayOutputStream();
+ UnsynchronizedByteArrayOutputStream ba = new UnsynchronizedByteArrayOutputStream();
+ UnsynchronizedByteArrayOutputStream bb = new UnsynchronizedByteArrayOutputStream();
ca.writeOut(ba);
cb.writeOut(bb);
- byte[] cab = ba.toByteArray();
- byte[] cbb = bb.toByteArray();
- assertEquals(cbb.length, cab.length);
- for(int j=0; j<cab.length; j++) {
- //System.out.println("On tp " + z + " " + i + " " + j + "\t" + cab[j] + "\t" + cbb[j]);
- assertEquals(cbb[j], cab[j]);
- }
+ assertArrayEquals(bb.toByteArray(), ba.toByteArray());
}
}
-
-
// Check byte level with b
- ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ UnsynchronizedByteArrayOutputStream baos = new UnsynchronizedByteArrayOutputStream();
stpa.writeOut(baos);
- byte[] b = baos.toByteArray();
-
- assertEquals(data_b.length, b.length);
- for(int i=0; i<data_b.length; i++) {
- //System.out.println(i + "\t" + b[i] + "\t" + data_b[i] + "\t" + Integer.toHexString(b[i]) );
- assertEquals(data_b[i],b[i]);
- }
+ assertArrayEquals(data_b, baos.toByteArray());
}
@Test
@@ -694,13 +674,9 @@ public final class TestStyleTextPropAtom
StyleTextPropAtom stpb = new StyleTextPropAtom(data, 0,data.length);
if(textlen != -1) stpb.setParentTextSize(textlen);
- ByteArrayOutputStream out = new ByteArrayOutputStream();
+ UnsynchronizedByteArrayOutputStream out = new UnsynchronizedByteArrayOutputStream();
stpb.writeOut(out);
- byte[] bytes = out.toByteArray();
-
- assertEquals(expected.length, bytes.length);
- assertArrayEquals(expected, bytes,
- "Had: " + HexDump.toHex(expected) + "\nand: " + HexDump.toHex(bytes));
+ assertArrayEquals(expected, out.toByteArray());
}
@Test
@@ -759,12 +735,14 @@ public final class TestStyleTextPropAtom
*
* From the test file attached to the bug:
*
+ * {@code
* <StyleTextPropAtom info="0" type="4001" size="94" offset="114782" header="00 00 A1 0F 5E 00 00 00 ">
* 14 00 00 00 00 00 41 00 0A 00 06 00 50 00 07 00 01 00 00 00 00 00 00 00 02
* 00 00 00 01 04 00 00 01 04 01 00 00 00 01 08 00 00 01 08 0C 00 00 00 01 0C
* 00 00 01 0C 01 00 00 00 01 10 00 00 01 10 01 00 00 00 01 14 00 00 01 14 01
* 00 00 00 01 18 00 00 01 18 01 00 00 00 01 1C 00 00 01 1C
* </StyleTextPropAtom>
+ * }
*/
@Test
void test45815() throws IOException {
Modified: poi/trunk/poi-scratchpad/src/test/java/org/apache/poi/hslf/record/TestTextBytesAtom.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi-scratchpad/src/test/java/org/apache/poi/hslf/record/TestTextBytesAtom.java?rev=1889871&r1=1889870&r2=1889871&view=diff
==============================================================================
--- poi/trunk/poi-scratchpad/src/test/java/org/apache/poi/hslf/record/TestTextBytesAtom.java (original)
+++ poi/trunk/poi-scratchpad/src/test/java/org/apache/poi/hslf/record/TestTextBytesAtom.java Fri May 14 00:37:50 2021
@@ -21,9 +21,9 @@ package org.apache.poi.hslf.record;
import static org.junit.jupiter.api.Assertions.assertArrayEquals;
import static org.junit.jupiter.api.Assertions.assertEquals;
-import java.io.ByteArrayOutputStream;
import java.nio.charset.StandardCharsets;
+import org.apache.commons.io.output.UnsynchronizedByteArrayOutputStream;
import org.junit.jupiter.api.Test;
/**
@@ -64,7 +64,7 @@ public final class TestTextBytesAtom {
TextBytesAtom tba = new TextBytesAtom(data,0,data.length);
tba.setText(alt_text.getBytes(StandardCharsets.ISO_8859_1));
- ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ UnsynchronizedByteArrayOutputStream baos = new UnsynchronizedByteArrayOutputStream();
tba.writeOut(baos);
assertArrayEquals(alt_data, baos.toByteArray());
}
@@ -72,7 +72,7 @@ public final class TestTextBytesAtom {
@Test
void testWrite() throws Exception {
TextBytesAtom tba = new TextBytesAtom(data,0,data.length);
- ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ UnsynchronizedByteArrayOutputStream baos = new UnsynchronizedByteArrayOutputStream();
tba.writeOut(baos);
assertArrayEquals(data, baos.toByteArray());
}
Modified: poi/trunk/poi-scratchpad/src/test/java/org/apache/poi/hslf/record/TestTextCharsAtom.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi-scratchpad/src/test/java/org/apache/poi/hslf/record/TestTextCharsAtom.java?rev=1889871&r1=1889870&r2=1889871&view=diff
==============================================================================
--- poi/trunk/poi-scratchpad/src/test/java/org/apache/poi/hslf/record/TestTextCharsAtom.java (original)
+++ poi/trunk/poi-scratchpad/src/test/java/org/apache/poi/hslf/record/TestTextCharsAtom.java Fri May 14 00:37:50 2021
@@ -21,8 +21,7 @@ package org.apache.poi.hslf.record;
import static org.junit.jupiter.api.Assertions.assertArrayEquals;
import static org.junit.jupiter.api.Assertions.assertEquals;
-import java.io.ByteArrayOutputStream;
-
+import org.apache.commons.io.output.UnsynchronizedByteArrayOutputStream;
import org.junit.jupiter.api.Test;
/**
@@ -60,7 +59,7 @@ public final class TestTextCharsAtom {
TextCharsAtom tca = new TextCharsAtom(data,0,data.length);
tca.setText(alt_text);
- ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ UnsynchronizedByteArrayOutputStream baos = new UnsynchronizedByteArrayOutputStream();
tca.writeOut(baos);
assertArrayEquals(alt_data, baos.toByteArray());
}
@@ -68,7 +67,7 @@ public final class TestTextCharsAtom {
@Test
void testWrite() throws Exception {
TextCharsAtom tca = new TextCharsAtom(data,0,data.length);
- ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ UnsynchronizedByteArrayOutputStream baos = new UnsynchronizedByteArrayOutputStream();
tca.writeOut(baos);
assertArrayEquals(data, baos.toByteArray());
}
@@ -82,7 +81,7 @@ public final class TestTextCharsAtom {
assertEquals(data_text, tca.getText());
// Check it's now like data
- ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ UnsynchronizedByteArrayOutputStream baos = new UnsynchronizedByteArrayOutputStream();
tca.writeOut(baos);
assertArrayEquals(data, baos.toByteArray());
}
Modified: poi/trunk/poi-scratchpad/src/test/java/org/apache/poi/hslf/record/TestTextHeaderAtom.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi-scratchpad/src/test/java/org/apache/poi/hslf/record/TestTextHeaderAtom.java?rev=1889871&r1=1889870&r2=1889871&view=diff
==============================================================================
--- poi/trunk/poi-scratchpad/src/test/java/org/apache/poi/hslf/record/TestTextHeaderAtom.java (original)
+++ poi/trunk/poi-scratchpad/src/test/java/org/apache/poi/hslf/record/TestTextHeaderAtom.java Fri May 14 00:37:50 2021
@@ -21,8 +21,7 @@ package org.apache.poi.hslf.record;
import static org.junit.jupiter.api.Assertions.assertArrayEquals;
import static org.junit.jupiter.api.Assertions.assertEquals;
-import java.io.ByteArrayOutputStream;
-
+import org.apache.commons.io.output.UnsynchronizedByteArrayOutputStream;
import org.apache.poi.sl.usermodel.TextShape.TextPlaceholder;
import org.junit.jupiter.api.Test;
@@ -54,7 +53,7 @@ public final class TestTextHeaderAtom {
@Test
void testWrite() throws Exception {
TextHeaderAtom tha = new TextHeaderAtom(notes_data,0,12);
- ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ UnsynchronizedByteArrayOutputStream baos = new UnsynchronizedByteArrayOutputStream();
tha.writeOut(baos);
assertArrayEquals(notes_data, baos.toByteArray());
}
Modified: poi/trunk/poi-scratchpad/src/test/java/org/apache/poi/hslf/record/TestTextRulerAtom.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi-scratchpad/src/test/java/org/apache/poi/hslf/record/TestTextRulerAtom.java?rev=1889871&r1=1889870&r2=1889871&view=diff
==============================================================================
--- poi/trunk/poi-scratchpad/src/test/java/org/apache/poi/hslf/record/TestTextRulerAtom.java (original)
+++ poi/trunk/poi-scratchpad/src/test/java/org/apache/poi/hslf/record/TestTextRulerAtom.java Fri May 14 00:37:50 2021
@@ -21,9 +21,9 @@ import static org.junit.jupiter.api.Asse
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNotNull;
-import java.io.ByteArrayOutputStream;
import java.util.List;
+import org.apache.commons.io.output.UnsynchronizedByteArrayOutputStream;
import org.apache.poi.hslf.model.textproperties.HSLFTabStop;
import org.junit.jupiter.api.Test;
@@ -61,7 +61,7 @@ public final class TestTextRulerAtom {
@Test
void testWriteRuler() throws Exception {
TextRulerAtom ruler = new TextRulerAtom(data_1, 0, data_1.length);
- ByteArrayOutputStream out = new ByteArrayOutputStream();
+ UnsynchronizedByteArrayOutputStream out = new UnsynchronizedByteArrayOutputStream();
ruler.writeOut(out);
byte[] result = out.toByteArray();
@@ -72,7 +72,7 @@ public final class TestTextRulerAtom {
void testRead2() throws Exception {
TextRulerAtom ruler = TextRulerAtom.getParagraphInstance();
ruler.setParagraphIndent((short)249, (short)321);
- ByteArrayOutputStream out = new ByteArrayOutputStream();
+ UnsynchronizedByteArrayOutputStream out = new UnsynchronizedByteArrayOutputStream();
ruler.writeOut(out);
byte[] result = out.toByteArray();
Modified: poi/trunk/poi-scratchpad/src/test/java/org/apache/poi/hslf/record/TestTextSpecInfoAtom.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi-scratchpad/src/test/java/org/apache/poi/hslf/record/TestTextSpecInfoAtom.java?rev=1889871&r1=1889870&r2=1889871&view=diff
==============================================================================
--- poi/trunk/poi-scratchpad/src/test/java/org/apache/poi/hslf/record/TestTextSpecInfoAtom.java (original)
+++ poi/trunk/poi-scratchpad/src/test/java/org/apache/poi/hslf/record/TestTextSpecInfoAtom.java Fri May 14 00:37:50 2021
@@ -20,8 +20,7 @@ package org.apache.poi.hslf.record;
import static org.junit.jupiter.api.Assertions.assertArrayEquals;
import static org.junit.jupiter.api.Assertions.assertEquals;
-import java.io.ByteArrayOutputStream;
-
+import org.apache.commons.io.output.UnsynchronizedByteArrayOutputStream;
import org.junit.jupiter.api.Test;
/**
@@ -54,7 +53,7 @@ public final class TestTextSpecInfoAtom
@Test
void testWrite() throws Exception {
TextSpecInfoAtom spec = new TextSpecInfoAtom(data_1, 0, data_1.length);
- ByteArrayOutputStream out = new ByteArrayOutputStream();
+ UnsynchronizedByteArrayOutputStream out = new UnsynchronizedByteArrayOutputStream();
spec.writeOut(out);
assertArrayEquals(data_1, out.toByteArray());
}
@@ -70,7 +69,7 @@ public final class TestTextSpecInfoAtom
assertEquals(32, run[0].getLength());
//serialize and read again
- ByteArrayOutputStream out = new ByteArrayOutputStream();
+ UnsynchronizedByteArrayOutputStream out = new UnsynchronizedByteArrayOutputStream();
spec.writeOut(out);
byte[] result = out.toByteArray();
Modified: poi/trunk/poi-scratchpad/src/test/java/org/apache/poi/hslf/record/TestTxInteractiveInfoAtom.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi-scratchpad/src/test/java/org/apache/poi/hslf/record/TestTxInteractiveInfoAtom.java?rev=1889871&r1=1889870&r2=1889871&view=diff
==============================================================================
--- poi/trunk/poi-scratchpad/src/test/java/org/apache/poi/hslf/record/TestTxInteractiveInfoAtom.java (original)
+++ poi/trunk/poi-scratchpad/src/test/java/org/apache/poi/hslf/record/TestTxInteractiveInfoAtom.java Fri May 14 00:37:50 2021
@@ -21,8 +21,7 @@ package org.apache.poi.hslf.record;
import static org.junit.jupiter.api.Assertions.assertArrayEquals;
import static org.junit.jupiter.api.Assertions.assertEquals;
-import java.io.ByteArrayOutputStream;
-
+import org.apache.commons.io.output.UnsynchronizedByteArrayOutputStream;
import org.junit.jupiter.api.Test;
/**
@@ -58,7 +57,7 @@ public final class TestTxInteractiveInfo
@Test
void testWrite() throws Exception {
TxInteractiveInfoAtom atom = new TxInteractiveInfoAtom(data_a, 0, data_a.length);
- ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ UnsynchronizedByteArrayOutputStream baos = new UnsynchronizedByteArrayOutputStream();
atom.writeOut(baos);
assertArrayEquals(data_a, baos.toByteArray());
}
@@ -73,7 +72,7 @@ public final class TestTxInteractiveInfo
ia.setEndIndex(56);
// Check it's now the same as a
- ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ UnsynchronizedByteArrayOutputStream baos = new UnsynchronizedByteArrayOutputStream();
ia.writeOut(baos);
assertArrayEquals(data_a, baos.toByteArray());
}
@@ -88,7 +87,7 @@ public final class TestTxInteractiveInfo
ia.setEndIndex(78);
// Check bytes are now the same
- ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ UnsynchronizedByteArrayOutputStream baos = new UnsynchronizedByteArrayOutputStream();
ia.writeOut(baos);
assertArrayEquals(data_b, baos.toByteArray());
}
Modified: poi/trunk/poi-scratchpad/src/test/java/org/apache/poi/hslf/record/TestUserEditAtom.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi-scratchpad/src/test/java/org/apache/poi/hslf/record/TestUserEditAtom.java?rev=1889871&r1=1889870&r2=1889871&view=diff
==============================================================================
--- poi/trunk/poi-scratchpad/src/test/java/org/apache/poi/hslf/record/TestUserEditAtom.java (original)
+++ poi/trunk/poi-scratchpad/src/test/java/org/apache/poi/hslf/record/TestUserEditAtom.java Fri May 14 00:37:50 2021
@@ -21,8 +21,7 @@ package org.apache.poi.hslf.record;
import static org.junit.jupiter.api.Assertions.assertArrayEquals;
import static org.junit.jupiter.api.Assertions.assertEquals;
-import java.io.ByteArrayOutputStream;
-
+import org.apache.commons.io.output.UnsynchronizedByteArrayOutputStream;
import org.junit.jupiter.api.Test;
/**
@@ -57,7 +56,7 @@ public final class TestUserEditAtom {
@Test
void testWrite() throws Exception {
UserEditAtom uea = new UserEditAtom(data_a, 0, data_a.length);
- ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ UnsynchronizedByteArrayOutputStream baos = new UnsynchronizedByteArrayOutputStream();
uea.writeOut(baos);
assertArrayEquals(data_a, baos.toByteArray());
}
Modified: poi/trunk/poi-scratchpad/src/test/java/org/apache/poi/hslf/usermodel/TestHSLFSlideShow.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi-scratchpad/src/test/java/org/apache/poi/hslf/usermodel/TestHSLFSlideShow.java?rev=1889871&r1=1889870&r2=1889871&view=diff
==============================================================================
--- poi/trunk/poi-scratchpad/src/test/java/org/apache/poi/hslf/usermodel/TestHSLFSlideShow.java (original)
+++ poi/trunk/poi-scratchpad/src/test/java/org/apache/poi/hslf/usermodel/TestHSLFSlideShow.java Fri May 14 00:37:50 2021
@@ -18,10 +18,10 @@ package org.apache.poi.hslf.usermodel;
import static org.junit.jupiter.api.Assertions.assertNotNull;
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
import java.io.IOException;
+import java.io.InputStream;
+import org.apache.commons.io.output.UnsynchronizedByteArrayOutputStream;
import org.apache.poi.sl.usermodel.BaseTestSlideShow;
import org.apache.poi.sl.usermodel.SlideShow;
import org.junit.jupiter.api.Test;
@@ -38,15 +38,13 @@ public class TestHSLFSlideShow extends B
assertNotNull(createSlideShow());
}
+ @Override
public HSLFSlideShow reopen(SlideShow<HSLFShape, HSLFTextParagraph> show) throws IOException {
- BufAccessBAOS bos = new BufAccessBAOS();
- show.write(bos);
- return new HSLFSlideShow(new ByteArrayInputStream(bos.getBuf()));
- }
-
- private static class BufAccessBAOS extends ByteArrayOutputStream {
- byte[] getBuf() {
- return buf;
+ try (UnsynchronizedByteArrayOutputStream bos = new UnsynchronizedByteArrayOutputStream()) {
+ show.write(bos);
+ try (InputStream is = bos.toInputStream()) {
+ return new HSLFSlideShow(is);
+ }
}
}
}
Modified: poi/trunk/poi-scratchpad/src/test/java/org/apache/poi/hslf/usermodel/TestPictures.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi-scratchpad/src/test/java/org/apache/poi/hslf/usermodel/TestPictures.java?rev=1889871&r1=1889870&r2=1889871&view=diff
==============================================================================
--- poi/trunk/poi-scratchpad/src/test/java/org/apache/poi/hslf/usermodel/TestPictures.java (original)
+++ poi/trunk/poi-scratchpad/src/test/java/org/apache/poi/hslf/usermodel/TestPictures.java Fri May 14 00:37:50 2021
@@ -17,13 +17,18 @@
package org.apache.poi.hslf.usermodel;
+import static org.apache.commons.io.output.NullOutputStream.NULL_OUTPUT_STREAM;
+import static org.apache.poi.hslf.HSLFTestDataSamples.getSlideShow;
+import static org.apache.poi.hslf.HSLFTestDataSamples.writeOutAndReadBack;
import static org.junit.jupiter.api.Assertions.assertArrayEquals;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.junit.jupiter.api.Assertions.fail;
import java.awt.Dimension;
+import java.awt.geom.Dimension2D;
+import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.net.URL;
import java.util.Arrays;
@@ -31,12 +36,13 @@ import java.util.Collections;
import java.util.List;
import java.util.Random;
+import javax.imageio.ImageIO;
+
+import org.apache.commons.io.output.CountingOutputStream;
import org.apache.poi.POIDataSamples;
import org.apache.poi.ddf.EscherBSERecord;
import org.apache.poi.ddf.EscherContainerRecord;
import org.apache.poi.ddf.EscherRecord;
-import org.apache.poi.hslf.HSLFTestDataSamples;
-import org.apache.poi.hslf.blip.DIB;
import org.apache.poi.hslf.blip.EMF;
import org.apache.poi.hslf.blip.JPEG;
import org.apache.poi.hslf.blip.PICT;
@@ -50,6 +56,8 @@ import org.apache.poi.sl.usermodel.Pictu
import org.apache.poi.util.Units;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.CsvSource;
/**
* Test adding/reading pictures
@@ -58,302 +66,101 @@ public final class TestPictures {
private static final POIDataSamples slTests = POIDataSamples.getSlideShowInstance();
/**
- * Test read/write Macintosh PICT
- */
- @Test
- void testPICT() throws IOException {
- HSLFSlideShow ppt = new HSLFSlideShow();
-
- HSLFSlide slide = ppt.createSlide();
- byte[] src_bytes = slTests.readFile("cow.pict");
- HSLFPictureData data = ppt.addPicture(src_bytes, PictureType.PICT);
- ImageHeaderPICT nHeader = new ImageHeaderPICT(src_bytes, 512);
- final int expWidth = 197, expHeight = 137;
- Dimension nDim = nHeader.getSize();
- assertEquals(expWidth, nDim.getWidth(), 0);
- assertEquals(expHeight, nDim.getHeight(), 0);
-
- Dimension dim = data.getImageDimensionInPixels();
- assertEquals(Units.pointsToPixel(expWidth), dim.getWidth(), 0);
- assertEquals(Units.pointsToPixel(expHeight), dim.getHeight(), 0);
-
- HSLFPictureShape pict = new HSLFPictureShape(data);
- assertEquals(data.getIndex(), pict.getPictureIndex());
- slide.addShape(pict);
-
- //serialize and read again
- ByteArrayOutputStream out = new ByteArrayOutputStream();
- ppt.write(out);
- out.close();
-
- ppt = new HSLFSlideShow(new HSLFSlideShowImpl(new ByteArrayInputStream(out.toByteArray())));
-
- //make sure we can read this picture shape and it refers to the correct picture data
- List<HSLFShape> sh = ppt.getSlides().get(0).getShapes();
- assertEquals(1, sh.size());
- pict = (HSLFPictureShape)sh.get(0);
- assertEquals(data.getIndex(), pict.getPictureIndex());
-
- //check picture data
- List<HSLFPictureData> pictures = ppt.getPictureData();
- assertEquals(1, pictures.size());
-
- HSLFPictureData pd = pictures.get(0);
- dim = pd.getImageDimension();
- assertEquals(expWidth, dim.width);
- assertEquals(expHeight, dim.height);
-
- //the Picture shape refers to the PictureData object in the Presentation
- assertEquals(pict.getPictureData(), pd);
-
- assertEquals(1, pictures.size());
- assertEquals(PictureType.PICT, pd.getType());
- assertTrue(pd instanceof PICT);
- //compare the content of the initial file with what is stored in the PictureData
- byte[] ppt_bytes = pd.getData();
- assertEquals(src_bytes.length, ppt_bytes.length);
- //in PICT the first 512 bytes are MAC specific and may not be preserved, ignore them
- byte[] b1 = Arrays.copyOfRange(src_bytes, 512, src_bytes.length);
- byte[] b2 = Arrays.copyOfRange(ppt_bytes, 512, ppt_bytes.length);
- assertArrayEquals(b1, b2);
- }
-
- /**
- * Test read/write WMF
- */
- @Test
- void testWMF() throws IOException {
- HSLFSlideShow ppt = new HSLFSlideShow();
-
- HSLFSlide slide = ppt.createSlide();
- byte[] src_bytes = slTests.readFile("santa.wmf");
- HSLFPictureData data = ppt.addPicture(src_bytes, PictureType.WMF);
- ImageHeaderWMF nHeader = new ImageHeaderWMF(src_bytes, 0);
- final int expWidth = 136, expHeight = 146;
- Dimension nDim = nHeader.getSize();
- assertEquals(expWidth, nDim.getWidth(), 0);
- assertEquals(expHeight, nDim.getHeight(), 0);
-
- Dimension dim = data.getImageDimensionInPixels();
- assertEquals(Units.pointsToPixel(expWidth), dim.getWidth(), 0);
- assertEquals(Units.pointsToPixel(expHeight), dim.getHeight(), 0);
-
- HSLFPictureShape pict = new HSLFPictureShape(data);
- assertEquals(data.getIndex(), pict.getPictureIndex());
- slide.addShape(pict);
-
- //serialize and read again
- ByteArrayOutputStream out = new ByteArrayOutputStream();
- ppt.write(out);
- out.close();
-
- ppt = new HSLFSlideShow(new HSLFSlideShowImpl(new ByteArrayInputStream(out.toByteArray())));
-
- //make sure we can read this picture shape and it refers to the correct picture data
- List<HSLFShape> sh = ppt.getSlides().get(0).getShapes();
- assertEquals(1, sh.size());
- pict = (HSLFPictureShape)sh.get(0);
- assertEquals(data.getIndex(), pict.getPictureIndex());
-
- //check picture data
- List<HSLFPictureData> pictures = ppt.getPictureData();
- assertEquals(1, pictures.size());
-
- HSLFPictureData pd = pictures.get(0);
- dim = pd.getImageDimension();
- assertEquals(expWidth, dim.width);
- assertEquals(expHeight, dim.height);
-
- //the Picture shape refers to the PictureData object in the Presentation
- assertEquals(pict.getPictureData(), pd);
-
- assertEquals(PictureType.WMF, pd.getType());
- assertTrue(pd instanceof WMF);
- //compare the content of the initial file with what is stored in the PictureData
- byte[] ppt_bytes = pd.getData();
- assertEquals(src_bytes.length, ppt_bytes.length);
- //in WMF the first 22 bytes - is a metafile header
- byte[] b1 = Arrays.copyOfRange(src_bytes, 22, src_bytes.length);
- byte[] b2 = Arrays.copyOfRange(ppt_bytes, 22, ppt_bytes.length);
- assertArrayEquals(b1, b2);
- }
-
- /**
- * Test read/write EMF
- */
- @Test
- void testEMF() throws IOException {
- HSLFSlideShow ppt = new HSLFSlideShow();
-
- HSLFSlide slide = ppt.createSlide();
- byte[] src_bytes = slTests.readFile("wrench.emf");
- HSLFPictureData data = ppt.addPicture(src_bytes, PictureType.EMF);
- ImageHeaderEMF nHeader = new ImageHeaderEMF(src_bytes, 0);
- final int expWidth = 190, expHeight = 115;
- Dimension nDim = nHeader.getSize();
- assertEquals(expWidth, nDim.getWidth(), 0);
- assertEquals(expHeight, nDim.getHeight(), 0);
-
- Dimension dim = data.getImageDimensionInPixels();
- assertEquals(Units.pointsToPixel(expWidth), dim.getWidth(), 0);
- assertEquals(Units.pointsToPixel(expHeight), dim.getHeight(), 0);
-
- HSLFPictureShape pict = new HSLFPictureShape(data);
- assertEquals(data.getIndex(), pict.getPictureIndex());
- slide.addShape(pict);
-
- //serialize and read again
- ByteArrayOutputStream out = new ByteArrayOutputStream();
- ppt.write(out);
- out.close();
-
- ppt = new HSLFSlideShow(new HSLFSlideShowImpl(new ByteArrayInputStream(out.toByteArray())));
-
- //make sure we can get this picture shape and it refers to the correct picture data
- List<HSLFShape> sh = ppt.getSlides().get(0).getShapes();
- assertEquals(1, sh.size());
- pict = (HSLFPictureShape)sh.get(0);
- assertEquals(data.getIndex(), pict.getPictureIndex());
-
- //check picture data
- List<HSLFPictureData> pictures = ppt.getPictureData();
- assertEquals(1, pictures.size());
-
- HSLFPictureData pd = pictures.get(0);
- dim = pd.getImageDimension();
- assertEquals(expWidth, dim.width);
- assertEquals(expHeight, dim.height);
-
- //the Picture shape refers to the PictureData object in the Presentation
- assertEquals(pict.getPictureData(), pd);
-
- assertEquals(1, pictures.size());
- assertEquals(PictureType.EMF, pd.getType());
- assertTrue(pd instanceof EMF);
- //compare the content of the initial file with what is stored in the PictureData
- byte[] ppt_bytes = pd.getData();
- assertArrayEquals(src_bytes, ppt_bytes);
- }
-
- /**
- * Test read/write PNG
+ * Test add/read/write images
*/
- @Test
- void testPNG() throws IOException {
- HSLFSlideShow ppt = new HSLFSlideShow();
-
- HSLFSlide slide = ppt.createSlide();
- byte[] src_bytes = slTests.readFile("tomcat.png");
- HSLFPictureData data = ppt.addPicture(src_bytes, PictureType.PNG);
- HSLFPictureShape pict = new HSLFPictureShape(data);
- assertEquals(data.getIndex(), pict.getPictureIndex());
- slide.addShape(pict);
-
- //serialize and read again
- ByteArrayOutputStream out = new ByteArrayOutputStream();
- ppt.write(out);
- out.close();
-
- ppt = new HSLFSlideShow(new HSLFSlideShowImpl(new ByteArrayInputStream(out.toByteArray())));
-
- //make sure we can read this picture shape and it refers to the correct picture data
- List<HSLFShape> sh = ppt.getSlides().get(0).getShapes();
- assertEquals(1, sh.size());
- pict = (HSLFPictureShape)sh.get(0);
- assertEquals(data.getIndex(), pict.getPictureIndex());
-
- //check picture data
- List<HSLFPictureData> pictures = ppt.getPictureData();
- //the Picture shape refers to the PictureData object in the Presentation
- assertEquals(pict.getPictureData(), pictures.get(0));
-
- assertEquals(1, pictures.size());
- assertEquals(PictureType.PNG, pictures.get(0).getType());
- assertTrue(pictures.get(0) instanceof PNG);
- //compare the content of the initial file with what is stored in the PictureData
- byte[] ppt_bytes = pictures.get(0).getData();
- assertArrayEquals(src_bytes, ppt_bytes);
- }
-
- /**
- * Test read/write JPEG
- */
- @Test
- void testJPEG() throws IOException {
- HSLFSlideShow ppt = new HSLFSlideShow();
-
- HSLFSlide slide = ppt.createSlide();
- byte[] src_bytes = slTests.readFile("clock.jpg");
- HSLFPictureData data = ppt.addPicture(src_bytes, PictureType.JPEG);
-
- HSLFPictureShape pict = new HSLFPictureShape(data);
- assertEquals(data.getIndex(), pict.getPictureIndex());
- slide.addShape(pict);
-
- //serialize and read again
- ByteArrayOutputStream out = new ByteArrayOutputStream();
- ppt.write(out);
- out.close();
-
- ppt = new HSLFSlideShow(new HSLFSlideShowImpl(new ByteArrayInputStream(out.toByteArray())));
-
- //make sure we can read this picture shape and it refers to the correct picture data
- List<HSLFShape> sh = ppt.getSlides().get(0).getShapes();
- assertEquals(1, sh.size());
- pict = (HSLFPictureShape)sh.get(0);
- assertEquals(data.getIndex(), pict.getPictureIndex());
-
- //check picture data
- List<HSLFPictureData> pictures = ppt.getPictureData();
- //the Picture shape refers to the PictureData object in the Presentation
- assertEquals(pict.getPictureData(), pictures.get(0));
-
- assertEquals(1, pictures.size());
- assertEquals(PictureType.JPEG, pictures.get(0).getType());
- assertTrue(pictures.get(0) instanceof JPEG);
- //compare the content of the initial file with what is stored in the PictureData
- byte[] ppt_bytes = pictures.get(0).getData();
- assertArrayEquals(src_bytes, ppt_bytes);
- }
-
- /**
- * Test read/write DIB
- */
- @Test
- void testDIB() throws IOException {
- HSLFSlideShow ppt = new HSLFSlideShow();
+ @ParameterizedTest()
+ @CsvSource(value = {
+ // in PICT the first 512 bytes are MAC specific and may not be preserved, ignore them
+ "PICT, cow.pict, 197, 137, 512, org.apache.poi.hslf.blip.PICT",
+ // in WMF the first 22 bytes - is a metafile header
+ "WMF, santa.wmf, 136, 146, 22, org.apache.poi.hslf.blip.WMF",
+ "EMF, wrench.emf, 190, 115, 0, org.apache.poi.hslf.blip.EMF",
+ "PNG, tomcat.png, 129, 92, 0, org.apache.poi.hslf.blip.PNG",
+ "JPEG, clock.jpg, 192, 176, 0, org.apache.poi.hslf.blip.JPEG",
+ "DIB, clock.dib, 192, 176, 0, org.apache.poi.hslf.blip.DIB"
+ })
+ void testAddPictures(PictureType pictureType, String imgFile, int expWidth, int expHeight, int headerOffset, Class<?> imgClazz) throws IOException {
+ byte[] src_bytes = slTests.readFile(imgFile);
+
+ int dataIndex;
+ try (HSLFSlideShow ppt1 = new HSLFSlideShow()) {
+
+ HSLFSlide slide1 = ppt1.createSlide();
+ HSLFPictureData data1 = ppt1.addPicture(src_bytes, pictureType);
+ dataIndex = data1.getIndex();
+
+ // TODO: Fix the differences in the frame sizes
+ Dimension2D dimN, dimFrame1, dimFrame2;
+ switch (pictureType) {
+ case PICT:
+ dimN = new ImageHeaderPICT(src_bytes, headerOffset).getSize();
+ dimFrame1 = Units.pointsToPixel(dimN);
+ dimFrame2 = dimN;
+ break;
+ case WMF:
+ dimN = new ImageHeaderWMF(src_bytes, 0).getSize();
+ dimFrame1 = Units.pointsToPixel(dimN);
+ dimFrame2 = dimN;
+ break;
+ case EMF:
+ dimN = new ImageHeaderEMF(src_bytes, 0).getSize();
+ dimFrame1 = Units.pointsToPixel(dimN);
+ dimFrame2 = dimN;
+ break;
+ case JPEG:
+ case DIB:
+ case PNG: {
+ BufferedImage png = ImageIO.read(new ByteArrayInputStream(src_bytes));
+ dimN = new Dimension(png.getWidth(), png.getHeight());
+ dimFrame1 = dimN;
+ dimFrame2 = Units.pixelToPoints(dimN);
+ break;
+ }
+ default:
+ fail();
+ return;
+ }
+ assertEquals(expWidth, dimN.getWidth(), 1);
+ assertEquals(expHeight, dimN.getHeight(), 1);
- HSLFSlide slide = ppt.createSlide();
- byte[] src_bytes = slTests.readFile("clock.dib");
- HSLFPictureData data = ppt.addPicture(src_bytes, PictureType.DIB);
- HSLFPictureShape pict = new HSLFPictureShape(data);
- assertEquals(data.getIndex(), pict.getPictureIndex());
- slide.addShape(pict);
-
- //serialize and read again
- ByteArrayOutputStream out = new ByteArrayOutputStream();
- ppt.write(out);
- out.close();
-
- ppt = new HSLFSlideShow(new HSLFSlideShowImpl(new ByteArrayInputStream(out.toByteArray())));
-
- //make sure we can read this picture shape and it refers to the correct picture data
- List<HSLFShape> sh = ppt.getSlides().get(0).getShapes();
- assertEquals(1, sh.size());
- pict = (HSLFPictureShape)sh.get(0);
- assertEquals(data.getIndex(), pict.getPictureIndex());
-
- //check picture data
- List<HSLFPictureData> pictures = ppt.getPictureData();
- //the Picture shape refers to the PictureData object in the Presentation
- assertEquals(pict.getPictureData(), pictures.get(0));
-
- assertEquals(1, pictures.size());
- assertEquals(PictureType.DIB, pictures.get(0).getType());
- assertTrue(pictures.get(0) instanceof DIB);
- //compare the content of the initial file with what is stored in the PictureData
- byte[] ppt_bytes = pictures.get(0).getData();
- assertArrayEquals(src_bytes, ppt_bytes);
+ Dimension dim1 = data1.getImageDimensionInPixels();
+ assertEquals(dimFrame1.getWidth(), dim1.getWidth(), 1);
+ assertEquals(dimFrame1.getHeight(), dim1.getHeight(), 1);
+
+ HSLFPictureShape pict1 = new HSLFPictureShape(data1);
+ assertEquals(data1.getIndex(), pict1.getPictureIndex());
+ slide1.addShape(pict1);
+
+ try (HSLFSlideShow ppt2 = writeOutAndReadBack(ppt1)) {
+ //make sure we can read this picture shape and it refers to the correct picture data
+ List<HSLFShape> sh2 = ppt2.getSlides().get(0).getShapes();
+ assertEquals(1, sh2.size());
+ HSLFPictureShape pict2 = (HSLFPictureShape) sh2.get(0);
+ assertEquals(dataIndex, pict2.getPictureIndex());
+
+ //check picture data
+ List<HSLFPictureData> pictures2 = ppt2.getPictureData();
+ assertEquals(1, pictures2.size());
+
+ HSLFPictureData pd2 = pictures2.get(0);
+ Dimension dim2 = pd2.getImageDimension();
+ assertEquals(dimFrame2.getWidth(), dim2.width, 1);
+ assertEquals(dimFrame2.getHeight(), dim2.height, 1);
+
+ //the Picture shape refers to the PictureData object in the Presentation
+ assertEquals(pict2.getPictureData(), pd2);
+
+ assertEquals(1, pictures2.size());
+ assertEquals(pictureType, pd2.getType());
+ assertTrue(imgClazz.isInstance(pd2));
+ //compare the content of the initial file with what is stored in the PictureData
+ byte[] ppt_bytes = pd2.getData();
+ assertEquals(src_bytes.length, ppt_bytes.length);
+ byte[] b1 = Arrays.copyOfRange(src_bytes, headerOffset, src_bytes.length);
+ byte[] b2 = Arrays.copyOfRange(ppt_bytes, headerOffset, ppt_bytes.length);
+ assertArrayEquals(b1, b2);
+ }
+ }
}
/**
@@ -366,60 +173,59 @@ public final class TestPictures {
HSLFPictureShape pict;
HSLFPictureData pdata;
- HSLFSlideShow ppt = HSLFTestDataSamples.getSlideShow("pictures.ppt");
- List<HSLFSlide> slides = ppt.getSlides();
- List<HSLFPictureData> pictures = ppt.getPictureData();
- assertEquals(5, pictures.size());
-
- pict = (HSLFPictureShape)slides.get(0).getShapes().get(0); //the first slide contains JPEG
- pdata = pict.getPictureData();
- assertTrue(pdata instanceof JPEG);
- assertEquals(PictureType.JPEG, pdata.getType());
- src_bytes = pdata.getData();
- ppt_bytes = slTests.readFile("clock.jpg");
- assertArrayEquals(src_bytes, ppt_bytes);
-
- pict = (HSLFPictureShape)slides.get(1).getShapes().get(0); //the second slide contains PNG
- pdata = pict.getPictureData();
- assertTrue(pdata instanceof PNG);
- assertEquals(PictureType.PNG, pdata.getType());
- src_bytes = pdata.getData();
- ppt_bytes = slTests.readFile("tomcat.png");
- assertArrayEquals(src_bytes, ppt_bytes);
-
- pict = (HSLFPictureShape)slides.get(2).getShapes().get(0); //the third slide contains WMF
- pdata = pict.getPictureData();
- assertTrue(pdata instanceof WMF);
- assertEquals(PictureType.WMF, pdata.getType());
- src_bytes = pdata.getData();
- ppt_bytes = slTests.readFile("santa.wmf");
- assertEquals(src_bytes.length, ppt_bytes.length);
- //ignore the first 22 bytes - it is a WMF metafile header
- b1 = Arrays.copyOfRange(src_bytes, 22, src_bytes.length);
- b2 = Arrays.copyOfRange(ppt_bytes, 22, ppt_bytes.length);
- assertArrayEquals(b1, b2);
-
- pict = (HSLFPictureShape)slides.get(3).getShapes().get(0); //the forth slide contains PICT
- pdata = pict.getPictureData();
- assertTrue(pdata instanceof PICT);
- assertEquals(PictureType.PICT, pdata.getType());
- src_bytes = pdata.getData();
- ppt_bytes = slTests.readFile("cow.pict");
- assertEquals(src_bytes.length, ppt_bytes.length);
- //ignore the first 512 bytes - it is a MAC specific crap
- b1 = Arrays.copyOfRange(src_bytes, 512, src_bytes.length);
- b2 = Arrays.copyOfRange(ppt_bytes, 512, ppt_bytes.length);
- assertArrayEquals(b1, b2);
-
- pict = (HSLFPictureShape)slides.get(4).getShapes().get(0); //the fifth slide contains EMF
- pdata = pict.getPictureData();
- assertTrue(pdata instanceof EMF);
- assertEquals(PictureType.EMF, pdata.getType());
- src_bytes = pdata.getData();
- ppt_bytes = slTests.readFile("wrench.emf");
- assertArrayEquals(src_bytes, ppt_bytes);
-
- ppt.close();
+ try (HSLFSlideShow ppt = getSlideShow("pictures.ppt")) {
+ List<HSLFSlide> slides = ppt.getSlides();
+ List<HSLFPictureData> pictures = ppt.getPictureData();
+ assertEquals(5, pictures.size());
+
+ pict = (HSLFPictureShape) slides.get(0).getShapes().get(0); //the first slide contains JPEG
+ pdata = pict.getPictureData();
+ assertTrue(pdata instanceof JPEG);
+ assertEquals(PictureType.JPEG, pdata.getType());
+ src_bytes = pdata.getData();
+ ppt_bytes = slTests.readFile("clock.jpg");
+ assertArrayEquals(src_bytes, ppt_bytes);
+
+ pict = (HSLFPictureShape) slides.get(1).getShapes().get(0); //the second slide contains PNG
+ pdata = pict.getPictureData();
+ assertTrue(pdata instanceof PNG);
+ assertEquals(PictureType.PNG, pdata.getType());
+ src_bytes = pdata.getData();
+ ppt_bytes = slTests.readFile("tomcat.png");
+ assertArrayEquals(src_bytes, ppt_bytes);
+
+ pict = (HSLFPictureShape) slides.get(2).getShapes().get(0); //the third slide contains WMF
+ pdata = pict.getPictureData();
+ assertTrue(pdata instanceof WMF);
+ assertEquals(PictureType.WMF, pdata.getType());
+ src_bytes = pdata.getData();
+ ppt_bytes = slTests.readFile("santa.wmf");
+ assertEquals(src_bytes.length, ppt_bytes.length);
+ //ignore the first 22 bytes - it is a WMF metafile header
+ b1 = Arrays.copyOfRange(src_bytes, 22, src_bytes.length);
+ b2 = Arrays.copyOfRange(ppt_bytes, 22, ppt_bytes.length);
+ assertArrayEquals(b1, b2);
+
+ pict = (HSLFPictureShape) slides.get(3).getShapes().get(0); //the forth slide contains PICT
+ pdata = pict.getPictureData();
+ assertTrue(pdata instanceof PICT);
+ assertEquals(PictureType.PICT, pdata.getType());
+ src_bytes = pdata.getData();
+ ppt_bytes = slTests.readFile("cow.pict");
+ assertEquals(src_bytes.length, ppt_bytes.length);
+ //ignore the first 512 bytes - it is a MAC specific crap
+ b1 = Arrays.copyOfRange(src_bytes, 512, src_bytes.length);
+ b2 = Arrays.copyOfRange(ppt_bytes, 512, ppt_bytes.length);
+ assertArrayEquals(b1, b2);
+
+ pict = (HSLFPictureShape) slides.get(4).getShapes().get(0); //the fifth slide contains EMF
+ pdata = pict.getPictureData();
+ assertTrue(pdata instanceof EMF);
+ assertEquals(PictureType.EMF, pdata.getType());
+ src_bytes = pdata.getData();
+ ppt_bytes = slTests.readFile("wrench.emf");
+ assertArrayEquals(src_bytes, ppt_bytes);
+ }
}
/**
@@ -428,35 +234,34 @@ public final class TestPictures {
*/
@Test
void testZeroPictureType() throws IOException {
- HSLFSlideShowImpl hslf = new HSLFSlideShowImpl(slTests.openResourceAsStream("PictureTypeZero.ppt"));
+ try (HSLFSlideShowImpl hslf = new HSLFSlideShowImpl(slTests.openResourceAsStream("PictureTypeZero.ppt"))) {
- // Should still have 2 real pictures
- assertEquals(2, hslf.getPictureData().size());
- // Both are real pictures, both WMF
- assertEquals(PictureType.WMF, hslf.getPictureData().get(0).getType());
- assertEquals(PictureType.WMF, hslf.getPictureData().get(1).getType());
-
- // Now test what happens when we use the SlideShow interface
- HSLFSlideShow ppt = new HSLFSlideShow(hslf);
- List<HSLFSlide> slides = ppt.getSlides();
- List<HSLFPictureData> pictures = ppt.getPictureData();
- assertEquals(12, slides.size());
- assertEquals(2, pictures.size());
-
- HSLFPictureShape pict;
- HSLFPictureData pdata;
-
- pict = (HSLFPictureShape)slides.get(0).getShapes().get(1); // 2nd object on 1st slide
- pdata = pict.getPictureData();
- assertTrue(pdata instanceof WMF);
- assertEquals(PictureType.WMF, pdata.getType());
-
- pict = (HSLFPictureShape)slides.get(0).getShapes().get(2); // 3rd object on 1st slide
- pdata = pict.getPictureData();
- assertTrue(pdata instanceof WMF);
- assertEquals(PictureType.WMF, pdata.getType());
-
- ppt.close();
+ // Should still have 2 real pictures
+ assertEquals(2, hslf.getPictureData().size());
+ // Both are real pictures, both WMF
+ assertEquals(PictureType.WMF, hslf.getPictureData().get(0).getType());
+ assertEquals(PictureType.WMF, hslf.getPictureData().get(1).getType());
+
+ // Now test what happens when we use the SlideShow interface
+ HSLFSlideShow ppt = new HSLFSlideShow(hslf);
+ List<HSLFSlide> slides = ppt.getSlides();
+ List<HSLFPictureData> pictures = ppt.getPictureData();
+ assertEquals(12, slides.size());
+ assertEquals(2, pictures.size());
+
+ HSLFPictureShape pict;
+ HSLFPictureData pdata;
+
+ pict = (HSLFPictureShape) slides.get(0).getShapes().get(1); // 2nd object on 1st slide
+ pdata = pict.getPictureData();
+ assertTrue(pdata instanceof WMF);
+ assertEquals(PictureType.WMF, pdata.getType());
+
+ pict = (HSLFPictureShape) slides.get(0).getShapes().get(2); // 3rd object on 1st slide
+ pdata = pict.getPictureData();
+ assertTrue(pdata instanceof WMF);
+ assertEquals(PictureType.WMF, pdata.getType());
+ }
}
/**
@@ -490,75 +295,70 @@ public final class TestPictures {
assertEquals(PictureType.WMF, hslf.getPictureData().get(1).getType());
// Now test what happens when we use the SlideShow interface
- HSLFSlideShow ppt = new HSLFSlideShow(hslf);
- List<HSLFSlide> slides = ppt.getSlides();
- List<HSLFPictureData> pictures = ppt.getPictureData();
- assertEquals(27, slides.size());
- assertEquals(2, pictures.size());
-
- HSLFPictureShape pict;
- HSLFPictureData pdata;
-
- pict = (HSLFPictureShape)slides.get(6).getShapes().get(13);
- pdata = pict.getPictureData();
- assertTrue(pdata instanceof WMF);
- assertEquals(PictureType.WMF, pdata.getType());
-
- pict = (HSLFPictureShape)slides.get(7).getShapes().get(13);
- pdata = pict.getPictureData();
- assertTrue(pdata instanceof WMF);
- assertEquals(PictureType.WMF, pdata.getType());
-
- //add a new picture, it should be correctly appended to the Pictures stream
- ByteArrayOutputStream out = new ByteArrayOutputStream();
- for(HSLFPictureData p : pictures) p.write(out);
- out.close();
-
- int streamSize = out.size();
-
- HSLFPictureData data = ppt.addPicture(new byte[100], PictureType.JPEG);
- int offset = data.getOffset();
- assertEquals(streamSize, offset);
- assertEquals(3, ppt.getPictureData().size());
-
- ppt.close();
+ try (HSLFSlideShow ppt = new HSLFSlideShow(hslf)) {
+ List<HSLFSlide> slides = ppt.getSlides();
+ List<HSLFPictureData> pictures = ppt.getPictureData();
+ assertEquals(27, slides.size());
+ assertEquals(2, pictures.size());
+
+ HSLFPictureShape pict;
+ HSLFPictureData pdata;
+
+ pict = (HSLFPictureShape) slides.get(6).getShapes().get(13);
+ pdata = pict.getPictureData();
+ assertTrue(pdata instanceof WMF);
+ assertEquals(PictureType.WMF, pdata.getType());
+
+ pict = (HSLFPictureShape) slides.get(7).getShapes().get(13);
+ pdata = pict.getPictureData();
+ assertTrue(pdata instanceof WMF);
+ assertEquals(PictureType.WMF, pdata.getType());
+
+ //add a new picture, it should be correctly appended to the Pictures stream
+ CountingOutputStream out = new CountingOutputStream(NULL_OUTPUT_STREAM);
+ for (HSLFPictureData p : pictures) p.write(out);
+
+ int streamSize = out.getCount();
+
+ HSLFPictureData data = ppt.addPicture(new byte[100], PictureType.JPEG);
+ int offset = data.getOffset();
+ assertEquals(streamSize, offset);
+ assertEquals(3, ppt.getPictureData().size());
+ }
}
@Test
void testGetPictureName() throws IOException {
- HSLFSlideShow ppt = HSLFTestDataSamples.getSlideShow("ppt_with_png.ppt");
- HSLFSlide slide = ppt.getSlides().get(0);
+ try (HSLFSlideShow ppt = getSlideShow("ppt_with_png.ppt")) {
+ HSLFSlide slide = ppt.getSlides().get(0);
- HSLFPictureShape p = (HSLFPictureShape)slide.getShapes().get(0); //the first slide contains JPEG
- assertEquals("test", p.getPictureName());
- ppt.close();
+ HSLFPictureShape p = (HSLFPictureShape) slide.getShapes().get(0); //the first slide contains JPEG
+ assertEquals("test", p.getPictureName());
+ }
}
@Test
void testSetPictureName() throws IOException {
- HSLFSlideShow ppt = new HSLFSlideShow();
-
- HSLFSlide slide = ppt.createSlide();
- byte[] img = slTests.readFile("tomcat.png");
- HSLFPictureData data = ppt.addPicture(img, PictureType.PNG);
- HSLFPictureShape pict = new HSLFPictureShape(data);
- pict.setPictureName("tomcat.png");
- slide.addShape(pict);
-
- //serialize and read again
- ByteArrayOutputStream out = new ByteArrayOutputStream();
- ppt.write(out);
- out.close();
-
- ppt = new HSLFSlideShow(new ByteArrayInputStream(out.toByteArray()));
+ try (HSLFSlideShow ppt1 = new HSLFSlideShow()) {
- HSLFPictureShape p = (HSLFPictureShape)ppt.getSlides().get(0).getShapes().get(0);
- assertEquals("tomcat.png", p.getPictureName());
+ HSLFSlide slide = ppt1.createSlide();
+ byte[] img = slTests.readFile("tomcat.png");
+ HSLFPictureData data = ppt1.addPicture(img, PictureType.PNG);
+ HSLFPictureShape pict = new HSLFPictureShape(data);
+ pict.setPictureName("tomcat.png");
+ slide.addShape(pict);
+
+ //serialize and read again
+ try (HSLFSlideShow ppt2 = writeOutAndReadBack(ppt1)) {
+ HSLFPictureShape p = (HSLFPictureShape) ppt2.getSlides().get(0).getShapes().get(0);
+ assertEquals("tomcat.png", p.getPictureName());
+ }
+ }
}
@Test
void testPictureIndexIsOneBased() throws IOException {
- try (HSLFSlideShow ppt = HSLFTestDataSamples.getSlideShow("ppt_with_png.ppt")) {
+ try (HSLFSlideShow ppt = getSlideShow("ppt_with_png.ppt")) {
HSLFPictureData picture = ppt.getPictureData().get(0);
assertEquals(1, picture.getIndex());
}
@@ -571,20 +371,18 @@ public final class TestPictures {
@Test
void testEditPictureData() throws IOException {
byte[] newImage = slTests.readFile("tomcat.png");
- ByteArrayOutputStream modifiedSlideShow = new ByteArrayOutputStream();
// Load an existing slideshow and modify the image
- try (HSLFSlideShow ppt = HSLFTestDataSamples.getSlideShow("ppt_with_png.ppt")) {
- HSLFPictureData picture = ppt.getPictureData().get(0);
- picture.setData(newImage);
- ppt.write(modifiedSlideShow);
- }
+ try (HSLFSlideShow ppt1 = getSlideShow("ppt_with_png.ppt")) {
+ HSLFPictureData picture1 = ppt1.getPictureData().get(0);
+ picture1.setData(newImage);
- // Load the modified slideshow and verify the image content
- try (HSLFSlideShow ppt = new HSLFSlideShow(new ByteArrayInputStream(modifiedSlideShow.toByteArray()))) {
- HSLFPictureData picture = ppt.getPictureData().get(0);
- byte[] modifiedImageData = picture.getData();
- assertArrayEquals(newImage, modifiedImageData);
+ // Load the modified slideshow and verify the image content
+ try (HSLFSlideShow ppt2 = writeOutAndReadBack(ppt1)) {
+ HSLFPictureData picture2 = ppt2.getPictureData().get(0);
+ byte[] modifiedImageData = picture2.getData();
+ assertArrayEquals(newImage, modifiedImageData);
+ }
}
}
@@ -595,22 +393,20 @@ public final class TestPictures {
@Test
void testEditPictureDataEncrypted() throws IOException {
byte[] newImage = slTests.readFile("tomcat.png");
- ByteArrayOutputStream modifiedSlideShow = new ByteArrayOutputStream();
Biff8EncryptionKey.setCurrentUserPassword("password");
try {
// Load an existing slideshow and modify the image
- try (HSLFSlideShow ppt = HSLFTestDataSamples.getSlideShow("ppt_with_png_encrypted.ppt")) {
- HSLFPictureData picture = ppt.getPictureData().get(0);
- picture.setData(newImage);
- ppt.write(modifiedSlideShow);
- }
-
- // Load the modified slideshow and verify the image content
- try (HSLFSlideShow ppt = new HSLFSlideShow(new ByteArrayInputStream(modifiedSlideShow.toByteArray()))) {
- HSLFPictureData picture = ppt.getPictureData().get(0);
- byte[] modifiedImageData = picture.getData();
- assertArrayEquals(newImage, modifiedImageData);
+ try (HSLFSlideShow ppt1 = getSlideShow("ppt_with_png_encrypted.ppt")) {
+ HSLFPictureData picture1 = ppt1.getPictureData().get(0);
+ picture1.setData(newImage);
+
+ // Load the modified slideshow and verify the image content
+ try (HSLFSlideShow ppt2 = writeOutAndReadBack(ppt1)) {
+ HSLFPictureData picture2 = ppt2.getPictureData().get(0);
+ byte[] modifiedImageData = picture2.getData();
+ assertArrayEquals(newImage, modifiedImageData);
+ }
}
} finally {
Biff8EncryptionKey.setCurrentUserPassword(null);
@@ -626,27 +422,23 @@ public final class TestPictures {
int[] originalOffsets = {0, 12013, 15081, 34162, 59563};
int[] modifiedOffsets = {0, 35, 3103, 22184, 47585};
- ByteArrayOutputStream inMemory = new ByteArrayOutputStream();
- try (HSLFSlideShow ppt = HSLFTestDataSamples.getSlideShow("pictures.ppt")) {
- int[] offsets = ppt.getPictureData().stream().mapToInt(HSLFPictureData::getOffset).toArray();
- assertArrayEquals(originalOffsets, offsets);
+ try (HSLFSlideShow ppt1 = getSlideShow("pictures.ppt")) {
+ int[] offsets1 = ppt1.getPictureData().stream().mapToInt(HSLFPictureData::getOffset).toArray();
+ assertArrayEquals(originalOffsets, offsets1);
- HSLFPictureData imageBeingChanged = ppt.getPictureData().get(0);
+ HSLFPictureData imageBeingChanged = ppt1.getPictureData().get(0);
// It doesn't matter that this isn't a valid image. We are just testing offsets here.
imageBeingChanged.setData(new byte[10]);
// Verify that the in-memory representations have all been updated
- offsets = ppt.getPictureData().stream().mapToInt(HSLFPictureData::getOffset).toArray();
- assertArrayEquals(modifiedOffsets, offsets);
-
- ppt.write(inMemory);
- }
-
- try (HSLFSlideShow ppt = new HSLFSlideShow(new ByteArrayInputStream(inMemory.toByteArray()))) {
+ offsets1 = ppt1.getPictureData().stream().mapToInt(HSLFPictureData::getOffset).toArray();
+ assertArrayEquals(modifiedOffsets, offsets1);
- // Verify that the persisted representations have all been updated
- int[] offsets = ppt.getPictureData().stream().mapToInt(HSLFPictureData::getOffset).toArray();
- assertArrayEquals(modifiedOffsets, offsets);
+ try (HSLFSlideShow ppt2 = writeOutAndReadBack(ppt1)) {
+ // Verify that the persisted representations have all been updated
+ int[] offsets2 = ppt2.getPictureData().stream().mapToInt(HSLFPictureData::getOffset).toArray();
+ assertArrayEquals(modifiedOffsets, offsets2);
+ }
}
}
@@ -662,11 +454,9 @@ public final class TestPictures {
void testEditPictureDataOutOfOrderRecords() throws IOException {
int[] modifiedOffsets = {0, 35, 3103, 22184, 47585};
- ByteArrayOutputStream inMemory = new ByteArrayOutputStream();
- try (HSLFSlideShow ppt = HSLFTestDataSamples.getSlideShow("pictures.ppt")) {
-
+ try (HSLFSlideShow ppt1 = getSlideShow("pictures.ppt")) {
// For this test we're going to intentionally manipulate the records into a shuffled order.
- EscherContainerRecord container = ppt.getPictureData().get(0).bStore;
+ EscherContainerRecord container = ppt1.getPictureData().get(0).bStore;
List<EscherRecord> children = container.getChildRecords();
for (EscherRecord child : children) {
container.removeChildRecord(child);
@@ -676,25 +466,21 @@ public final class TestPictures {
container.addChildRecord(child);
}
- HSLFPictureData imageBeingChanged = ppt.getPictureData().get(0);
+ HSLFPictureData imageBeingChanged = ppt1.getPictureData().get(0);
// It doesn't matter that this isn't a valid image. We are just testing offsets here.
imageBeingChanged.setData(new byte[10]);
// Verify that the in-memory representations have all been updated
- int[] offsets = ppt.getPictureData().stream().mapToInt(HSLFPictureData::getOffset).toArray();
- Arrays.sort(offsets);
- assertArrayEquals(modifiedOffsets, offsets);
+ int[] offsets1 = ppt1.getPictureData().stream().mapToInt(HSLFPictureData::getOffset).sorted().toArray();
+ assertArrayEquals(modifiedOffsets, offsets1);
- ppt.write(inMemory);
+ try (HSLFSlideShow ppt2 = writeOutAndReadBack(ppt1)) {
+ // Verify that the persisted representations have all been updated
+ int[] offsets2 = ppt2.getPictureData().stream().mapToInt(HSLFPictureData::getOffset).sorted().toArray();
+ assertArrayEquals(modifiedOffsets, offsets2);
+ }
}
- try (HSLFSlideShow ppt = new HSLFSlideShow(new ByteArrayInputStream(inMemory.toByteArray()))) {
-
- // Verify that the persisted representations have all been updated
- int[] offsets = ppt.getPictureData().stream().mapToInt(HSLFPictureData::getOffset).toArray();
- Arrays.sort(offsets);
- assertArrayEquals(modifiedOffsets, offsets);
- }
}
/**
@@ -707,28 +493,25 @@ public final class TestPictures {
int originalNumberOfRecords;
// Create a presentation that has records with unmatched offsets, but with matched UIDs.
- ByteArrayOutputStream inMemory = new ByteArrayOutputStream();
- try (HSLFSlideShow ppt = HSLFTestDataSamples.getSlideShow("pictures.ppt")) {
- originalOffsets = ppt.getPictureData().stream().mapToInt(HSLFPictureData::getOffset).toArray();
- originalNumberOfRecords = ppt.getPictureData().get(0).bStore.getChildCount();
+ try (HSLFSlideShow ppt1 = getSlideShow("pictures.ppt")) {
+ originalOffsets = ppt1.getPictureData().stream().mapToInt(HSLFPictureData::getOffset).toArray();
+ originalNumberOfRecords = ppt1.getPictureData().get(0).bStore.getChildCount();
Random random = new Random();
- for (HSLFPictureData picture : ppt.getPictureData()) {
+ for (HSLFPictureData picture : ppt1.getPictureData()) {
// Bound is arbitrary and irrelevant to the test.
picture.bse.setOffset(random.nextInt(500_000));
}
- ppt.write(inMemory);
- }
-
- try (HSLFSlideShow ppt = new HSLFSlideShow(new ByteArrayInputStream(inMemory.toByteArray()))) {
- // Verify that the offsets all got fixed.
- int[] offsets = ppt.getPictureData().stream().mapToInt(HSLFPictureData::getOffset).toArray();
- assertArrayEquals(originalOffsets, offsets);
-
- // Verify that there are the same number of records as in the original slideshow.
- int numberOfRecords = ppt.getPictureData().get(0).bStore.getChildCount();
- assertEquals(originalNumberOfRecords, numberOfRecords);
+ try (HSLFSlideShow ppt2 = writeOutAndReadBack(ppt1)) {
+ // Verify that the offsets all got fixed.
+ int[] offsets = ppt2.getPictureData().stream().mapToInt(HSLFPictureData::getOffset).toArray();
+ assertArrayEquals(originalOffsets, offsets);
+
+ // Verify that there are the same number of records as in the original slideshow.
+ int numberOfRecords = ppt2.getPictureData().get(0).bStore.getChildCount();
+ assertEquals(originalNumberOfRecords, numberOfRecords);
+ }
}
}
}
Modified: poi/trunk/poi-scratchpad/src/test/java/org/apache/poi/hslf/usermodel/TestRichTextRun.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi-scratchpad/src/test/java/org/apache/poi/hslf/usermodel/TestRichTextRun.java?rev=1889871&r1=1889870&r2=1889871&view=diff
==============================================================================
--- poi/trunk/poi-scratchpad/src/test/java/org/apache/poi/hslf/usermodel/TestRichTextRun.java (original)
+++ poi/trunk/poi-scratchpad/src/test/java/org/apache/poi/hslf/usermodel/TestRichTextRun.java Fri May 14 00:37:50 2021
@@ -24,12 +24,11 @@ import static org.junit.jupiter.api.Asse
import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertTrue;
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
+import org.apache.commons.io.output.UnsynchronizedByteArrayOutputStream;
import org.apache.poi.hslf.HSLFTestDataSamples;
import org.apache.poi.hslf.record.Record;
import org.apache.poi.hslf.record.SlideListWithText;
@@ -230,30 +229,30 @@ public final class TestRichTextRun {
assertEquals("Courier", rtr.getFontFamily());
// Write out and back in
- HSLFSlideShow readS = HSLFTestDataSamples.writeOutAndReadBack(h);
+ try (HSLFSlideShow readS = HSLFTestDataSamples.writeOutAndReadBack(h)) {
- // Tweak existing one again, to ensure really worked
- rtr.setBold(false);
- rtr.setFontSize(17d);
- rtr.setFontFamily("CourierZZ");
-
- // Check it took those changes
- assertFalse(rtr.isBold());
- assertEquals(17., rtr.getFontSize(), 0);
- assertEquals("CourierZZ", rtr.getFontFamily());
-
-
- // Now, look at the one we changed, wrote out, and read back in
- // Ensure it does contain our original modifications
- HSLFSlide slideOneRR = readS.getSlides().get(0);
- List<List<HSLFTextParagraph>> textParassRR = slideOneRR.getTextParagraphs();
- HSLFTextRun rtrRRa = textParassRR.get(0).get(0).getTextRuns().get(0);
-
- assertTrue(rtrRRa.isBold());
- assertNotNull(rtrRRa.getFontSize());
- assertEquals(18., rtrRRa.getFontSize(), 0);
- assertEquals("Courier", rtrRRa.getFontFamily());
- readS.close();
+ // Tweak existing one again, to ensure really worked
+ rtr.setBold(false);
+ rtr.setFontSize(17d);
+ rtr.setFontFamily("CourierZZ");
+
+ // Check it took those changes
+ assertFalse(rtr.isBold());
+ assertEquals(17., rtr.getFontSize(), 0);
+ assertEquals("CourierZZ", rtr.getFontFamily());
+
+
+ // Now, look at the one we changed, wrote out, and read back in
+ // Ensure it does contain our original modifications
+ HSLFSlide slideOneRR = readS.getSlides().get(0);
+ List<List<HSLFTextParagraph>> textParassRR = slideOneRR.getTextParagraphs();
+ HSLFTextRun rtrRRa = textParassRR.get(0).get(0).getTextRuns().get(0);
+
+ assertTrue(rtrRRa.isBold());
+ assertNotNull(rtrRRa.getFontSize());
+ assertEquals(18., rtrRRa.getFontSize(), 0);
+ assertEquals("Courier", rtrRRa.getFontFamily());
+ }
}
}
@@ -370,29 +369,30 @@ public final class TestRichTextRun {
*/
private void assertMatchesSLTWC(HSLFSlideShow s) throws IOException {
// Grab a new copy of slideshow C
- HSLFSlideShow refC = HSLFTestDataSamples.getSlideShow(filenameC);
+ try (HSLFSlideShow refC = HSLFTestDataSamples.getSlideShow(filenameC)) {
- // Write out the 2nd SLWT in the active document
- SlideListWithText refSLWT = refC.getDocumentRecord().getSlideListWithTexts()[1];
- byte[] raw_slwt = writeRecord(refSLWT);
-
- // Write out the same for the supplied slideshow
- SlideListWithText s_SLWT = s.getDocumentRecord().getSlideListWithTexts()[1];
- byte[] s_slwt = writeRecord(s_SLWT);
-
- // Check the records are the same
- assertEquals(refSLWT.getChildRecords().length, s_SLWT.getChildRecords().length);
- for(int i=0; i<refSLWT.getChildRecords().length; i++) {
- Record ref_r = refSLWT.getChildRecords()[i];
- Record s_r = s_SLWT.getChildRecords()[i];
-
- byte[] r_rb = writeRecord(ref_r);
- byte[] s_rb = writeRecord(s_r);
- assertArrayEquals(r_rb, s_rb);
- }
+ // Write out the 2nd SLWT in the active document
+ SlideListWithText refSLWT = refC.getDocumentRecord().getSlideListWithTexts()[1];
+ byte[] raw_slwt = writeRecord(refSLWT);
+
+ // Write out the same for the supplied slideshow
+ SlideListWithText s_SLWT = s.getDocumentRecord().getSlideListWithTexts()[1];
+ byte[] s_slwt = writeRecord(s_SLWT);
+
+ // Check the records are the same
+ assertEquals(refSLWT.getChildRecords().length, s_SLWT.getChildRecords().length);
+ for (int i = 0; i < refSLWT.getChildRecords().length; i++) {
+ Record ref_r = refSLWT.getChildRecords()[i];
+ Record s_r = s_SLWT.getChildRecords()[i];
+
+ byte[] r_rb = writeRecord(ref_r);
+ byte[] s_rb = writeRecord(s_r);
+ assertArrayEquals(r_rb, s_rb);
+ }
- // Check the bytes are the same
- assertArrayEquals(raw_slwt, s_slwt);
+ // Check the bytes are the same
+ assertArrayEquals(raw_slwt, s_slwt);
+ }
}
/**
@@ -401,20 +401,20 @@ public final class TestRichTextRun {
*/
private static void assertMatchesFileC(HSLFSlideShow s) throws IOException {
// Grab the bytes of the file
- POIFSFileSystem fs = new POIFSFileSystem(HSLFTestDataSamples.openSampleFileStream(filenameC));
- InputStream is = fs.createDocumentInputStream(HSLFSlideShow.POWERPOINT_DOCUMENT);
- byte[] raw_file = IOUtils.toByteArray(is);
- is.close();
- fs.close();
+ byte[] raw_file;
+ try (POIFSFileSystem fs = new POIFSFileSystem(HSLFTestDataSamples.openSampleFileStream(filenameC));
+ InputStream is = fs.createDocumentInputStream(HSLFSlideShow.POWERPOINT_DOCUMENT)) {
+ raw_file = IOUtils.toByteArray(is);
+ }
// Now write out the slideshow
- ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ byte[] raw_ss;
+ UnsynchronizedByteArrayOutputStream baos = new UnsynchronizedByteArrayOutputStream();
s.write(baos);
- fs = new POIFSFileSystem(new ByteArrayInputStream(baos.toByteArray()));
- is = fs.createDocumentInputStream(HSLFSlideShow.POWERPOINT_DOCUMENT);
- byte[] raw_ss = IOUtils.toByteArray(is);
- is.close();
- fs.close();
+ try (POIFSFileSystem fs = new POIFSFileSystem(baos.toInputStream());
+ InputStream is = fs.createDocumentInputStream(HSLFSlideShow.POWERPOINT_DOCUMENT)) {
+ raw_ss = IOUtils.toByteArray(is);
+ }
// different paragraph mask, because of sanitizing
raw_ss[169030] = 0x0a;
@@ -424,24 +424,24 @@ public final class TestRichTextRun {
}
private byte[] writeRecord( org.apache.poi.hslf.record.Record r) throws IOException {
- ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ UnsynchronizedByteArrayOutputStream baos = new UnsynchronizedByteArrayOutputStream();
r.writeOut(baos);
return baos.toByteArray();
}
@Test
void testIndentationLevel() throws Exception {
- HSLFSlideShow ppt = HSLFTestDataSamples.getSlideShow("ParagraphStylesShorterThanCharStyles.ppt");
- for (HSLFSlide sl : ppt.getSlides()) {
- for (List<HSLFTextParagraph> txt : sl.getTextParagraphs()) {
- for (HSLFTextParagraph p : txt) {
- int indent = p.getIndentLevel();
- assertTrue(indent >= 0 && indent <= 4 );
- }
+ try (HSLFSlideShow ppt = HSLFTestDataSamples.getSlideShow("ParagraphStylesShorterThanCharStyles.ppt")) {
+ for (HSLFSlide sl : ppt.getSlides()) {
+ for (List<HSLFTextParagraph> txt : sl.getTextParagraphs()) {
+ for (HSLFTextParagraph p : txt) {
+ int indent = p.getIndentLevel();
+ assertTrue(indent >= 0 && indent <= 4);
+ }
+ }
}
}
- ppt.close();
}
@Test
@@ -502,54 +502,54 @@ public final class TestRichTextRun {
@Test
void testSetParagraphStyles() throws IOException {
- HSLFSlideShow ppt1 = new HSLFSlideShow();
+ try (HSLFSlideShow ppt1 = new HSLFSlideShow()) {
- HSLFSlide slide = ppt1.createSlide();
+ HSLFSlide slide = ppt1.createSlide();
- HSLFTextBox shape = new HSLFTextBox();
- shape.setText(
+ HSLFTextBox shape = new HSLFTextBox();
+ shape.setText(
"Hello, World!\r" +
- "This should be\r" +
- "Multiline text");
- HSLFTextParagraph rt = shape.getTextParagraphs().get(0);
- HSLFTextRun tr = rt.getTextRuns().get(0);
- tr.setFontSize(42d);
- rt.setBullet(true);
- rt.setLeftMargin(50d);
- rt.setIndent(0d);
- rt.setBulletChar('\u263A');
- slide.addShape(shape);
-
- assertNotNull(tr.getFontSize());
- assertEquals(42.0, tr.getFontSize(), 0);
- assertTrue(rt.isBullet());
- assertNotNull(rt.getLeftMargin());
- assertEquals(50.0, rt.getLeftMargin(), 0);
- assertNotNull(rt.getIndent());
- assertEquals(0, rt.getIndent(), 0);
- assertNotNull(rt.getBulletChar());
- assertEquals('\u263A', (char)rt.getBulletChar());
-
- shape.setAnchor(new java.awt.Rectangle(50, 50, 500, 300));
- slide.addShape(shape);
-
- //serialize and read again
- HSLFSlideShow ppt2 = HSLFTestDataSamples.writeOutAndReadBack(ppt1);
- slide = ppt2.getSlides().get(0);
- shape = (HSLFTextBox)slide.getShapes().get(0);
- rt = shape.getTextParagraphs().get(0);
- tr = rt.getTextRuns().get(0);
- assertNotNull(tr.getFontSize());
- assertEquals(42.0, tr.getFontSize(), 0);
- assertTrue(rt.isBullet());
- assertNotNull(rt.getLeftMargin());
- assertEquals(50.0, rt.getLeftMargin(), 0);
- assertNotNull(rt.getIndent());
- assertEquals(0, rt.getIndent(), 0);
- assertNotNull(rt.getBulletChar());
- assertEquals('\u263A', (char)rt.getBulletChar());
- ppt2.close();
- ppt1.close();
+ "This should be\r" +
+ "Multiline text");
+ HSLFTextParagraph rt = shape.getTextParagraphs().get(0);
+ HSLFTextRun tr = rt.getTextRuns().get(0);
+ tr.setFontSize(42d);
+ rt.setBullet(true);
+ rt.setLeftMargin(50d);
+ rt.setIndent(0d);
+ rt.setBulletChar('\u263A');
+ slide.addShape(shape);
+
+ assertNotNull(tr.getFontSize());
+ assertEquals(42.0, tr.getFontSize(), 0);
+ assertTrue(rt.isBullet());
+ assertNotNull(rt.getLeftMargin());
+ assertEquals(50.0, rt.getLeftMargin(), 0);
+ assertNotNull(rt.getIndent());
+ assertEquals(0, rt.getIndent(), 0);
+ assertNotNull(rt.getBulletChar());
+ assertEquals('\u263A', (char) rt.getBulletChar());
+
+ shape.setAnchor(new java.awt.Rectangle(50, 50, 500, 300));
+ slide.addShape(shape);
+
+ //serialize and read again
+ try (HSLFSlideShow ppt2 = HSLFTestDataSamples.writeOutAndReadBack(ppt1)) {
+ slide = ppt2.getSlides().get(0);
+ shape = (HSLFTextBox) slide.getShapes().get(0);
+ rt = shape.getTextParagraphs().get(0);
+ tr = rt.getTextRuns().get(0);
+ assertNotNull(tr.getFontSize());
+ assertEquals(42.0, tr.getFontSize(), 0);
+ assertTrue(rt.isBullet());
+ assertNotNull(rt.getLeftMargin());
+ assertEquals(50.0, rt.getLeftMargin(), 0);
+ assertNotNull(rt.getIndent());
+ assertEquals(0, rt.getIndent(), 0);
+ assertNotNull(rt.getBulletChar());
+ assertEquals('\u263A', (char) rt.getBulletChar());
+ }
+ }
}
@Test
Modified: poi/trunk/poi-scratchpad/src/test/java/org/apache/poi/hslf/usermodel/TestTable.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi-scratchpad/src/test/java/org/apache/poi/hslf/usermodel/TestTable.java?rev=1889871&r1=1889870&r2=1889871&view=diff
==============================================================================
--- poi/trunk/poi-scratchpad/src/test/java/org/apache/poi/hslf/usermodel/TestTable.java (original)
+++ poi/trunk/poi-scratchpad/src/test/java/org/apache/poi/hslf/usermodel/TestTable.java Fri May 14 00:37:50 2021
@@ -19,6 +19,7 @@
package org.apache.poi.hslf.usermodel;
+import static org.apache.poi.hslf.HSLFTestDataSamples.writeOutAndReadBack;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertNotNull;
@@ -26,8 +27,6 @@ import static org.junit.jupiter.api.Asse
import java.awt.Color;
import java.awt.geom.Rectangle2D;
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.List;
@@ -108,58 +107,49 @@ public class TestTable {
@Test
void testAddText() throws IOException {
- HSLFSlideShow ppt1 = new HSLFSlideShow();
- HSLFSlide slide = ppt1.createSlide();
- HSLFTable tab = slide.createTable(4, 5);
-
- int rows = tab.getNumberOfRows();
- int cols = tab.getNumberOfColumns();
- for (int row=0; row<rows; row++) {
- for (int col=0; col<cols; col++) {
- HSLFTableCell c = tab.getCell(row, col);
- assertNotNull(c);
- c.setText("r"+(row+1)+"c"+(col+1));
+ try (HSLFSlideShow ppt1 = new HSLFSlideShow()) {
+ HSLFSlide slide = ppt1.createSlide();
+ HSLFTable tab = slide.createTable(4, 5);
+
+ int rows = tab.getNumberOfRows();
+ int cols = tab.getNumberOfColumns();
+ for (int row = 0; row < rows; row++) {
+ for (int col = 0; col < cols; col++) {
+ HSLFTableCell c = tab.getCell(row, col);
+ assertNotNull(c);
+ c.setText("r" + (row + 1) + "c" + (col + 1));
+ }
}
- }
- ByteArrayOutputStream bos = new ByteArrayOutputStream();
- ppt1.write(bos);
- ppt1.close();
-
- ByteArrayInputStream bis = new ByteArrayInputStream(bos.toByteArray());
- HSLFSlideShow ppt2 = new HSLFSlideShow(bis);
- slide = ppt2.getSlides().get(0);
- tab = (HSLFTable)slide.getShapes().get(0);
-
- rows = tab.getNumberOfRows();
- cols = tab.getNumberOfColumns();
- for (int row=0; row<rows; row++) {
- for (int col=0; col<cols; col++) {
- HSLFTableCell c = tab.getCell(row, col);
- assertNotNull(c);
- c.setText(c.getText()+"...");
+ try (HSLFSlideShow ppt2 = writeOutAndReadBack(ppt1)) {
+ slide = ppt2.getSlides().get(0);
+ tab = (HSLFTable) slide.getShapes().get(0);
+
+ rows = tab.getNumberOfRows();
+ cols = tab.getNumberOfColumns();
+ for (int row = 0; row < rows; row++) {
+ for (int col = 0; col < cols; col++) {
+ HSLFTableCell c = tab.getCell(row, col);
+ assertNotNull(c);
+ c.setText(c.getText() + "...");
+ }
+ }
+
+ try (HSLFSlideShow ppt3 = writeOutAndReadBack(ppt2)) {
+ slide = ppt3.getSlides().get(0);
+ tab = (HSLFTable) slide.getShapes().get(0);
+
+ rows = tab.getNumberOfRows();
+ cols = tab.getNumberOfColumns();
+ for (int row = 0; row < rows; row++) {
+ for (int col = 0; col < cols; col++) {
+ HSLFTableCell c = tab.getCell(row, col);
+ assertNotNull(c);
+ assertEquals("r" + (row + 1) + "c" + (col + 1) + "...", c.getText());
+ }
+ }
+ }
}
}
-
- bos.reset();
- ppt2.write(bos);
- ppt2.close();
-
- bis = new ByteArrayInputStream(bos.toByteArray());
- HSLFSlideShow ppt3 = new HSLFSlideShow(bis);
- slide = ppt3.getSlides().get(0);
- tab = (HSLFTable)slide.getShapes().get(0);
-
- rows = tab.getNumberOfRows();
- cols = tab.getNumberOfColumns();
- for (int row=0; row<rows; row++) {
- for (int col=0; col<cols; col++) {
- HSLFTableCell c = tab.getCell(row, col);
- assertNotNull(c);
- assertEquals("r"+(row+1)+"c"+(col+1)+"...", c.getText());
- }
- }
-
- ppt3.close();
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@poi.apache.org
For additional commands, e-mail: commits-help@poi.apache.org