diff options
author | Josh Micich <josh@apache.org> | 2009-02-05 05:07:23 +0000 |
---|---|---|
committer | Josh Micich <josh@apache.org> | 2009-02-05 05:07:23 +0000 |
commit | ba79578f0f359d59d22745a8d181ac371c9c41e8 (patch) | |
tree | 22bb9cf4ced7d50475c359f3a5b5832ba48f8fe4 /src | |
parent | 6fd3790d79f1e72875a7d9d9169d6dba05b0d528 (diff) | |
download | poi-ba79578f0f359d59d22745a8d181ac371c9c41e8.tar.gz poi-ba79578f0f359d59d22745a8d181ac371c9c41e8.zip |
Improvements to OpenXML4J unit tests. Fixed class names. Refactored code for opening test data files. Changed test output to go to temp dir.
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@741002 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'src')
19 files changed, 479 insertions, 548 deletions
diff --git a/src/ooxml/testcases/org/apache/poi/openxml4j/OpenXML4JTestDataSamples.java b/src/ooxml/testcases/org/apache/poi/openxml4j/OpenXML4JTestDataSamples.java new file mode 100755 index 0000000000..62291d37bd --- /dev/null +++ b/src/ooxml/testcases/org/apache/poi/openxml4j/OpenXML4JTestDataSamples.java @@ -0,0 +1,148 @@ +/* ==================================================================== + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +==================================================================== */ + +package org.apache.poi.openxml4j; + +import java.io.File; +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.InputStream; + +/** + * Centralises logic for finding/opening sample files for ooxml4j unit tests + * + * @author jmicich + */ +public final class OpenXML4JTestDataSamples { + + private static final String IN_DIR_PROP_NAME = "openxml4j.testdata.input"; + private static final String COMP_IN_DIR_PROP_NAME = "openxml4j.compliance.input"; + + private static File _sampleInputDir; + private static File _sampleOutputDir; + private static File _complianceSampleInputDir; + + private OpenXML4JTestDataSamples() { + // no instances of this class + } + + public static InputStream openSampleStream(String sampleFileName) { + File f = getSampleFile(sampleFileName); + try { + return new FileInputStream(f); + } catch (FileNotFoundException e) { + throw new RuntimeException(e); + } + } + public static String getSampleFileName(String sampleFileName) { + // TODO - investigate allowing read/write access for package opened on stream + return getSampleFile(sampleFileName).getAbsolutePath(); + } + + public static File getSampleFile(String sampleFileName) { + File dir = getSampleInputDir(); + File f = new File(dir, sampleFileName); + if (!f.exists()) { + throw new RuntimeException("Specified sample file '" + + f.getAbsolutePath() + "' does not exist"); + } + if (f.isDirectory()) { + throw new RuntimeException("Specified sample file '" + + f.getAbsolutePath() + "' is a directory"); + } + return f; + } + + public static File getOutputFile(String outputFileName) { + File dir = getSampleOutputDir(); + return new File(dir, outputFileName); + } + + + public static InputStream openComplianceSampleStream(String sampleFileName) { + File f = getComplianceSampleFile(sampleFileName); + try { + return new FileInputStream(f); + } catch (FileNotFoundException e) { + throw new RuntimeException(e); + } + } + private static File getComplianceSampleFile(String sampleFileName) { + File dir = getComplianceSampleInputDir(); + File f = new File(dir, sampleFileName); + if (!f.exists()) { + throw new RuntimeException("Specified sample file '" + + f.getAbsolutePath() + "' does not exist"); + } + if (f.isDirectory()) { + throw new RuntimeException("Specified sample file '" + + f.getAbsolutePath() + "' is a directory"); + } + return f; + } + public static String getComplianceSampleFileName(String sampleFileName) { + return getComplianceSampleFile(sampleFileName).getAbsolutePath(); + } + private static File getComplianceSampleInputDir() { + if (_complianceSampleInputDir == null) { + _complianceSampleInputDir = getAndCheckDirByProperty(COMP_IN_DIR_PROP_NAME); + } + return _complianceSampleInputDir; + } + + + private static File getSampleInputDir() { + if (_sampleInputDir == null) { + _sampleInputDir = getAndCheckDirByProperty(IN_DIR_PROP_NAME); + } + return _sampleInputDir; + } + + private static File getAndCheckDirByProperty(String propName) { + String dirName = System.getProperty(propName); + File dir = new File(dirName); + if (!dir.exists()) { + throw new RuntimeException("Specified '" + propName + "' directory: '" + + dirName + "' does not exist"); + } + if (!dir.isDirectory()) { + throw new RuntimeException("Specified '" + propName + "' directory: '" + + dirName + "' is a not a proper directory"); + } + return dir; + } + + private static File getSampleOutputDir() { + if (_sampleOutputDir == null) { + File dir = new File(System.getProperty("java.io.tmpdir"), "poifiles"); + if (dir.exists()) { + if (!dir.isDirectory()) { + throw new RuntimeException("Specified output directory: '" + + dir.getAbsolutePath() + "' is a not a proper directory"); + } + } else { + if (!dir.mkdirs()) { + throw new RuntimeException("Failed to create directory: '" + + dir.getAbsolutePath() + "'"); + } + } + _sampleOutputDir = dir; + } + return _sampleOutputDir; + } + +} diff --git a/src/ooxml/testcases/org/apache/poi/openxml4j/TestCore.java b/src/ooxml/testcases/org/apache/poi/openxml4j/TestCore.java deleted file mode 100755 index 26bf0ce0fe..0000000000 --- a/src/ooxml/testcases/org/apache/poi/openxml4j/TestCore.java +++ /dev/null @@ -1,102 +0,0 @@ -/* ====================================================================
- Licensed to the Apache Software Foundation (ASF) under one or more
- contributor license agreements. See the NOTICE file distributed with
- this work for additional information regarding copyright ownership.
- The ASF licenses this file to You under the Apache License, Version 2.0
- (the "License"); you may not use this file except in compliance with
- the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-==================================================================== */
-
-package org.apache.poi.openxml4j;
-
-import java.io.File;
-
-import org.apache.log4j.Logger;
-import org.apache.log4j.PropertyConfigurator;
-
-/**
- * Core helper for tests.
- *
- * @author Julien Chable
- * @version 1.0
- */
-public class TestCore {
-
- private String testRootPath; // Test root path
-
- /**
- * All sample document are normally located at this place.
- */
- private static String pathRootProject; // Project root path
-
- /**
- * Demo logger
- */
- private static Logger logger = Logger.getLogger("org.apache.poi.openxml4j.test");
-
- static {
- pathRootProject = System.getProperty("user.dir") + File.separator + "bin";
-
- // Log4j configuration
- //PropertyConfigurator.configure(pathRootProject + File.separator
- // + "config.log4j");
- }
-
- /**
- * Constructor. Initialize the demo.
- *
- */
- public TestCore(Class cl) {
- init(cl);
- }
-
- /**
- * Initialize the test root path
- */
- public void init(Class cl) {
- String packageName = cl.getPackage().getName();
- // replace . by /
- String sep = File.separator;
- if (sep.equals("\\")) {
- sep = "\\\\";
- }
- testRootPath = pathRootProject + File.separator
- + packageName.replaceAll("\\.", sep)
- + File.separator;
- }
-
- // Accessors
-
- /**
- * Gets the test root path.
- *
- * @return The test root path.
- */
- public String getTestRootPath() {
- return testRootPath;
- }
-
- /**
- * Sets the test root path.
- *
- * @param testRoot
- */
- public void setTestRootPath(String testRoot) {
- this.testRootPath = testRoot;
- }
-
- /**
- * @return the logger
- */
- public static Logger getLogger() {
- return logger;
- }
-}
diff --git a/src/ooxml/testcases/org/apache/poi/openxml4j/opc/AllTests.java b/src/ooxml/testcases/org/apache/poi/openxml4j/opc/AllOpenXML4JTests.java index 4b2cc45a56..12bc3888b2 100755 --- a/src/ooxml/testcases/org/apache/poi/openxml4j/opc/AllTests.java +++ b/src/ooxml/testcases/org/apache/poi/openxml4j/opc/AllOpenXML4JTests.java @@ -20,19 +20,25 @@ package org.apache.poi.openxml4j.opc; import junit.framework.Test;
import junit.framework.TestSuite;
-public class AllTests {
+import org.apache.poi.openxml4j.opc.compliance.AllOpenXML4JComplianceTests;
+import org.apache.poi.openxml4j.opc.internal.AllOpenXML4JInternalTests;
+
+public final class AllOpenXML4JTests {
public static Test suite() {
- TestSuite suite = new TestSuite(
- "Functional tests for org.apache.poi.openxml4j.opc");
- suite.addTestSuite(TestListParts.class);
+
+ TestSuite suite = new TestSuite(AllOpenXML4JTests.class.getName());
+ suite.addTestSuite(TestContentType.class);
suite.addTestSuite(TestFileHelper.class);
+ suite.addTestSuite(TestListParts.class);
suite.addTestSuite(TestPackage.class);
suite.addTestSuite(TestPackageCoreProperties.class);
suite.addTestSuite(TestPackagePartName.class);
- suite.addTestSuite(TestPackagingURIHelper.class);
- suite.addTestSuite(TestContentType.class);
suite.addTestSuite(TestPackageThumbnail.class);
+ suite.addTestSuite(TestPackagingURIHelper.class);
+ suite.addTestSuite(TestRelationships.class);
+ suite.addTest(AllOpenXML4JComplianceTests.suite());
+ suite.addTest(AllOpenXML4JInternalTests.suite());
return suite;
}
}
diff --git a/src/ooxml/testcases/org/apache/poi/openxml4j/opc/OUTPUT/TestCreatePackageOUTPUT.docx b/src/ooxml/testcases/org/apache/poi/openxml4j/opc/OUTPUT/TestCreatePackageOUTPUT.docx Binary files differdeleted file mode 100755 index 3da1daeb98..0000000000 --- a/src/ooxml/testcases/org/apache/poi/openxml4j/opc/OUTPUT/TestCreatePackageOUTPUT.docx +++ /dev/null diff --git a/src/ooxml/testcases/org/apache/poi/openxml4j/opc/OUTPUT/TestPackageRemovePartRecursiveTMP.docx b/src/ooxml/testcases/org/apache/poi/openxml4j/opc/OUTPUT/TestPackageRemovePartRecursiveTMP.docx Binary files differdeleted file mode 100755 index c8c43dce69..0000000000 --- a/src/ooxml/testcases/org/apache/poi/openxml4j/opc/OUTPUT/TestPackageRemovePartRecursiveTMP.docx +++ /dev/null diff --git a/src/ooxml/testcases/org/apache/poi/openxml4j/opc/OUTPUT/TestPackageThumbnailOUTPUT.docx b/src/ooxml/testcases/org/apache/poi/openxml4j/opc/OUTPUT/TestPackageThumbnailOUTPUT.docx Binary files differdeleted file mode 100755 index a41daa5ec5..0000000000 --- a/src/ooxml/testcases/org/apache/poi/openxml4j/opc/OUTPUT/TestPackageThumbnailOUTPUT.docx +++ /dev/null diff --git a/src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestListParts.java b/src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestListParts.java index 359c02faf8..c35f57833e 100755 --- a/src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestListParts.java +++ b/src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestListParts.java @@ -17,27 +17,22 @@ package org.apache.poi.openxml4j.opc;
-import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
import java.util.TreeMap;
import junit.framework.TestCase;
+import org.apache.log4j.Logger;
+import org.apache.poi.openxml4j.OpenXML4JTestDataSamples;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
-import org.apache.poi.openxml4j.opc.Package;
-import org.apache.poi.openxml4j.opc.PackageAccess;
-import org.apache.poi.openxml4j.opc.PackagePart;
-import org.apache.poi.openxml4j.opc.PackagePartName;
-import org.apache.poi.openxml4j.opc.PackagingURIHelper;
-import org.apache.poi.openxml4j.TestCore;
+public final class TestListParts extends TestCase {
+ private static Logger logger = Logger.getLogger("org.apache.poi.openxml4j.test");
-public class TestListParts extends TestCase {
+ private TreeMap<PackagePartName, String> expectedValues;
- TestCore testCore = new TestCore(this.getClass());
-
- TreeMap<PackagePartName, String> expectedValues;
-
- TreeMap<PackagePartName, String> values;
+ private TreeMap<PackagePartName, String> values;
@Override
protected void setUp() throws Exception {
@@ -86,13 +81,17 @@ public class TestListParts extends TestCase { * List all parts of a package.
*/
public void testListParts() throws InvalidFormatException {
- String filepath = System.getProperty("openxml4j.testdata.input") + File.separator
- + "sample.docx";
+ InputStream is = OpenXML4JTestDataSamples.openSampleStream("sample.docx");
- Package p = Package.open(filepath, PackageAccess.READ);
+ Package p;
+ try {
+ p = Package.open(is);
+ } catch (IOException e) {
+ throw new RuntimeException(e);
+ }
for (PackagePart part : p.getParts()) {
values.put(part.getPartName(), part.getContentType());
- TestCore.getLogger().debug(part.getPartName());
+ logger.debug(part.getPartName());
}
// Compare expected values with values return by the package
diff --git a/src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestPackage.java b/src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestPackage.java index 8d4e3313e2..0b95bbe119 100755 --- a/src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestPackage.java +++ b/src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestPackage.java @@ -30,33 +30,28 @@ import java.util.TreeMap; import junit.framework.TestCase;
+import org.apache.log4j.Logger;
+import org.apache.poi.openxml4j.OpenXML4JTestDataSamples;
+import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
+import org.apache.poi.openxml4j.opc.internal.ContentTypeManager;
+import org.apache.poi.openxml4j.opc.internal.FileHelper;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.Namespace;
import org.dom4j.QName;
-import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
-import org.apache.poi.openxml4j.opc.internal.ContentTypeManager;
-import org.apache.poi.openxml4j.opc.internal.FileHelper;
-import org.apache.poi.openxml4j.TestCore;
-
-public class TestPackage extends TestCase {
-
- TestCore testCore = new TestCore(this.getClass());
+public final class TestPackage extends TestCase {
+ private static Logger logger = Logger.getLogger("org.apache.poi.openxml4j.test");
/**
* Test that just opening and closing the file doesn't alter the document.
*/
public void testOpenSave() throws Exception {
- File originalFile = new File(System.getProperty("openxml4j.testdata.input") + File.separator
- + "TestPackageCommon.docx");
- File targetFile = new File(System.getProperty("openxml4j.testdata.output")
- + File.separator + "TestPackageOpenSaveTMP.docx");
- assertTrue("Source file " + originalFile + " doesn't exist!", originalFile.exists());
-
- Package p = Package.open(originalFile.getAbsolutePath(),
- PackageAccess.READ_WRITE);
+ String originalFile = OpenXML4JTestDataSamples.getSampleFileName("TestPackageCommon.docx");
+ File targetFile = OpenXML4JTestDataSamples.getOutputFile("TestPackageOpenSaveTMP.docx");
+
+ Package p = Package.open(originalFile, PackageAccess.READ_WRITE);
p.save(targetFile.getAbsoluteFile());
// Compare the original and newly saved document
@@ -70,8 +65,7 @@ public class TestPackage extends TestCase { * the correct default content types
*/
public void testCreateGetsContentTypes() throws Exception {
- File targetFile = new File(System.getProperty("openxml4j.testdata.output") + File.separator
- + "TestCreatePackageTMP.docx");
+ File targetFile = OpenXML4JTestDataSamples.getOutputFile("TestCreatePackageTMP.docx");
// Zap the target file, in case of an earlier run
if(targetFile.exists()) targetFile.delete();
@@ -103,11 +97,9 @@ public class TestPackage extends TestCase { * Test package creation.
*/
public void testCreatePackageAddPart() throws Exception {
- File targetFile = new File(System.getProperty("openxml4j.testdata.output") + File.separator
- + "TestCreatePackageTMP.docx");
+ File targetFile = OpenXML4JTestDataSamples.getOutputFile("TestCreatePackageTMP.docx");
- File expectedFile = new File(System.getProperty("openxml4j.testdata.output") + File.separator
- + "TestCreatePackageOUTPUT.docx");
+ File expectedFileFile = OpenXML4JTestDataSamples.getOutputFile("TestCreatePackageOUTPUT.docx");
// Zap the target file, in case of an earlier run
if(targetFile.exists()) targetFile.delete();
@@ -208,14 +200,11 @@ public class TestPackage extends TestCase { * Test package opening.
*/
public void testOpenPackage() throws Exception {
- File targetFile = new File(System.getProperty("openxml4j.testdata.output")
- + File.separator + "TestOpenPackageTMP.docx");
+ File targetFile = OpenXML4JTestDataSamples.getOutputFile("TestOpenPackageTMP.docx");
- File inputFile = new File(System.getProperty("openxml4j.testdata.input")
- + File.separator + "TestOpenPackageINPUT.docx");
+ File inputFile = OpenXML4JTestDataSamples.getSampleFile("TestOpenPackageINPUT.docx");
- File expectedFile = new File(System.getProperty("openxml4j.testdata.output")
- + File.separator + "TestOpenPackageOUTPUT.docx");
+ File expectedFile = OpenXML4JTestDataSamples.getOutputFile("TestOpenPackageOUTPUT.docx");
// Copy the input file in the output directory
FileHelper.copyFile(inputFile, targetFile);
@@ -271,14 +260,10 @@ public class TestPackage extends TestCase { * to a file
*/
public void testSaveToOutputStream() throws Exception {
- File originalFile = new File(System.getProperty("openxml4j.testdata.input") + File.separator
- + "TestPackageCommon.docx");
- File targetFile = new File(System.getProperty("openxml4j.testdata.output") + File.separator
- + "TestPackageOpenSaveTMP.docx");
- assertTrue("Source file " + originalFile + " doesn't exist!", originalFile.exists());
-
- Package p = Package.open(originalFile.getAbsolutePath(),
- PackageAccess.READ_WRITE);
+ String originalFile = OpenXML4JTestDataSamples.getSampleFileName("TestPackageCommon.docx");
+ File targetFile = OpenXML4JTestDataSamples.getOutputFile("TestPackageOpenSaveTMP.docx");
+
+ Package p = Package.open(originalFile, PackageAccess.READ_WRITE);
FileOutputStream fout = new FileOutputStream(targetFile);
p.save(fout);
fout.close();
@@ -295,9 +280,7 @@ public class TestPackage extends TestCase { * reading from a file
*/
public void testOpenFromInputStream() throws Exception {
- File originalFile = new File(System.getProperty("openxml4j.testdata.input") + File.separator
- + "TestPackageCommon.docx");
- assertTrue("Source file " + originalFile + " doesn't exist!", originalFile.exists());
+ String originalFile = OpenXML4JTestDataSamples.getSampleFileName("TestPackageCommon.docx");
FileInputStream finp = new FileInputStream(originalFile);
@@ -313,18 +296,14 @@ public class TestPackage extends TestCase { }
/**
- * TODO: fix and unable
+ * TODO: fix and enable
*/
public void disabled_testRemovePartRecursive() throws Exception {
- File originalFile = new File(System.getProperty("openxml4j.testdata.input") + File.separator
- + "TestPackageCommon.docx");
- File targetFile = new File(System.getProperty("openxml4j.testdata.output") + File.separator
- + "TestPackageRemovePartRecursiveOUTPUT.docx");
- File tempFile = new File(System.getProperty("openxml4j.testdata.output") + File.separator
- + "TestPackageRemovePartRecursiveTMP.docx");
-
- Package p = Package.open(originalFile.getAbsolutePath(),
- PackageAccess.READ_WRITE);
+ String originalFile = OpenXML4JTestDataSamples.getSampleFileName("TestPackageCommon.docx");
+ File targetFile = OpenXML4JTestDataSamples.getOutputFile("TestPackageRemovePartRecursiveOUTPUT.docx");
+ File tempFile = OpenXML4JTestDataSamples.getOutputFile("TestPackageRemovePartRecursiveTMP.docx");
+
+ Package p = Package.open(originalFile, PackageAccess.READ_WRITE);
p.removePartRecursive(PackagingURIHelper.createPartName(new URI(
"/word/document.xml")));
p.save(tempFile.getAbsoluteFile());
@@ -372,8 +351,7 @@ public class TestPackage extends TestCase { .createPartName("/word/webSettings.xml"),
"application/vnd.openxmlformats-officedocument.wordprocessingml.webSettings+xml");
- String filepath = System.getProperty("openxml4j.testdata.input") + File.separator
- + "sample.docx";
+ String filepath = OpenXML4JTestDataSamples.getSampleFileName("sample.docx");
Package p = Package.open(filepath, PackageAccess.READ_WRITE);
// Remove the core part
@@ -381,7 +359,7 @@ public class TestPackage extends TestCase { for (PackagePart part : p.getParts()) {
values.put(part.getPartName(), part.getContentType());
- TestCore.getLogger().debug(part.getPartName());
+ logger.debug(part.getPartName());
}
// Compare expected values with values return by the package
@@ -389,7 +367,7 @@ public class TestPackage extends TestCase { assertNotNull(values.get(partName));
assertEquals(expectedValues.get(partName), values.get(partName));
}
- // Don't save modfications
+ // Don't save modifications
p.revert();
}
@@ -411,8 +389,7 @@ public class TestPackage extends TestCase { .createPartName("/docProps/core.xml"),
"application/vnd.openxmlformats-package.core-properties+xml");
- String filepath = System.getProperty("openxml4j.testdata.input") + File.separator
- + "sample.docx";
+ String filepath = OpenXML4JTestDataSamples.getSampleFileName("sample.docx");
Package p = Package.open(filepath, PackageAccess.READ_WRITE);
// Remove the core part
@@ -420,7 +397,7 @@ public class TestPackage extends TestCase { for (PackagePart part : p.getParts()) {
values.put(part.getPartName(), part.getContentType());
- TestCore.getLogger().debug(part.getPartName());
+ logger.debug(part.getPartName());
}
// Compare expected values with values return by the package
@@ -428,7 +405,7 @@ public class TestPackage extends TestCase { assertNotNull(values.get(partName));
assertEquals(expectedValues.get(partName), values.get(partName));
}
- // Don't save modfications
+ // Don't save modifications
p.revert();
}
diff --git a/src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestPackageCoreProperties.java b/src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestPackageCoreProperties.java index acb7cd84f4..54e21b89d3 100755 --- a/src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestPackageCoreProperties.java +++ b/src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestPackageCoreProperties.java @@ -18,22 +18,20 @@ package org.apache.poi.openxml4j.opc;
import java.io.File;
+import java.io.IOException;
import java.text.ParsePosition;
import java.text.SimpleDateFormat;
import java.util.Date;
import junit.framework.TestCase;
+import org.apache.log4j.Logger;
+import org.apache.poi.openxml4j.OpenXML4JTestDataSamples;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.apache.poi.openxml4j.exceptions.OpenXML4JException;
import org.apache.poi.openxml4j.util.Nullable;
-import org.apache.poi.openxml4j.TestCore;
-import org.apache.log4j.Logger;
-
-public class TestPackageCoreProperties extends TestCase {
-
- TestCore testCore = new TestCore(this.getClass());
+public final class TestPackageCoreProperties extends TestCase {
/**
* Test package core properties getters.
@@ -41,13 +39,14 @@ public class TestPackageCoreProperties extends TestCase { public void testGetProperties() {
try {
// Open the package
- Package p = Package.open(System.getProperty("openxml4j.testdata.input") + File.separator
- + "TestPackageCoreProperiesGetters.docx",
- PackageAccess.READ);
+ Package p = Package.open(OpenXML4JTestDataSamples.openSampleStream("TestPackageCoreProperiesGetters.docx"));
compareProperties(p);
p.revert();
} catch (OpenXML4JException e) {
Logger.getLogger("org.apache.poi.openxml4j.demo").debug(e.getMessage());
+ throw new RuntimeException(e);
+ } catch (IOException e) {
+ throw new RuntimeException(e);
}
}
@@ -55,11 +54,9 @@ public class TestPackageCoreProperties extends TestCase { * Test package core properties setters.
*/
public void testSetProperties() throws Exception {
- String inputPath = System.getProperty("openxml4j.testdata.input")
- + File.separator + "TestPackageCoreProperiesSetters.docx";
+ String inputPath = OpenXML4JTestDataSamples.getSampleFileName("TestPackageCoreProperiesSetters.docx");
- String outputFilename = System.getProperty("openxml4j.testdata.input")
- + File.separator + "TestPackageCoreProperiesSettersOUTPUT.docx";
+ File outputFile = OpenXML4JTestDataSamples.getOutputFile("TestPackageCoreProperiesSettersOUTPUT.docx");
// Open package
Package p = Package.open(inputPath, PackageAccess.READ_WRITE);
@@ -86,14 +83,13 @@ public class TestPackageCoreProperties extends TestCase { props.setSubjectProperty("MySubject");
props.setVersionProperty("2");
// Save the package in the output directory
- p.save(new File(outputFilename));
+ p.save(outputFile);
// Open the newly created file to check core properties saved values.
- File fOut = new File(outputFilename);
- Package p2 = Package.open(outputFilename, PackageAccess.READ);
+ Package p2 = Package.open(outputFile.getAbsolutePath(), PackageAccess.READ);
compareProperties(p2);
p2.revert();
- fOut.delete();
+ outputFile.delete();
}
private void compareProperties(Package p) throws InvalidFormatException {
diff --git a/src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestPackageThumbnail.java b/src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestPackageThumbnail.java index bbf5402f48..a7b9e7b6f6 100755 --- a/src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestPackageThumbnail.java +++ b/src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestPackageThumbnail.java @@ -21,47 +21,37 @@ import java.io.File; import junit.framework.TestCase;
-import org.apache.poi.openxml4j.opc.Package;
-import org.apache.poi.openxml4j.opc.PackageAccess;
-import org.apache.poi.openxml4j.opc.PackageRelationshipTypes;
-
-import org.apache.poi.openxml4j.TestCore;
+import org.apache.poi.openxml4j.OpenXML4JTestDataSamples;
/**
* Test the addition of thumbnail in a package.
*
* @author Julien Chable
*/
-public class TestPackageThumbnail extends TestCase {
-
- TestCore testCore = new TestCore(this.getClass());
+public final class TestPackageThumbnail extends TestCase {
/**
* Test package addThumbnail() method.
*/
public void testSetProperties() throws Exception {
- String inputPath = System.getProperty("openxml4j.testdata.input")
- + File.separator + "TestPackageThumbnail.docx";
+ String inputPath = OpenXML4JTestDataSamples.getSampleFileName("TestPackageThumbnail.docx");
- String imagePath = System.getProperty("openxml4j.testdata.input")
- + File.separator + "thumbnail.jpg";
+ String imagePath = OpenXML4JTestDataSamples.getSampleFileName("thumbnail.jpg");
- String outputFilename = System.getProperty("openxml4j.testdata.output")
- + File.separator + "TestPackageThumbnailOUTPUT.docx";
+ File outputFile = OpenXML4JTestDataSamples.getOutputFile("TestPackageThumbnailOUTPUT.docx");
// Open package
Package p = Package.open(inputPath, PackageAccess.READ_WRITE);
p.addThumbnail(imagePath);
// Save the package in the output directory
- p.save(new File(outputFilename));
+ p.save(outputFile);
// Open the newly created file to check core properties saved values.
- File fOut = new File(outputFilename);
- Package p2 = Package.open(outputFilename, PackageAccess.READ);
+ Package p2 = Package.open(outputFile.getAbsolutePath(), PackageAccess.READ);
if (p2.getRelationshipsByType(PackageRelationshipTypes.THUMBNAIL)
.size() == 0)
fail("Thumbnail not added to the package !");
p2.revert();
- //fOut.delete();
+ outputFile.delete();
}
}
diff --git a/src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestRelationships.java b/src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestRelationships.java index 3ca1281033..972bd268a3 100755 --- a/src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestRelationships.java +++ b/src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestRelationships.java @@ -19,32 +19,23 @@ package org.apache.poi.openxml4j.opc; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; -import java.io.File; +import java.io.InputStream; import junit.framework.TestCase; -import org.apache.poi.openxml4j.opc.Package; -import org.apache.poi.openxml4j.opc.PackageAccess; -import org.apache.poi.openxml4j.opc.PackagePart; -import org.apache.poi.openxml4j.opc.PackagePartName; -import org.apache.poi.openxml4j.opc.PackageRelationship; -import org.apache.poi.openxml4j.opc.PackageRelationshipCollection; -import org.apache.poi.openxml4j.opc.PackageRelationshipTypes; -import org.apache.poi.openxml4j.opc.PackagingURIHelper; -import org.apache.poi.openxml4j.opc.TargetMode; - -import org.apache.poi.openxml4j.TestCore; +import org.apache.log4j.Logger; +import org.apache.poi.openxml4j.OpenXML4JTestDataSamples; public class TestRelationships extends TestCase { - public static final String HYPERLINK_REL_TYPE = + private static final String HYPERLINK_REL_TYPE = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink"; - public static final String COMMENTS_REL_TYPE = + private static final String COMMENTS_REL_TYPE = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/comments"; - public static final String SHEET_WITH_COMMENTS = + private static final String SHEET_WITH_COMMENTS = "/xl/worksheets/sheet1.xml"; - TestCore testCore = new TestCore(this.getClass()); + private static Logger logger = Logger.getLogger("org.apache.poi.openxml4j.test"); /** * Test relationships are correctly loaded. This at the moment fails (as of r499) @@ -53,10 +44,9 @@ public class TestRelationships extends TestCase { * really look also for not yet loaded parts. */ public void testLoadRelationships() throws Exception { - String filepath = System.getProperty("openxml4j.testdata.input") + File.separator - + "sample.xlsx"; - Package pkg = Package.open(filepath, PackageAccess.READ); - TestCore.getLogger().debug("1: " + pkg); + InputStream is = OpenXML4JTestDataSamples.openSampleStream("sample.xlsx"); + Package pkg = Package.open(is); + logger.debug("1: " + pkg); PackageRelationshipCollection rels = pkg.getRelationshipsByType(PackageRelationshipTypes.CORE_DOCUMENT); PackageRelationship coreDocRelationship = rels.getRelationship(0); PackagePart corePart = pkg.getPart(coreDocRelationship); @@ -75,10 +65,8 @@ public class TestRelationships extends TestCase { * type, then grab from within there by id */ public void testFetchFromCollection() throws Exception { - String filepath = System.getProperty("openxml4j.testdata.input") + File.separator - + "ExcelWithHyperlinks.xlsx"; - - Package pkg = Package.open(filepath, PackageAccess.READ); + InputStream is = OpenXML4JTestDataSamples.openSampleStream("ExcelWithHyperlinks.xlsx"); + Package pkg = Package.open(is); PackagePart sheet = pkg.getPart( PackagingURIHelper.createPartName(SHEET_WITH_COMMENTS)); assertNotNull(sheet); @@ -118,10 +106,8 @@ public class TestRelationships extends TestCase { * external hyperlinks. Check we can load these ok. */ public void testLoadExcelHyperlinkRelations() throws Exception { - String filepath = System.getProperty("openxml4j.testdata.input") + File.separator - + "ExcelWithHyperlinks.xlsx"; - - Package pkg = Package.open(filepath, PackageAccess.READ); + InputStream is = OpenXML4JTestDataSamples.openSampleStream("ExcelWithHyperlinks.xlsx"); + Package pkg = Package.open(is); PackagePart sheet = pkg.getPart( PackagingURIHelper.createPartName(SHEET_WITH_COMMENTS)); assertNotNull(sheet); @@ -150,13 +136,11 @@ public class TestRelationships extends TestCase { /* * Excel uses relations on sheets to store the details of - * external hyperlinks. Check we can create these ok, + * external hyperlinks. Check we can create these OK, * then still read them later */ public void testCreateExcelHyperlinkRelations() throws Exception { - String filepath = System.getProperty("openxml4j.testdata.input") + File.separator - + "ExcelWithHyperlinks.xlsx"; - + String filepath = OpenXML4JTestDataSamples.getSampleFileName("ExcelWithHyperlinks.xlsx"); Package pkg = Package.open(filepath, PackageAccess.READ_WRITE); PackagePart sheet = pkg.getPart( PackagingURIHelper.createPartName(SHEET_WITH_COMMENTS)); diff --git a/src/ooxml/testcases/org/apache/poi/openxml4j/opc/compliance/AllTests.java b/src/ooxml/testcases/org/apache/poi/openxml4j/opc/compliance/AllOpenXML4JComplianceTests.java index 56974b0caf..cd990ccf08 100755 --- a/src/ooxml/testcases/org/apache/poi/openxml4j/opc/compliance/AllTests.java +++ b/src/ooxml/testcases/org/apache/poi/openxml4j/opc/compliance/AllOpenXML4JComplianceTests.java @@ -20,16 +20,13 @@ package org.apache.poi.openxml4j.opc.compliance; import junit.framework.Test;
import junit.framework.TestSuite;
-public class AllTests {
+public class AllOpenXML4JComplianceTests {
public static Test suite() {
- TestSuite suite = new TestSuite(
- "Test for test.org.apache.poi.openxml4j.opc.compliance");
- // $JUnit-BEGIN$
- suite.addTestSuite(OPCCompliance_PartName.class);
- suite.addTestSuite(OPCCompliance_CoreProperties.class);
- suite.addTestSuite(OPCCompliance_PackageModel.class);
- // $JUnit-END$
+ TestSuite suite = new TestSuite(AllOpenXML4JComplianceTests.class.getName());
+ suite.addTestSuite(TestOPCCompliancePartName.class);
+ suite.addTestSuite(TestOPCComplianceCoreProperties.class);
+ suite.addTestSuite(TestOPCCompliancePackageModel.class);
return suite;
}
diff --git a/src/ooxml/testcases/org/apache/poi/openxml4j/opc/compliance/OPCCompliance_CoreProperties.java b/src/ooxml/testcases/org/apache/poi/openxml4j/opc/compliance/OPCCompliance_CoreProperties.java deleted file mode 100755 index a26fd3012e..0000000000 --- a/src/ooxml/testcases/org/apache/poi/openxml4j/opc/compliance/OPCCompliance_CoreProperties.java +++ /dev/null @@ -1,258 +0,0 @@ -/* ====================================================================
- Licensed to the Apache Software Foundation (ASF) under one or more
- contributor license agreements. See the NOTICE file distributed with
- this work for additional information regarding copyright ownership.
- The ASF licenses this file to You under the Apache License, Version 2.0
- (the "License"); you may not use this file except in compliance with
- the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-==================================================================== */
-
-package org.apache.poi.openxml4j.opc.compliance;
-
-import java.io.File;
-import java.net.URI;
-import java.net.URISyntaxException;
-
-import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
-import org.apache.poi.openxml4j.exceptions.InvalidOperationException;
-import org.apache.poi.openxml4j.opc.ContentTypes;
-import org.apache.poi.openxml4j.opc.Package;
-import org.apache.poi.openxml4j.opc.PackageRelationshipTypes;
-import org.apache.poi.openxml4j.opc.PackagingURIHelper;
-import org.apache.poi.openxml4j.opc.TargetMode;
-
-import org.apache.poi.openxml4j.TestCore;
-import junit.framework.TestCase;
-
-/**
- * Test core properties Open Packaging Convention compliance.
- *
- * M4.1: The format designer shall specify and the format producer shall create
- * at most one core properties relationship for a package. A format consumer
- * shall consider more than one core properties relationship for a package to be
- * an error. If present, the relationship shall target the Core Properties part.
- *
- * M4.2: The format designer shall not specify and the format producer shall not
- * create Core Properties that use the Markup Compatibility namespace as defined
- * in Annex F, "Standard Namespaces and Content Types". A format consumer shall
- * consider the use of the Markup Compatibility namespace to be an error.
- *
- * M4.3: Producers shall not create a document element that contains refinements
- * to the Dublin Core elements, except for the two specified in the schema:
- * <dcterms:created> and <dcterms:modified> Consumers shall consider a document
- * element that violates this constraint to be an error.
- *
- * M4.4: Producers shall not create a document element that contains the
- * xml:lang attribute. Consumers shall consider a document element that violates
- * this constraint to be an error.
- *
- * M4.5: Producers shall not create a document element that contains the
- * xsi:type attribute, except for a <dcterms:created> or <dcterms:modified>
- * element where the xsi:type attribute shall be present and shall hold the
- * value dcterms:W3CDTF, where dcterms is the namespace prefix of the Dublin
- * Core namespace. Consumers shall consider a document element that violates
- * this constraint to be an error.
- *
- * @author Julien Chable
- * @version 1.0
- */
-public class OPCCompliance_CoreProperties extends TestCase {
-
- TestCore testCore = new TestCore(this.getClass());
-
- public void testCorePropertiesPart() {
- Package pkg = null;
- try {
- String filepath = System.getProperty("openxml4j.compliance.input")
- + File.separator
- + "OPCCompliance_CoreProperties_OnlyOneCorePropertiesPart.docx";
- pkg = Package.open(filepath);
- // Normally must thrown an InvalidFormatException exception.
- } catch (InvalidFormatException e) {
- fail("OPC compliance failure: the core properties is considered as invalid than it's not !");
- } finally {
- pkg.revert();
- }
- }
-
- /**
- * Test M4.1 rule.
- */
- public void testOnlyOneCorePropertiesPart() {
- Package pkg = null;
- try {
- String filepath = System.getProperty("openxml4j.compliance.input")
- + File.separator
- + "OPCCompliance_CoreProperties_OnlyOneCorePropertiesPartFAIL.docx";
- pkg = Package.open(filepath);
- // Normally must thrown an InvalidFormatException exception.
- fail("OPC compliance failure: M4.1 -> A format consumer shall consider more than one core properties relationship for a package to be an error.");
- } catch (InvalidFormatException e) {
- // DO nothing, it's the normal behavior
- } finally {
- if (pkg != null)
- pkg.revert();
- }
- }
-
- /**
- * Test M4.1 rule.
- */
- public void testOnlyOneCorePropertiesPart_AddRelationship() {
- Package pkg = null;
- try {
- String filepath = System.getProperty("openxml4j.testdata.input")
- + File.separator
- + "OPCCompliance_CoreProperties_OnlyOneCorePropertiesPart.docx";
- pkg = Package.open(filepath);
- pkg.addRelationship(PackagingURIHelper.createPartName(new URI(
- "/docProps/core2.xml")), TargetMode.INTERNAL,
- PackageRelationshipTypes.CORE_PROPERTIES);
- // Normally must thrown an InvalidFormatException exception.
- fail("OPC compliance failure: M4.1 -> A format consumer shall consider more than one core properties relationship for a package to be an error.");
- } catch (InvalidOperationException e) {
- // Do nothing, it's the normal behavior
- } catch (InvalidFormatException e) {
- // Do nothing, it's the normal behavior
- } catch (URISyntaxException e) {
- // Should never happen
- } finally {
- if (pkg != null)
- pkg.revert();
- }
- }
-
- /**
- * Test M4.1 rule.
- */
- public void testOnlyOneCorePropertiesPart_AddPart() {
- Package pkg = null;
- try {
- String filepath = System.getProperty("openxml4j.testdata.input")
- + File.separator
- + "OPCCompliance_CoreProperties_OnlyOneCorePropertiesPart.docx";
- pkg = Package.open(filepath);
- pkg.createPart(PackagingURIHelper.createPartName(new URI(
- "/docProps/core2.xml")), ContentTypes.CORE_PROPERTIES_PART);
- // Normally must thrown an InvalidFormatException exception.
- fail("OPC compliance failure: M4.1 -> A format consumer shall consider more than one core properties relationship for a package to be an error.");
- } catch (InvalidFormatException e) {
- // Do nothing, it's the normal behavior
- } catch (InvalidOperationException e) {
- // Do nothing, it's the normal behavior
- } catch (URISyntaxException e) {
- // Should never happen
- } finally {
- if (pkg != null)
- pkg.revert();
- }
- }
-
- /**
- * Test M4.2 rule.
- */
- public void testDoNotUseCompatibilityMarkup() {
- Package pkg = null;
- try {
- String filepath = System.getProperty("openxml4j.compliance.input")
- + File.separator
- + "OPCCompliance_CoreProperties_DoNotUseCompatibilityMarkupFAIL.docx";
- pkg = Package.open(filepath);
- // Normally must thrown an InvalidFormatException exception.
- fail("OPC compliance failure: M4.2 -> A format consumer shall consider the use of the Markup Compatibility namespace to be an error.");
- } catch (InvalidFormatException e) {
- // Do nothing, it's the normal behavior
- } finally {
- if (pkg != null)
- pkg.revert();
- }
- }
-
- /**
- * Test M4.3 rule.
- */
- public void testDCTermsNamespaceLimitedUse() {
- Package pkg = null;
- try {
- String filepath = System.getProperty("openxml4j.compliance.input")
- + File.separator
- + "OPCCompliance_CoreProperties_DCTermsNamespaceLimitedUseFAIL.docx";
- pkg = Package.open(filepath);
- // Normally must thrown an InvalidFormatException exception.
- fail("OPC compliance failure: M4.3 -> Producers shall not create a document element that contains refinements to the Dublin Core elements, except for the two specified in the schema: <dcterms:created> and <dcterms:modified> Consumers shall consider a document element that violates this constraint to be an error.");
- } catch (InvalidFormatException e) {
- // Do nothing, it's the normal behavior
- } finally {
- if (pkg != null)
- pkg.revert();
- }
- }
-
- /**
- * Test M4.4 rule.
- */
- public void testUnauthorizedXMLLangAttribute() {
- Package pkg = null;
- try {
- String filepath = System.getProperty("openxml4j.compliance.input")
- + File.separator
- + "OPCCompliance_CoreProperties_UnauthorizedXMLLangAttributeFAIL.docx";
- pkg = Package.open(filepath);
- // Normally must thrown an InvalidFormatException exception.
- fail("OPC compliance failure: M4.4 -> Producers shall not create a document element that contains refinements to the Dublin Core elements, except for the two specified in the schema: <dcterms:created> and <dcterms:modified> Consumers shall consider a document element that violates this constraint to be an error.");
- } catch (InvalidFormatException e) {
- // Do nothing, it's the normal behavior
- } finally {
- if (pkg != null)
- pkg.revert();
- }
- }
-
- /**
- * Test M4.5 rule.
- */
- public void testLimitedXSITypeAttribute_NotPresent() {
- Package pkg = null;
- try {
- String filepath = System.getProperty("openxml4j.compliance.input")
- + File.separator
- + "OPCCompliance_CoreProperties_LimitedXSITypeAttribute_NotPresentFAIL.docx";
- pkg = Package.open(filepath);
- // Normally must thrown an InvalidFormatException exception.
- fail("OPC compliance failure: M4.5 -> Producers shall not create a document element that contains refinements to the Dublin Core elements, except for the two specified in the schema: <dcterms:created> and <dcterms:modified> Consumers shall consider a document element that violates this constraint to be an error.");
- } catch (InvalidFormatException e) {
- // Do nothing, it's the normal behavior
- } finally {
- if (pkg != null)
- pkg.revert();
- }
- }
-
- /**
- * Test M4.5 rule.
- */
- public void testLimitedXSITypeAttribute_PresentWithUnauthorizedValue() {
- Package pkg = null;
- try {
- String filepath = System.getProperty("openxml4j.compliance.input")
- + File.separator
- + "OPCCompliance_CoreProperties_LimitedXSITypeAttribute_PresentWithUnauthorizedValueFAIL.docx";
- pkg = Package.open(filepath);
- // Normally must thrown an InvalidFormatException exception.
- fail("OPC compliance failure: M4.5 -> Producers shall not create a document element that contains refinements to the Dublin Core elements, except for the two specified in the schema: <dcterms:created> and <dcterms:modified> Consumers shall consider a document element that violates this constraint to be an error.");
- } catch (InvalidFormatException e) {
- // Do nothing, it's the normal behavior
- } finally {
- if (pkg != null)
- pkg.revert();
- }
- }
-}
diff --git a/src/ooxml/testcases/org/apache/poi/openxml4j/opc/compliance/TestOPCComplianceCoreProperties.java b/src/ooxml/testcases/org/apache/poi/openxml4j/opc/compliance/TestOPCComplianceCoreProperties.java new file mode 100755 index 0000000000..d2cb8f616e --- /dev/null +++ b/src/ooxml/testcases/org/apache/poi/openxml4j/opc/compliance/TestOPCComplianceCoreProperties.java @@ -0,0 +1,208 @@ +/* ====================================================================
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+==================================================================== */
+
+package org.apache.poi.openxml4j.opc.compliance;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.URI;
+import java.net.URISyntaxException;
+
+import junit.framework.AssertionFailedError;
+import junit.framework.TestCase;
+
+import org.apache.poi.openxml4j.OpenXML4JTestDataSamples;
+import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
+import org.apache.poi.openxml4j.exceptions.InvalidOperationException;
+import org.apache.poi.openxml4j.opc.ContentTypes;
+import org.apache.poi.openxml4j.opc.Package;
+import org.apache.poi.openxml4j.opc.PackageRelationshipTypes;
+import org.apache.poi.openxml4j.opc.PackagingURIHelper;
+import org.apache.poi.openxml4j.opc.TargetMode;
+
+/**
+ * Test core properties Open Packaging Convention compliance.
+ *
+ * M4.1: The format designer shall specify and the format producer shall create
+ * at most one core properties relationship for a package. A format consumer
+ * shall consider more than one core properties relationship for a package to be
+ * an error. If present, the relationship shall target the Core Properties part.
+ *
+ * M4.2: The format designer shall not specify and the format producer shall not
+ * create Core Properties that use the Markup Compatibility namespace as defined
+ * in Annex F, "Standard Namespaces and Content Types". A format consumer shall
+ * consider the use of the Markup Compatibility namespace to be an error.
+ *
+ * M4.3: Producers shall not create a document element that contains refinements
+ * to the Dublin Core elements, except for the two specified in the schema:
+ * <dcterms:created> and <dcterms:modified> Consumers shall consider a document
+ * element that violates this constraint to be an error.
+ *
+ * M4.4: Producers shall not create a document element that contains the
+ * xml:lang attribute. Consumers shall consider a document element that violates
+ * this constraint to be an error.
+ *
+ * M4.5: Producers shall not create a document element that contains the
+ * xsi:type attribute, except for a <dcterms:created> or <dcterms:modified>
+ * element where the xsi:type attribute shall be present and shall hold the
+ * value dcterms:W3CDTF, where dcterms is the namespace prefix of the Dublin
+ * Core namespace. Consumers shall consider a document element that violates
+ * this constraint to be an error.
+ *
+ * @author Julien Chable
+ */
+public final class TestOPCComplianceCoreProperties extends TestCase {
+
+ public void testCorePropertiesPart() {
+ Package pkg;
+ try {
+ InputStream is = OpenXML4JTestDataSamples.openComplianceSampleStream("OPCCompliance_CoreProperties_OnlyOneCorePropertiesPart.docx");
+ pkg = Package.open(is);
+ } catch (InvalidFormatException e) {
+ throw new RuntimeException(e);
+ } catch (IOException e) {
+ throw new RuntimeException(e);
+ }
+ pkg.revert();
+ }
+
+ private static String extractInvalidFormatMessage(String sampleNameSuffix) {
+
+ InputStream is = OpenXML4JTestDataSamples.openComplianceSampleStream("OPCCompliance_CoreProperties_" + sampleNameSuffix);
+ Package pkg;
+ try {
+ pkg = Package.open(is);
+ } catch (InvalidFormatException e) {
+ // expected during successful test
+ return e.getMessage();
+ } catch (IOException e) {
+ throw new RuntimeException(e);
+ }
+ pkg.revert();
+ // Normally must thrown an InvalidFormatException exception.
+ throw new AssertionFailedError("expected OPC compliance exception was not thrown");
+ }
+
+ /**
+ * Test M4.1 rule.
+ */
+ public void testOnlyOneCorePropertiesPart() {
+ String msg = extractInvalidFormatMessage("OnlyOneCorePropertiesPartFAIL.docx");
+ assertEquals("OPC Compliance error [M4.1]: there is more than one core properties relationship in the package !", msg);
+ }
+
+ private static URI createURI(String text) {
+ try {
+ return new URI(text);
+ } catch (URISyntaxException e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ /**
+ * Test M4.1 rule.
+ */
+ public void testOnlyOneCorePropertiesPart_AddRelationship() {
+ InputStream is = OpenXML4JTestDataSamples.openComplianceSampleStream("OPCCompliance_CoreProperties_OnlyOneCorePropertiesPart.docx");
+ Package pkg;
+ try {
+ pkg = Package.open(is);
+ } catch (InvalidFormatException e) {
+ throw new RuntimeException(e);
+ } catch (IOException e) {
+ throw new RuntimeException(e);
+ }
+ URI partUri = createURI("/docProps/core2.xml");
+ try {
+ pkg.addRelationship(PackagingURIHelper.createPartName(partUri), TargetMode.INTERNAL,
+ PackageRelationshipTypes.CORE_PROPERTIES);
+ fail("expected OPC compliance exception was not thrown");
+ } catch (InvalidFormatException e) {
+ throw new RuntimeException(e);
+ } catch (InvalidOperationException e) {
+ // expected during successful test
+ assertEquals("OPC Compliance error [M4.1]: can't add another core properties part ! Use the built-in package method instead.", e.getMessage());
+ }
+ pkg.revert();
+ }
+
+ /**
+ * Test M4.1 rule.
+ */
+ public void testOnlyOneCorePropertiesPart_AddPart() {
+ String sampleFileName = OpenXML4JTestDataSamples.getComplianceSampleFileName("OPCCompliance_CoreProperties_OnlyOneCorePropertiesPart.docx");
+ Package pkg = null;
+ try {
+ pkg = Package.open(sampleFileName);
+ } catch (InvalidFormatException e) {
+ throw new RuntimeException(e);
+ }
+
+ URI partUri = createURI("/docProps/core2.xml");
+ try {
+ pkg.createPart(PackagingURIHelper.createPartName(partUri),
+ ContentTypes.CORE_PROPERTIES_PART);
+ fail("expected OPC compliance exception was not thrown");
+ } catch (InvalidFormatException e) {
+ throw new RuntimeException(e);
+ } catch (InvalidOperationException e) {
+ // expected during successful test
+ assertEquals("OPC Compliance error [M4.1]: you try to add more than one core properties relationship in the package !", e.getMessage());
+ }
+ pkg.revert();
+ }
+
+ /**
+ * Test M4.2 rule.
+ */
+ public void testDoNotUseCompatibilityMarkup() {
+ String msg = extractInvalidFormatMessage("DoNotUseCompatibilityMarkupFAIL.docx");
+ assertEquals("OPC Compliance error [M4.2]: A format consumer shall consider the use of the Markup Compatibility namespace to be an error.", msg);
+ }
+
+ /**
+ * Test M4.3 rule.
+ */
+ public void testDCTermsNamespaceLimitedUse() {
+ String msg = extractInvalidFormatMessage("DCTermsNamespaceLimitedUseFAIL.docx");
+ assertEquals("OPC Compliance error [M4.3]: Producers shall not create a document element that contains refinements to the Dublin Core elements, except for the two specified in the schema: <dcterms:created> and <dcterms:modified> Consumers shall consider a document element that violates this constraint to be an error.", msg);
+ }
+
+ /**
+ * Test M4.4 rule.
+ */
+ public void testUnauthorizedXMLLangAttribute() {
+ String msg = extractInvalidFormatMessage("UnauthorizedXMLLangAttributeFAIL.docx");
+ assertEquals("OPC Compliance error [M4.4]: Producers shall not create a document element that contains the xml:lang attribute. Consumers shall consider a document element that violates this constraint to be an error.", msg);
+ }
+
+ /**
+ * Test M4.5 rule.
+ */
+ public void testLimitedXSITypeAttribute_NotPresent() {
+ String msg = extractInvalidFormatMessage("LimitedXSITypeAttribute_NotPresentFAIL.docx");
+ assertEquals("The element 'created' must have the 'xsi:type' attribute present !", msg);
+ }
+
+ /**
+ * Test M4.5 rule.
+ */
+ public void testLimitedXSITypeAttribute_PresentWithUnauthorizedValue() {
+ String msg = extractInvalidFormatMessage("LimitedXSITypeAttribute_PresentWithUnauthorizedValueFAIL.docx");
+ assertEquals("The element 'modified' must have the 'xsi:type' attribute with the value 'dcterms:W3CDTF' !", msg);
+ }
+}
diff --git a/src/ooxml/testcases/org/apache/poi/openxml4j/opc/compliance/OPCCompliance_PackageModel.java b/src/ooxml/testcases/org/apache/poi/openxml4j/opc/compliance/TestOPCCompliancePackageModel.java index f54c294b0b..f135b41388 100755 --- a/src/ooxml/testcases/org/apache/poi/openxml4j/opc/compliance/OPCCompliance_PackageModel.java +++ b/src/ooxml/testcases/org/apache/poi/openxml4j/opc/compliance/TestOPCCompliancePackageModel.java @@ -30,8 +30,6 @@ import org.apache.poi.openxml4j.opc.PackageRelationshipTypes; import org.apache.poi.openxml4j.opc.PackagingURIHelper;
import org.apache.poi.openxml4j.opc.TargetMode;
-import org.apache.poi.openxml4j.TestCore;
-
/**
* Test Open Packaging Convention package model compliance.
*
@@ -40,11 +38,9 @@ import org.apache.poi.openxml4j.TestCore; *
* @author Julien Chable
*/
-public class OPCCompliance_PackageModel extends TestCase {
-
- TestCore testCore = new TestCore(this.getClass());
+public class TestOPCCompliancePackageModel extends TestCase {
- public OPCCompliance_PackageModel(String name) {
+ public TestOPCCompliancePackageModel(String name) {
super(name);
}
@@ -54,9 +50,8 @@ public class OPCCompliance_PackageModel extends TestCase { * [M1.11]
*/
public void testPartNameDerivationAdditionFailure() {
- Package pkg = null;
+ Package pkg = Package.create("TODELETEIFEXIST.docx");
try {
- pkg = Package.create("TODELETEIFEXIST.docx");
PackagePartName name = PackagingURIHelper
.createPartName("/word/document.xml");
PackagePartName nameDerived = PackagingURIHelper
diff --git a/src/ooxml/testcases/org/apache/poi/openxml4j/opc/compliance/OPCCompliance_PartName.java b/src/ooxml/testcases/org/apache/poi/openxml4j/opc/compliance/TestOPCCompliancePartName.java index 80f6be75e9..899c43e037 100755 --- a/src/ooxml/testcases/org/apache/poi/openxml4j/opc/compliance/OPCCompliance_PartName.java +++ b/src/ooxml/testcases/org/apache/poi/openxml4j/opc/compliance/TestOPCCompliancePartName.java @@ -78,9 +78,9 @@ import org.apache.poi.openxml4j.opc.PackagingURIHelper; * @author Julien Chable
* @version 1.0
*/
-public class OPCCompliance_PartName extends TestCase {
+public class TestOPCCompliancePartName extends TestCase {
- public OPCCompliance_PartName(String name) {
+ public TestOPCCompliancePartName(String name) {
super(name);
}
diff --git a/src/ooxml/testcases/org/apache/poi/openxml4j/opc/internal/AllTests.java b/src/ooxml/testcases/org/apache/poi/openxml4j/opc/internal/AllOpenXML4JInternalTests.java index 25d140c819..338f5df455 100755 --- a/src/ooxml/testcases/org/apache/poi/openxml4j/opc/internal/AllTests.java +++ b/src/ooxml/testcases/org/apache/poi/openxml4j/opc/internal/AllOpenXML4JInternalTests.java @@ -20,14 +20,11 @@ package org.apache.poi.openxml4j.opc.internal; import junit.framework.Test;
import junit.framework.TestSuite;
-public class AllTests {
+public class AllOpenXML4JInternalTests {
public static Test suite() {
- TestSuite suite = new TestSuite(
- "Test for test.org.apache.poi.openxml4j.opc.internal");
- //$JUnit-BEGIN$
+ TestSuite suite = new TestSuite(AllOpenXML4JInternalTests.class.getName());
suite.addTestSuite(TestContentTypeManager.class);
- //$JUnit-END$
return suite;
}
}
diff --git a/src/ooxml/testcases/org/apache/poi/openxml4j/opc/internal/TestContentTypeManager.java b/src/ooxml/testcases/org/apache/poi/openxml4j/opc/internal/TestContentTypeManager.java index 6af3e6f544..d509272d76 100755 --- a/src/ooxml/testcases/org/apache/poi/openxml4j/opc/internal/TestContentTypeManager.java +++ b/src/ooxml/testcases/org/apache/poi/openxml4j/opc/internal/TestContentTypeManager.java @@ -21,15 +21,9 @@ import junit.framework.TestCase; import org.apache.poi.openxml4j.opc.PackagePartName;
import org.apache.poi.openxml4j.opc.PackagingURIHelper;
-import org.apache.poi.openxml4j.opc.internal.ContentTypeManager;
-import org.apache.poi.openxml4j.opc.internal.ZipContentTypeManager;
-
-import org.apache.poi.openxml4j.TestCore;
public class TestContentTypeManager extends TestCase {
- TestCore testCore = new TestCore(this.getClass());
-
/**
* Test the properties part content parsing.
*/
diff --git a/src/testcases/org/apache/poi/hssf/extractor/TestExcelExtractor.java b/src/testcases/org/apache/poi/hssf/extractor/TestExcelExtractor.java index d715650528..c820f2c9bc 100644 --- a/src/testcases/org/apache/poi/hssf/extractor/TestExcelExtractor.java +++ b/src/testcases/org/apache/poi/hssf/extractor/TestExcelExtractor.java @@ -62,10 +62,10 @@ public final class TestExcelExtractor extends TestCase { assertEquals( "Sheet1\n" + "1000.0\t1.0\t5.0\n" + - "2000.0\t2.0\t\n" + - "3000.0\t3.0\t\n" + - "4000.0\t4.0\t\n" + - "5000.0\t5.0\t\n" + + "2000.0\t2.0\n" + + "3000.0\t3.0\n" + + "4000.0\t4.0\n" + + "5000.0\t5.0\n" + "Sheet2\nSheet3\n", extractor.getText() ); @@ -75,10 +75,10 @@ public final class TestExcelExtractor extends TestCase { assertEquals( "Sheet1\n" + "1000.0\t1.0\tSUMIF(A1:A5,\">4000\",B1:B5)\n" + - "2000.0\t2.0\t\n" + - "3000.0\t3.0\t\n" + - "4000.0\t4.0\t\n" + - "5000.0\t5.0\t\n" + + "2000.0\t2.0\n" + + "3000.0\t3.0\n" + + "4000.0\t4.0\n" + + "5000.0\t5.0\n" + "Sheet2\nSheet3\n", extractor.getText() ); @@ -196,15 +196,15 @@ public final class TestExcelExtractor extends TestCase { assertTrue(def.startsWith( "Sheet1\n" + "&[TAB]\t\n" + - "Hello\t\n" + - "11.0\t23.0\t\n" + "Hello\n" + + "11.0\t23.0\n" )); assertTrue(padded.startsWith( "Sheet1\n" + "&[TAB]\t\n" + - "Hello\t\t\t\t\t\t\t\t\t\t\t\n" + - "11.0\t\t\t23.0\t\t\t\t\t\t\t\t\n" + "Hello\n" + + "11.0\t\t\t23.0\n" )); } |