aboutsummaryrefslogtreecommitdiffstats
path: root/main/src/test/java/org/apache/poi/TestPOIDocumentMain.java
diff options
context:
space:
mode:
authorAndreas Beeker <kiwiwings@apache.org>2021-03-27 14:03:16 +0000
committerAndreas Beeker <kiwiwings@apache.org>2021-03-27 14:03:16 +0000
commit37791e4bdfc706aa5684745594260f243b4be7ee (patch)
treea8dd8d0976fc478074d52cd3de79e0e6b5e6a33a /main/src/test/java/org/apache/poi/TestPOIDocumentMain.java
parent2bb3839bfe3e3bacff79f8157465633e311239ce (diff)
downloadpoi-37791e4bdfc706aa5684745594260f243b4be7ee.tar.gz
poi-37791e4bdfc706aa5684745594260f243b4be7ee.zip
65206 - Migrate ant / maven to gradle build
update gradle files and project structure along https://github.com/centic9/poi/tree/gradle_build remove eclipse IDE project files remove obsolete record generator files git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1888111 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'main/src/test/java/org/apache/poi/TestPOIDocumentMain.java')
-rw-r--r--main/src/test/java/org/apache/poi/TestPOIDocumentMain.java200
1 files changed, 200 insertions, 0 deletions
diff --git a/main/src/test/java/org/apache/poi/TestPOIDocumentMain.java b/main/src/test/java/org/apache/poi/TestPOIDocumentMain.java
new file mode 100644
index 0000000000..c2c44529b8
--- /dev/null
+++ b/main/src/test/java/org/apache/poi/TestPOIDocumentMain.java
@@ -0,0 +1,200 @@
+/* ====================================================================
+ 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;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertNull;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+
+import org.apache.poi.hpsf.DocumentSummaryInformation;
+import org.apache.poi.hpsf.HPSFPropertiesOnlyDocument;
+import org.apache.poi.hpsf.SummaryInformation;
+import org.apache.poi.hssf.HSSFTestDataSamples;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
+import org.apache.poi.poifs.filesystem.POIFSFileSystem;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+
+/**
+ * Tests that POIDocument correctly loads and saves the common
+ * (hspf) Document Properties.
+ *
+ * This is part 1 of 2 of the tests - it only does the POIDocuments
+ * which are part of the Main (not scratchpad)
+ */
+final class TestPOIDocumentMain {
+ // The POI Documents to work on
+ private POIDocument doc;
+ private POIDocument doc2;
+
+ /**
+ * Set things up, two spreadsheets for our testing
+ */
+ @BeforeEach
+ void setUp() {
+ doc = HSSFTestDataSamples.openSampleWorkbook("DateFormats.xls");
+ doc2 = HSSFTestDataSamples.openSampleWorkbook("StringFormulas.xls");
+ }
+
+ @Test
+ void readProperties() {
+ readPropertiesHelper(doc);
+ }
+
+ private void readPropertiesHelper(POIDocument docWB) {
+ // We should have both sets
+ assertNotNull(docWB.getDocumentSummaryInformation());
+ assertNotNull(docWB.getSummaryInformation());
+
+ // Check they are as expected for the test doc
+ assertEquals("Administrator", docWB.getSummaryInformation().getAuthor());
+ assertEquals(0, docWB.getDocumentSummaryInformation().getByteCount());
+ }
+
+ @Test
+ void readProperties2() {
+ // Check again on the word one
+ assertNotNull(doc2.getDocumentSummaryInformation());
+ assertNotNull(doc2.getSummaryInformation());
+
+ assertEquals("Avik Sengupta", doc2.getSummaryInformation().getAuthor());
+ assertNull(doc2.getSummaryInformation().getKeywords());
+ assertEquals(0, doc2.getDocumentSummaryInformation().getByteCount());
+ }
+
+ @Test
+ void writeProperties() throws IOException {
+ // Just check we can write them back out into a filesystem
+ POIFSFileSystem outFS = new POIFSFileSystem();
+ doc.readProperties();
+ doc.writeProperties(outFS);
+
+ // Should now hold them
+ assertNotNull(
+ outFS.createDocumentInputStream(SummaryInformation.DEFAULT_STREAM_NAME)
+ );
+ assertNotNull(
+ outFS.createDocumentInputStream(DocumentSummaryInformation.DEFAULT_STREAM_NAME)
+ );
+ }
+
+ @Test
+ void WriteReadProperties() throws IOException {
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+
+ // Write them out
+ POIFSFileSystem outFS = new POIFSFileSystem();
+ doc.readProperties();
+ doc.writeProperties(outFS);
+ outFS.writeFilesystem(baos);
+
+ // Create a new version
+ ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
+ POIFSFileSystem inFS = new POIFSFileSystem(bais);
+
+ // Check they're still there
+ POIDocument doc3 = new HPSFPropertiesOnlyDocument(inFS);
+ doc3.readProperties();
+
+ // Delegate test
+ readPropertiesHelper(doc3);
+ doc3.close();
+ }
+
+ @Test
+ void createNewProperties() throws IOException {
+ POIDocument doc = new HSSFWorkbook();
+
+ // New document won't have them
+ assertNull(doc.getSummaryInformation());
+ assertNull(doc.getDocumentSummaryInformation());
+
+ // Add them in
+ doc.createInformationProperties();
+ assertNotNull(doc.getSummaryInformation());
+ assertNotNull(doc.getDocumentSummaryInformation());
+
+ // Write out and back in again, no change
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ doc.write(baos);
+ ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
+
+ doc.close();
+
+ doc = new HSSFWorkbook(bais);
+
+ assertNotNull(doc.getSummaryInformation());
+ assertNotNull(doc.getDocumentSummaryInformation());
+
+ doc.close();
+ }
+
+ @Test
+ void createNewPropertiesOnExistingFile() throws IOException {
+ POIDocument doc = new HSSFWorkbook();
+
+ // New document won't have them
+ assertNull(doc.getSummaryInformation());
+ assertNull(doc.getDocumentSummaryInformation());
+
+ // Write out and back in again, no change
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ doc.write(baos);
+
+ doc.close();
+
+ ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
+ doc = new HSSFWorkbook(bais);
+
+ assertNull(doc.getSummaryInformation());
+ assertNull(doc.getDocumentSummaryInformation());
+
+ // Create, and change
+ doc.createInformationProperties();
+ doc.getSummaryInformation().setAuthor("POI Testing");
+ doc.getDocumentSummaryInformation().setCompany("ASF");
+
+ // Save and re-load
+ baos = new ByteArrayOutputStream();
+ doc.write(baos);
+
+ doc.close();
+
+ bais = new ByteArrayInputStream(baos.toByteArray());
+ doc = new HSSFWorkbook(bais);
+
+ // Check
+ assertNotNull(doc.getSummaryInformation());
+ assertNotNull(doc.getDocumentSummaryInformation());
+ assertEquals("POI Testing", doc.getSummaryInformation().getAuthor());
+ assertEquals("ASF", doc.getDocumentSummaryInformation().getCompany());
+
+ // Asking to re-create will make no difference now
+ doc.createInformationProperties();
+ assertNotNull(doc.getSummaryInformation());
+ assertNotNull(doc.getDocumentSummaryInformation());
+ assertEquals("POI Testing", doc.getSummaryInformation().getAuthor());
+ assertEquals("ASF", doc.getDocumentSummaryInformation().getCompany());
+
+ doc.close();
+ }
+}