You are viewing a plain text version of this content. The canonical link for it is here.
Posted to fop-commits@xmlgraphics.apache.org by cb...@apache.org on 2012/01/06 17:03:45 UTC
svn commit: r1228243 [2/2] - in /xmlgraphics/fop/trunk: ./
src/java/org/apache/fop/pdf/ test/java/org/apache/fop/
test/java/org/apache/fop/pdf/ test/java/org/apache/fop/util/
Modified: xmlgraphics/fop/trunk/test/java/org/apache/fop/pdf/PDFObjectTestCase.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/test/java/org/apache/fop/pdf/PDFObjectTestCase.java?rev=1228243&r1=1228242&r2=1228243&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/test/java/org/apache/fop/pdf/PDFObjectTestCase.java (original)
+++ xmlgraphics/fop/trunk/test/java/org/apache/fop/pdf/PDFObjectTestCase.java Fri Jan 6 16:03:44 2012
@@ -19,44 +19,133 @@
package org.apache.fop.pdf;
-import static org.junit.Assert.assertEquals;
-
-import java.util.Calendar;
-import java.util.Date;
-import java.util.Locale;
-import java.util.TimeZone;
-
import org.junit.Test;
+import org.junit.Before;
+import static org.junit.Assert.*;
+
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
/**
* Tests the PDFObject class.
*/
public class PDFObjectTestCase {
+ /** The document behind this object */
+ protected final PDFDocument doc = new PDFDocument("test");
+ /** The parent of this object */
+ protected final PDFObject parent = new DummyPDFObject();
+ /** The test subject */
+ protected PDFObject pdfObjectUnderTest;
+ /** The string to begin describing the object <code>"1 0 obj\n"</code> */
+ protected final String beginObj = "1 0 obj\n";
+ /** The string to end describing the object <code>"\nendobj\n"</code> */
+ protected final String endObj = "\nendobj\n";
+
+ private static class DummyPDFObject extends PDFObject {
+
+ };
+
+ @Before
+ public void setUp() {
+ pdfObjectUnderTest = new DummyPDFObject();
+ pdfObjectUnderTest.setDocument(doc);
+ pdfObjectUnderTest.setParent(parent);
+ }
/**
- * Tests date/time formatting in PDFObject.
- * @throws Exception if an error occurs
+ * Tests setObjectNumber()
+ */
+ @Test
+ public void testSetObjectNumber() {
+ pdfObjectUnderTest.setObjectNumber(1);
+ assertEquals(1, pdfObjectUnderTest.getObjectNumber());
+
+ pdfObjectUnderTest.setObjectNumber(5);
+ assertEquals(5, pdfObjectUnderTest.getObjectNumber());
+ }
+
+ /**
+ * Tests hasObjectNumber() - returns the object number of the underlying PDF object.
+ */
+ @Test
+ public void testHasObjectNumber() {
+ assertFalse(pdfObjectUnderTest.hasObjectNumber());
+
+ pdfObjectUnderTest.setObjectNumber(1);
+ assertTrue(pdfObjectUnderTest.hasObjectNumber());
+ }
+
+ /**
+ * Tests getGeneration() - returns the generation number of the underlying PDF object.
+ */
+ @Test
+ public void testGetGeneration() {
+ // Default should be 0
+ assertEquals(0, pdfObjectUnderTest.getGeneration());
+ // apparently there is no way to set this to anything other than 0
+ }
+
+ /**
+ * Tests setDocument() - returns the document to which this object is bound.
*/
@Test
- public void testDateFormatting() throws Exception {
- Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("GMT"), Locale.ENGLISH);
- cal.set(2008, Calendar.FEBRUARY, 07, 15, 11, 07);
- cal.set(Calendar.MILLISECOND, 0);
- Date dt = cal.getTime();
-
- MyPDFObject obj = new MyPDFObject();
- String s = obj.formatDateTime(dt, TimeZone.getTimeZone("GMT"));
- assertEquals("D:20080207151107Z", s);
- s = obj.formatDateTime(dt, TimeZone.getTimeZone("GMT+02:00"));
- assertEquals("D:20080207171107+02'00'", s);
- s = obj.formatDateTime(dt, TimeZone.getTimeZone("GMT+02:30"));
- assertEquals("D:20080207174107+02'30'", s);
- s = obj.formatDateTime(dt, TimeZone.getTimeZone("GMT-08:00"));
- assertEquals("D:20080207071107-08'00'", s);
+ public void testSetDocument() {
+ assertEquals(doc, pdfObjectUnderTest.getDocument());
+ // assign a different document to the object and test (this should be immutable but isn't)
+ PDFDocument anotherDoc = new PDFDocument("another test");
+ pdfObjectUnderTest.setDocument(anotherDoc);
+ assertEquals(anotherDoc, pdfObjectUnderTest.getDocument());
}
- private class MyPDFObject extends PDFObject {
+ /**
+ * Tests setParent() - assigns the object a parent.
+ */
+ @Test
+ public void testSetParent() {
+ assertEquals(parent, pdfObjectUnderTest.getParent());
+ // assign another parent (this probably shouldn't me mutable)
+ DummyPDFObject anotherParent = new DummyPDFObject();
+ pdfObjectUnderTest.setParent(anotherParent);
+ assertEquals(anotherParent, pdfObjectUnderTest.getParent());
+ }
+ /**
+ * Test getObjectID() - returns the PDF object ID.
+ */
+ @Test
+ public void testGetObjectID() {
+ pdfObjectUnderTest.setObjectNumber(10);
+ // String is of the format "<object#> <generation#> obj\n"
+ assertEquals("10 0 obj\n", pdfObjectUnderTest.getObjectID());
+ }
+
+ /**
+ * Test referencePDF() - returns a {@link String} in PDF format to reference this object.
+ */
+ @Test
+ public void testReferencePDF() {
+ try {
+ pdfObjectUnderTest.referencePDF();
+ fail("The object number is not set, an exception should be thrown");
+ } catch (IllegalArgumentException e) {
+ // PASS
+ }
+ pdfObjectUnderTest.setObjectNumber(10);
+ // Referencing this object is in the format "<obj#> <gen#> R"
+ assertEquals("10 0 R", pdfObjectUnderTest.referencePDF());
+ }
+
+ /**
+ * Test makeReference() - returns this object represented as a {@link PDFReference}.
+ */
+ @Test
+ public void testMakeReference() {
+ // Not very intelligent but, there's not much to test here
+ pdfObjectUnderTest.setObjectNumber(10);
+ PDFReference ref = pdfObjectUnderTest.makeReference();
+ assertEquals(pdfObjectUnderTest.getObjectNumber(), ref.getObjectNumber());
+ assertEquals(pdfObjectUnderTest, ref.getObject());
+ assertEquals(pdfObjectUnderTest.referencePDF(), ref.toString());
}
/**
@@ -78,4 +167,32 @@ public class PDFObjectTestCase {
assertEquals(ref.toString(), "8 0 R");
}
+ /**
+ * A generic method to test output() for sub-classes of (@link PDFObject}. The expected String
+ * should be formatted such that the object number and object descriptor aren't printed i.e.
+ * for a simple integer object in PDF:
+ * <pre>
+ * 1 0 obj ** ommited from expectedString
+ * 10
+ * endobj ** ommited from expectedString
+ * </pre>
+ * Thus the expected string would be "10".
+ * @param expectedString the string that is expected.
+ * @param object the object being tested
+ * @throws IOException error with I/O
+ */
+ protected void testOutputStreams(String expectedString, PDFObject object) throws IOException {
+ // Test both with and without object numbers
+ ByteArrayOutputStream outStream = new ByteArrayOutputStream();
+ // Ensure that
+ object.setObjectNumber(0);
+ assertEquals(expectedString.length(), object.output(outStream));
+ assertEquals(expectedString, outStream.toString());
+ outStream.reset();
+ object.setObjectNumber(1);
+ // Test the length of the output string is returned correctly.
+ String string = beginObj + expectedString + endObj;
+ assertEquals(string.length(), object.output(outStream));
+ assertEquals(string, outStream.toString());
+ }
}
Added: xmlgraphics/fop/trunk/test/java/org/apache/fop/pdf/PDFRectangleTestCase.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/test/java/org/apache/fop/pdf/PDFRectangleTestCase.java?rev=1228243&view=auto
==============================================================================
--- xmlgraphics/fop/trunk/test/java/org/apache/fop/pdf/PDFRectangleTestCase.java (added)
+++ xmlgraphics/fop/trunk/test/java/org/apache/fop/pdf/PDFRectangleTestCase.java Fri Jan 6 16:03:44 2012
@@ -0,0 +1,52 @@
+/*
+ * 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.
+ */
+
+/* $Id$ */
+
+package org.apache.fop.pdf;
+
+import static org.junit.Assert.assertEquals;
+
+import org.junit.Test;
+
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.OutputStream;
+
+/**
+ * Test case for {@link PDFRectangle}.
+ */
+public class PDFRectangleTestCase {
+
+ /**
+ * Test outputInline() - ensure properly formatted co-ords are printed to the output stream.
+ * @throws IOException if an I/O error occurs
+ */
+ @Test
+ public void testOutputInline() throws IOException {
+ OutputStream out = new ByteArrayOutputStream();
+ // These are arbitrary values thus have no meaning
+ PDFRectangle rect = new PDFRectangle(1, 2, 3, 4);
+
+ StringBuilder textBuffer = new StringBuilder();
+ // Ensure text before the outputInline() is maintained
+ textBuffer.append("Test ");
+
+ rect.outputInline(out, textBuffer);
+ assertEquals("Test [1 2 3 4]", textBuffer.toString());
+ }
+}
Added: xmlgraphics/fop/trunk/test/java/org/apache/fop/pdf/PDFReferenceTestCase.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/test/java/org/apache/fop/pdf/PDFReferenceTestCase.java?rev=1228243&view=auto
==============================================================================
--- xmlgraphics/fop/trunk/test/java/org/apache/fop/pdf/PDFReferenceTestCase.java (added)
+++ xmlgraphics/fop/trunk/test/java/org/apache/fop/pdf/PDFReferenceTestCase.java Fri Jan 6 16:03:44 2012
@@ -0,0 +1,64 @@
+/*
+ * 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.
+ */
+
+/* $Id$ */
+
+package org.apache.fop.pdf;
+
+import static org.junit.Assert.assertEquals;
+
+import org.junit.Test;
+
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+
+/**
+ * Test case for {@link PDFReference}.
+ */
+public class PDFReferenceTestCase {
+
+ /**
+ * Tests outputInline() - ensure that this object is properly formatted when printed to the
+ * output stream.
+ * @throws IOException if an I/O error occurs
+ */
+ @Test
+ public void testOutputInline() throws IOException {
+ PDFName name = new PDFName("Test name");
+ name.setObjectNumber(2);
+ PDFReference pdfRef = new PDFReference(name);
+
+ ByteArrayOutputStream out = new ByteArrayOutputStream();
+ StringBuilder textBuffer = new StringBuilder();
+ // Ensure that text before outputInline() is kept
+ textBuffer.append("Text ");
+
+ pdfRef.outputInline(out, textBuffer);
+ assertEquals("Text 2 0 R", textBuffer.toString());
+ }
+
+ /**
+ * Tests toString() - since this is used quite a lot, we have to ensure the format is correct.
+ */
+ @Test
+ public void testToString() {
+ PDFName name = new PDFName("arbitrary");
+ name.setObjectNumber(10);
+ PDFReference ref = new PDFReference(name);
+ assertEquals("10 0 R", ref.toString());
+ }
+}
---------------------------------------------------------------------
To unsubscribe, e-mail: fop-commits-unsubscribe@xmlgraphics.apache.org
For additional commands, e-mail: fop-commits-help@xmlgraphics.apache.org