/* * 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 java.io.ByteArrayOutputStream; import java.io.IOException; import org.junit.Test; import static org.junit.Assert.assertEquals; import static org.mockito.Mockito.mock; public class PDFPageLabelsTestCase { @Test public void testAddPageLabel() throws IOException { PDFDocument pdfDoc = mock(PDFDocument.class); PDFPageLabels pageLabels = new PDFPageLabels(); pageLabels.setDocument(pdfDoc); int index = 0; StringBuilder expected = new StringBuilder(); expected.append("["); expected.append(index + " << /S /r >>"); pageLabels.addPageLabel(index++, "i"); pageLabels.addPageLabel(index++, "ii"); pageLabels.addPageLabel(index++, "iii"); expected.append(" " + index + " << /S /D >>"); pageLabels.addPageLabel(index++, "1"); pageLabels.addPageLabel(index++, "2"); pageLabels.addPageLabel(index++, "3"); pageLabels.addPageLabel(index++, "4"); pageLabels.addPageLabel(index++, "5"); pageLabels.addPageLabel(index++, "6"); pageLabels.addPageLabel(index++, "7"); pageLabels.addPageLabel(index++, "8"); pageLabels.addPageLabel(index++, "9"); pageLabels.addPageLabel(index++, "10"); expected.append(" " + index + " << /S /A >>"); pageLabels.addPageLabel(index++, "A"); pageLabels.addPageLabel(index++, "B"); expected.append(" " + index + " << /S /R /St 100 >>"); pageLabels.addPageLabel(index++, "C"); expected.append(" " + index + " << /S /R /St 500 >>"); pageLabels.addPageLabel(index++, "D"); expected.append(" " + index + " << /S /A /St 5 >>"); pageLabels.addPageLabel(index++, "E"); pageLabels.addPageLabel(index++, "F"); pageLabels.addPageLabel(index++, "G"); expected.append(" " + index + " << /P (aa) >>"); pageLabels.addPageLabel(index++, "aa"); expected.append(" " + index + " << /P (ab) >>"); pageLabels.addPageLabel(index++, "ab"); expected.append(" " + index + " << /P (ac) >>"); pageLabels.addPageLabel(index++, "ac"); expected.append(" " + index + " << /S /a >>"); pageLabels.addPageLabel(index++, "a"); pageLabels.addPageLabel(index++, "b"); expected.append(" " + index + " << /S /R /St 2 >>"); pageLabels.addPageLabel(index++, "II"); expected.append(" " + index + " << /S /R /St 12 >>"); pageLabels.addPageLabel(index++, "XII"); expected.append(" " + index + " <<\n /P (00)\n /S /D\n /St 9\n>>"); pageLabels.addPageLabel(index++, "009"); expected.append(" " + index + " <<\n /P (0)\n /S /D\n /St 10\n>>"); pageLabels.addPageLabel(index++, "010"); pageLabels.addPageLabel(index++, "011"); expected.append("]"); PDFNumsArray nums = pageLabels.getNums(); ByteArrayOutputStream baos = new ByteArrayOutputStream(); nums.output(baos); assertEquals(expected.toString(), baos.toString()); baos.close(); } }