From 307fdc61b08cd4be1ea81a2f98a7fcec48059042 Mon Sep 17 00:00:00 2001 From: Nick Burch Date: Mon, 4 Jul 2016 20:26:40 +0000 Subject: [PATCH] Add ignored test for #59780, and specially-crafted test file git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1751375 13f79535-47bb-0310-9956-ffa450edef68 --- .../opc/TestPackageCoreProperties.java | 19 ++++++++++++++++++ ...nce_CoreProperties_AlternateTimezones.docx | Bin 0 -> 13159 bytes 2 files changed, 19 insertions(+) create mode 100644 test-data/openxml4j/OPCCompliance_CoreProperties_AlternateTimezones.docx 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 612371506d..e8bbcd9bdf 100644 --- a/src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestPackageCoreProperties.java +++ b/src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestPackageCoreProperties.java @@ -271,4 +271,23 @@ public final class TestPackageCoreProperties { wb.close(); pkg.close(); } + + @Test + @Ignore + public void testAlternateCorePropertyTimezones() throws Exception { + InputStream is = OpenXML4JTestDataSamples.openSampleStream("OPCCompliance_CoreProperties_AlternateTimezones.docx"); + OPCPackage pkg = OPCPackage.open(is); + PackagePropertiesPart props = (PackagePropertiesPart)pkg.getPackageProperties(); + is.close(); + + // Check text properties first + assertEquals("Lorem Ipsu", props.getTitleProperty().getValue()); + assertEquals("Apache POI", props.getCreatorProperty().getValue()); + + // Created at has a +3 timezone and milliseconds + // 2006-10-13T18:06:00.1234+03:00 + + // Modified at has a -13 timezone but no milliseconds + // 2007-06-20T07:59:00-13:00 + } } diff --git a/test-data/openxml4j/OPCCompliance_CoreProperties_AlternateTimezones.docx b/test-data/openxml4j/OPCCompliance_CoreProperties_AlternateTimezones.docx new file mode 100644 index 0000000000000000000000000000000000000000..8b4de4a2e270c058bc3c2a6e91a47a0f3ce86552 GIT binary patch literal 13159 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 fnm