Skip to content

Commit 9a233f1

Browse files
Move PdfColorSpace test from samples internal, add unit test
DEVSIX-3772
1 parent 1b38d22 commit 9a233f1

File tree

1 file changed

+47
-0
lines changed

1 file changed

+47
-0
lines changed

kernel/src/test/java/com/itextpdf/kernel/pdf/PdfArrayTest.java

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,8 +43,17 @@ This file is part of the iText (R) project.
4343
package com.itextpdf.kernel.pdf;
4444

4545
import com.itextpdf.io.source.ByteArrayOutputStream;
46+
import com.itextpdf.kernel.geom.Rectangle;
47+
import com.itextpdf.kernel.pdf.canvas.parser.EventType;
48+
import com.itextpdf.kernel.pdf.canvas.parser.PdfCanvasProcessor;
49+
import com.itextpdf.kernel.pdf.canvas.parser.data.IEventData;
50+
import com.itextpdf.kernel.pdf.canvas.parser.listener.IEventListener;
51+
import com.itextpdf.kernel.pdf.colorspace.PdfColorSpace;
52+
import com.itextpdf.kernel.pdf.colorspace.PdfSpecialCs;
4653
import com.itextpdf.test.ExtendedITextTest;
4754
import com.itextpdf.test.annotations.type.UnitTest;
55+
56+
import java.util.Set;
4857
import org.junit.Assert;
4958
import org.junit.Test;
5059
import org.junit.experimental.categories.Category;
@@ -226,4 +235,42 @@ public void testIndexOf2() {
226235
Assert.assertEquals(i, array.indexOf(array2.get(i)));
227236
}
228237
}
238+
239+
@Test
240+
public void pdfUncoloredPatternColorSize1Test() {
241+
PdfDocument pdfDocument = new PdfDocument(new PdfWriter(new ByteArrayOutputStream()));
242+
243+
String contentColorSpace = "/Cs1 cs\n";
244+
PdfDictionary pageDictionary = (PdfDictionary) new PdfDictionary().makeIndirect(pdfDocument);
245+
PdfStream contentStream = new PdfStream(contentColorSpace.getBytes());
246+
pageDictionary.put(PdfName.Contents, contentStream);
247+
248+
PdfPage page = pdfDocument.addNewPage();
249+
page.getPdfObject().put(PdfName.Contents, contentStream);
250+
251+
PdfArray pdfArray = new PdfArray();
252+
pdfArray.add(PdfName.Pattern);
253+
PdfColorSpace space = PdfColorSpace.makeColorSpace(pdfArray);
254+
page.getResources().addColorSpace(space);
255+
256+
Rectangle rectangle = new Rectangle(50, 50, 1000, 1000);
257+
page.setMediaBox(rectangle);
258+
259+
PdfCanvasProcessor processor = new PdfCanvasProcessor(new NoOpListener());
260+
processor.processPageContent(page);
261+
262+
// Check if we reach the end of the test without failings together with verifying expected color space instance
263+
Assert.assertTrue(processor.getGraphicsState().getFillColor().getColorSpace() instanceof PdfSpecialCs.Pattern);
264+
}
265+
266+
private static class NoOpListener implements IEventListener {
267+
@Override
268+
public void eventOccurred(IEventData data, EventType type) {
269+
}
270+
271+
@Override
272+
public Set<EventType> getSupportedEvents() {
273+
return null;
274+
}
275+
}
229276
}

0 commit comments

Comments
 (0)