<!-- classes are omitted on test cases outside the xml-dsign area to avoid classpath poisioning -->
<!--path refid="ooxml.xmlsec.classpath"/-->
<!-- Used only for ExtractorFactory, see #57963 -->
- <pathelement location="${scratchpad.output.dir}"/>
+ <pathelement location="${scratchpad.output.dir}" unless:true="${scratchpad.ignore}"/>
</path>
<path id="test.classpath">
<exclude name="**/All*Tests.java"/>
<exclude name="**/TestSignatureInfo.java"/>
<exclude name="**/${testexcludepattern}.java"/>
+ <exclude name="**/TestExtractorFactory.java" if:true="${scratchpad.ignore}"/>
</fileset>
</batchtest>
</junit>
</jacoco:coverage>
- <jacoco:coverage enabled="${coverage.enabled}" excludes="${coverage.excludes}" destfile="build/jacoco-@{type}-xmlsec.exec">
+ <jacoco:coverage enabled="${coverage.enabled}" excludes="${coverage.excludes}" destfile="build/jacoco-@{type}-xmlsec.exec">
<junit printsummary="yes" fork="yes" forkmode="once" haltonfailure="${halt.on.test.failure}"
failureproperty="ooxml.xmlsec.test.failed">
<classpath>
\r
package org.apache.poi.sl;\r
\r
+import static org.apache.poi.sl.TestTable.openSampleSlideshow;\r
import static org.junit.Assert.assertEquals;\r
import static org.junit.Assert.assertFalse;\r
import static org.junit.Assert.assertNull;\r
import static org.junit.Assert.assertTrue;\r
-import static org.apache.poi.sl.TestTable.openSampleSlideshow;\r
+import static org.junit.Assume.assumeFalse;\r
\r
import java.io.IOException;\r
import java.util.List;\r
\r
import org.apache.poi.hslf.model.HeadersFooters;\r
import org.apache.poi.hslf.usermodel.HSLFSlide;\r
-import org.apache.poi.hslf.usermodel.HSLFSlideShow;\r
import org.apache.poi.hslf.usermodel.HSLFTextParagraph;\r
import org.apache.poi.sl.usermodel.Shape;\r
import org.apache.poi.sl.usermodel.Slide;\r
import org.apache.poi.sl.usermodel.SlideShow;\r
import org.apache.poi.sl.usermodel.TextParagraph;\r
import org.apache.poi.sl.usermodel.TextShape;\r
+import org.junit.BeforeClass;\r
import org.junit.Test;\r
\r
public class TestHeadersFooters {\r
+ private static boolean xslfOnly = false;\r
+\r
+ @BeforeClass\r
+ public static void checkHslf() {\r
+ try {\r
+ Class.forName("org.apache.poi.hslf.usermodel.HSLFSlideShow");\r
+ } catch (Exception e) {\r
+ xslfOnly = true;\r
+ }\r
+ }\r
+\r
+ \r
@Test\r
- public void bug58144() throws IOException {\r
- SlideShow<?,?> ppt1 = openSampleSlideshow("bug58144-headers-footers-2003.ppt");\r
- HSLFSlide sl1 = (HSLFSlide)ppt1.getSlides().get(0);\r
- HeadersFooters hfs1 = sl1.getHeadersFooters();\r
- assertNull(hfs1.getHeaderText());\r
- assertEquals("Confidential", hfs1.getFooterText());\r
- List<List<HSLFTextParagraph>> llp1 = sl1.getTextParagraphs();\r
- assertEquals("Test", HSLFTextParagraph.getText(llp1.get(0)));\r
- assertFalse(llp1.get(0).get(0).isHeaderOrFooter());\r
- ppt1.close();\r
+ public void bug58144a() throws IOException {\r
+ assumeFalse(xslfOnly);\r
+ SlideShow<?,?> ppt = openSampleSlideshow("bug58144-headers-footers-2003.ppt");\r
+ HSLFSlide sl = (HSLFSlide)ppt.getSlides().get(0);\r
+ HeadersFooters hfs = sl.getHeadersFooters();\r
+ assertNull(hfs.getHeaderText());\r
+ assertEquals("Confidential", hfs.getFooterText());\r
+ List<List<HSLFTextParagraph>> llp = sl.getTextParagraphs();\r
+ assertEquals("Test", HSLFTextParagraph.getText(llp.get(0)));\r
+ assertFalse(llp.get(0).get(0).isHeaderOrFooter());\r
+ ppt.close();\r
+ }\r
+ \r
+ @Test\r
+ public void bug58144b() throws IOException {\r
+ assumeFalse(xslfOnly);\r
+ SlideShow<?,?> ppt = openSampleSlideshow("bug58144-headers-footers-2007.ppt");\r
+ Slide<?,?> sl = ppt.getSlides().get(0);\r
+ HeadersFooters hfs2 = ((HSLFSlide)sl).getHeadersFooters();\r
+ assertNull(hfs2.getHeaderText());\r
+ assertEquals("Slide footer", hfs2.getFooterText());\r
\r
- String ppt2007s[] = {\r
- "bug58144-headers-footers-2007.ppt", "bug58144-headers-footers-2007.pptx"\r
- };\r
+ testSlideShow(ppt);\r
+ ppt.close();\r
+ }\r
+ \r
+ @Test\r
+ public void bug58144c() throws IOException {\r
+ SlideShow<?,?> ppt = openSampleSlideshow("bug58144-headers-footers-2007.pptx");\r
+ testSlideShow(ppt);\r
+ ppt.close();\r
+ }\r
+ \r
+ private void testSlideShow(SlideShow<?,?> ppt) {\r
+ Slide<?,?> sl = ppt.getSlides().get(0);\r
\r
- for (String pptName : ppt2007s) {\r
- SlideShow<?,?> ppt2 = openSampleSlideshow(pptName);\r
- Slide<?,?> sl2 = ppt2.getSlides().get(0);\r
- \r
- if (ppt2 instanceof HSLFSlideShow) {\r
- HeadersFooters hfs2 = ((HSLFSlide)sl2).getHeadersFooters();\r
- assertNull(hfs2.getHeaderText());\r
- assertEquals("Slide footer", hfs2.getFooterText());\r
- }\r
- \r
- List<? extends Shape<?,?>> shapes = sl2.getShapes();\r
- TextShape<?,?> ts0 = (TextShape<?,?>)shapes.get(0);\r
- assertEquals("Test file", ts0.getText());\r
- TextShape<?,?> ts1 = (TextShape<?,?>)shapes.get(1);\r
- assertEquals("Has some text in the headers and footers", ts1.getText());\r
- TextShape<?,?> ts2 = (TextShape<?,?>)shapes.get(2);\r
- assertEquals("Slide footer", ts2.getText());\r
- List<? extends TextParagraph<?,?,?>> ltp2 = ts2.getTextParagraphs();\r
- assertTrue(ltp2.get(0).isHeaderOrFooter());\r
- ppt2.close();\r
- }\r
+ List<? extends Shape<?,?>> shapes = sl.getShapes();\r
+ TextShape<?,?> ts0 = (TextShape<?,?>)shapes.get(0);\r
+ assertEquals("Test file", ts0.getText());\r
+ TextShape<?,?> ts1 = (TextShape<?,?>)shapes.get(1);\r
+ assertEquals("Has some text in the headers and footers", ts1.getText());\r
+ TextShape<?,?> ts2 = (TextShape<?,?>)shapes.get(2);\r
+ assertEquals("Slide footer", ts2.getText());\r
+ List<? extends TextParagraph<?,?,?>> ltp = ts2.getTextParagraphs();\r
+ assertTrue(ltp.get(0).isHeaderOrFooter());\r
}\r
}\r
package org.apache.poi.sl;\r
\r
import static org.junit.Assert.assertEquals;\r
+import static org.junit.Assume.assumeFalse;\r
\r
import java.awt.geom.Rectangle2D;\r
import java.io.ByteArrayInputStream;\r
import org.apache.poi.sl.usermodel.TableShape;\r
import org.apache.poi.sl.usermodel.TextShape.TextDirection;\r
import org.apache.poi.xslf.usermodel.XMLSlideShow;\r
+import org.junit.BeforeClass;\r
import org.junit.Test;\r
\r
public class TestTable {\r
private static POIDataSamples _slTests = POIDataSamples.getSlideShowInstance();\r
+ private static boolean xslfOnly = false;\r
+\r
+ @BeforeClass\r
+ public static void checkHslf() {\r
+ try {\r
+ Class.forName("org.apache.poi.hslf.usermodel.HSLFSlideShow");\r
+ } catch (Exception e) {\r
+ xslfOnly = true;\r
+ }\r
+ }\r
+ \r
\r
/** a generic way to open a sample slideshow document **/\r
public static SlideShow<?,?> openSampleSlideshow(String sampleName) throws IOException {\r
\r
@Test\r
public void testColWidthRowHeight() throws IOException {\r
+ assumeFalse(xslfOnly);\r
+\r
// Test of table dimensions of same slideshow saved as ppt/x\r
// to check if both return similar (points) value\r
SlideShow<?,?> ppt = openSampleSlideshow("table_test.ppt");\r
}\r
\r
@Test\r
- public void testTextDirection() throws IOException {\r
+ public void testTextDirectionHSLF() throws IOException {\r
+ assumeFalse(xslfOnly);\r
+ SlideShow<?,?> ppt1 = new HSLFSlideShow();\r
+ testTextDirection(ppt1);\r
+ ppt1.close();\r
+ }\r
+ \r
+ @Test\r
+ public void testTextDirectionXSLF() throws IOException {\r
+ SlideShow<?,?> ppt1 = new XMLSlideShow();\r
+ testTextDirection(ppt1);\r
+ ppt1.close();\r
+ }\r
+ \r
+ private void testTextDirection(SlideShow<?,?> ppt1) throws IOException {\r
\r
TextDirection tds[] = {\r
TextDirection.HORIZONTAL,\r
// TextDirection.STACKED is not supported on HSLF\r
};\r
\r
- for (int i=0; i<2; i++) {\r
- SlideShow<?,?> ppt1 = (i == 0) ? new HSLFSlideShow() : new XMLSlideShow();\r
- TableShape<?,?> tbl1 = ppt1.createSlide().createTable(1, 3);\r
- tbl1.setAnchor(new Rectangle2D.Double(50, 50, 200, 200));\r
- \r
- int col = 0;\r
- for (TextDirection td : tds) {\r
- TableCell<?,?> c = tbl1.getCell(0, col++);\r
- if (c != null) {\r
- c.setTextDirection(td);\r
- c.setText("bla");\r
- }\r
- }\r
- \r
- ByteArrayOutputStream bos = new ByteArrayOutputStream();\r
- ppt1.write(bos);\r
- ppt1.close();\r
- \r
- InputStream is = new ByteArrayInputStream(bos.toByteArray());\r
- SlideShow<?,?> ppt2 = SlideShowFactory.create(is);\r
- TableShape<?,?> tbl2 = (TableShape<?,?>)ppt2.getSlides().get(0).getShapes().get(0);\r
- \r
- col = 0;\r
- for (TextDirection td : tds) {\r
- TableCell<?,?> c = tbl2.getCell(0, col++);\r
- assertEquals(td, c.getTextDirection());\r
+ TableShape<?,?> tbl1 = ppt1.createSlide().createTable(1, 3);\r
+ tbl1.setAnchor(new Rectangle2D.Double(50, 50, 200, 200));\r
+ \r
+ int col = 0;\r
+ for (TextDirection td : tds) {\r
+ TableCell<?,?> c = tbl1.getCell(0, col++);\r
+ if (c != null) {\r
+ c.setTextDirection(td);\r
+ c.setText("bla");\r
}\r
- ppt2.close();\r
}\r
+ \r
+ ByteArrayOutputStream bos = new ByteArrayOutputStream();\r
+ ppt1.write(bos);\r
+ ppt1.close();\r
+ \r
+ InputStream is = new ByteArrayInputStream(bos.toByteArray());\r
+ SlideShow<?,?> ppt2 = SlideShowFactory.create(is);\r
+ TableShape<?,?> tbl2 = (TableShape<?,?>)ppt2.getSlides().get(0).getShapes().get(0);\r
+ \r
+ col = 0;\r
+ for (TextDirection td : tds) {\r
+ TableCell<?,?> c = tbl2.getCell(0, col++);\r
+ assertEquals(td, c.getTextDirection());\r
+ }\r
+ ppt2.close();\r
}\r
}\r
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
+import static org.junit.Assume.assumeFalse;
import java.awt.Dimension;
import java.awt.geom.Rectangle2D;
import org.apache.poi.sl.usermodel.SlideShow;
import org.apache.poi.sl.usermodel.SlideShowFactory;
import org.apache.poi.util.Units;
+import org.junit.BeforeClass;
import org.junit.Test;
public class TestDrawPictureShape {
final static POIDataSamples ssSamples = POIDataSamples.getSlideShowInstance();
+
+ private static boolean xslfOnly = false;
+
+ @BeforeClass
+ public static void checkHslf() {
+ try {
+ Class.forName("org.apache.poi.hslf.usermodel.HSLFSlideShow");
+ } catch (Exception e) {
+ xslfOnly = true;
+ }
+ }
/** a generic way to open a sample slideshow document **/
public static SlideShow<?,?> openSampleDocument(String sampleName) throws IOException {
}
@Test
- public void testResize() throws Exception {
- String files[] = { "pictures.ppt", "shapes.pptx" };
- for (String file : files) {
- SlideShow<?,?> ss = openSampleDocument(file);
-
- Slide<?,?> slide = ss.getSlides().get(0);
- PictureShape<?,?> picShape = null;
- for (Shape<?,?> shape : slide.getShapes()) {
- if (shape instanceof PictureShape) {
- picShape = (PictureShape<?,?>)shape;
- break;
- }
+ public void testResizeHSLF() throws IOException {
+ assumeFalse(xslfOnly);
+ testResize("pictures.ppt");
+ }
+
+ @Test
+ public void testResizeXSLF() throws IOException {
+ testResize("shapes.pptx");
+ }
+
+
+ public void testResize(String file) throws IOException {
+ SlideShow<?,?> ss = openSampleDocument(file);
+
+ Slide<?,?> slide = ss.getSlides().get(0);
+ PictureShape<?,?> picShape = null;
+ for (Shape<?,?> shape : slide.getShapes()) {
+ if (shape instanceof PictureShape) {
+ picShape = (PictureShape<?,?>)shape;
+ break;
}
- assertNotNull(picShape);
- PictureData pd = picShape.getPictureData();
- Dimension dimPd = pd.getImageDimension();
- new DrawPictureShape(picShape).resize();
- Dimension dimShape = new Dimension(
- (int)picShape.getAnchor().getWidth(),
- (int)picShape.getAnchor().getHeight()
- );
- assertEquals(dimPd, dimShape);
-
- double newWidth = (dimPd.getWidth()*(100d/dimPd.getHeight()));
- // ... -1 is a rounding error
- Rectangle2D expRect = new Rectangle2D.Double(rbf(50+300-newWidth, picShape), 50, rbf(newWidth, picShape), 100);
- Rectangle2D target = new Rectangle2D.Double(50,50,300,100);
- new DrawPictureShape(picShape).resize(target, RectAlign.BOTTOM_RIGHT);
- Rectangle2D actRect = picShape.getAnchor();
- assertEquals(expRect.getX(), actRect.getX(), .0001);
- assertEquals(expRect.getY(), actRect.getY(), .0001);
- assertEquals(expRect.getWidth(), actRect.getWidth(), .0001);
- assertEquals(expRect.getHeight(), actRect.getHeight(), .0001);
- ss.close();
}
+ assertNotNull(picShape);
+ PictureData pd = picShape.getPictureData();
+ Dimension dimPd = pd.getImageDimension();
+ new DrawPictureShape(picShape).resize();
+ Dimension dimShape = new Dimension(
+ (int)picShape.getAnchor().getWidth(),
+ (int)picShape.getAnchor().getHeight()
+ );
+ assertEquals(dimPd, dimShape);
+
+ double newWidth = (dimPd.getWidth()*(100d/dimPd.getHeight()));
+ // ... -1 is a rounding error
+ Rectangle2D expRect = new Rectangle2D.Double(rbf(50+300-newWidth, picShape), 50, rbf(newWidth, picShape), 100);
+ Rectangle2D target = new Rectangle2D.Double(50,50,300,100);
+ new DrawPictureShape(picShape).resize(target, RectAlign.BOTTOM_RIGHT);
+ Rectangle2D actRect = picShape.getAnchor();
+ assertEquals(expRect.getX(), actRect.getX(), .0001);
+ assertEquals(expRect.getY(), actRect.getY(), .0001);
+ assertEquals(expRect.getWidth(), actRect.getWidth(), .0001);
+ assertEquals(expRect.getHeight(), actRect.getHeight(), .0001);
+ ss.close();
}
// round back and forth - points -> master -> points
\r
package org.apache.poi.xslf.usermodel;\r
\r
+import static org.junit.Assume.assumeFalse;\r
+\r
import java.io.File;\r
+import java.io.FileFilter;\r
+import java.util.Collection;\r
+import java.util.Set;\r
+import java.util.TreeSet;\r
+import java.util.regex.Pattern;\r
\r
import org.apache.poi.POIDataSamples;\r
import org.apache.poi.xslf.util.PPTX2PNG;\r
+import org.junit.BeforeClass;\r
import org.junit.Test;\r
+import org.junit.runner.RunWith;\r
+import org.junit.runners.Parameterized;\r
+import org.junit.runners.Parameterized.Parameter;\r
+import org.junit.runners.Parameterized.Parameters;\r
\r
/**\r
- * Date: 10/26/11\r
- *\r
- * @author Yegor Kozlov\r
+ * Test class for testing PPTX2PNG utility which renderes .ppt and .pptx slideshows\r
*/\r
+@RunWith(Parameterized.class)\r
public class TestPPTX2PNG {\r
+ private static boolean xslfOnly = false;\r
+ private static final POIDataSamples samples = POIDataSamples.getSlideShowInstance();\r
+ private static final File basedir = null;\r
+ private static final String files =\r
+ "53446.ppt, alterman_security.ppt, alterman_security.pptx, KEY02.pptx, themes.pptx, backgrounds.pptx, layouts.pptx, sample.pptx, shapes.pptx";\r
+\r
+ \r
+ \r
+ @BeforeClass\r
+ public static void checkHslf() {\r
+ try {\r
+ Class.forName("org.apache.poi.hslf.usermodel.HSLFSlideShow");\r
+ } catch (Exception e) {\r
+ xslfOnly = true;\r
+ }\r
+ }\r
+ \r
+ // use filename instead of File object to omit full pathname in test name\r
+ @Parameter(value = 0)\r
+ public String pptFile;\r
+ \r
+ @Parameters(name="{0}")\r
+ public static Collection<String> data() {\r
+ final Set<String> data = new TreeSet<String>();\r
+ for (String f : files.split(", ?")) {\r
+ if (basedir == null) {\r
+ data.add(f);\r
+ } else {\r
+ final Pattern p = Pattern.compile(f);\r
+ basedir.listFiles(new FileFilter(){\r
+ public boolean accept(File pathname) {\r
+ String name = pathname.getName();\r
+ if (p.matcher(name).matches()) {\r
+ data.add(name);\r
+ }\r
+ return false;\r
+ }\r
+ });\r
+ }\r
+ }\r
+ \r
+ return data;\r
+ }\r
\r
@Test\r
public void render() throws Exception {\r
- POIDataSamples samples = POIDataSamples.getSlideShowInstance();\r
-\r
-// File testFilesX[] = new File("tmp_ppt").listFiles(new FileFilter() {\r
-// public boolean accept(File pathname) {\r
-// return pathname.getName().toLowerCase().contains("ppt");\r
-// }\r
-// });\r
-// String testFiles[] = new String[testFilesX.length];\r
-// for (int i=0; i<testFilesX.length; i++) {\r
-// testFiles[i] = testFilesX[i].getPath();\r
-// }\r
+ assumeFalse("ignore HSLF / .ppt files in no-scratchpad run", xslfOnly && pptFile.toLowerCase().endsWith("ppt"));\r
\r
-\r
- String[] testFiles = {"53446.ppt", "alterman_security.ppt","alterman_security.pptx","KEY02.pptx","themes.pptx","backgrounds.pptx","layouts.pptx", "sample.pptx", "shapes.pptx",};\r
String[] args = {\r
"-format", "null", // png,gif,jpg or null for test\r
"-slide", "-1", // -1 for all\r
"-outdir", new File("build/tmp/").getCanonicalPath(),\r
"-quiet",\r
- "dummyfile"\r
+ (basedir == null ? samples.getFile(pptFile) : new File(basedir, pptFile)).getAbsolutePath()\r
};\r
- for(String sampleFile : testFiles){\r
- args[args.length-1] = samples.getFile(sampleFile).getCanonicalPath();\r
-// args[args.length-1] = new File(sampleFile).getCanonicalPath();\r
- try {\r
- PPTX2PNG.main(args);\r
- } catch (IllegalStateException e) {\r
- throw new IllegalStateException("While reading file " + sampleFile, e);\r
- }\r
- }\r
+ PPTX2PNG.main(args);\r
}\r
}\r