From 6025b6016517c6d898d8957d1d7e03ba71431912 Mon Sep 17 00:00:00 2001 From: tknall Date: Fri, 1 Dec 2006 12:20:24 +0000 Subject: Initial import of release 2.2. git-svn-id: https://joinup.ec.europa.eu/svn/pdf-as/trunk@4 7b5415b0-85f9-ee4d-85bd-d5d0c3b42d1c --- src/main/java/test/pdfbox/filter/TestFilters.java | 182 ++++++++++++++++++++++ 1 file changed, 182 insertions(+) create mode 100644 src/main/java/test/pdfbox/filter/TestFilters.java (limited to 'src/main/java/test/pdfbox/filter/TestFilters.java') diff --git a/src/main/java/test/pdfbox/filter/TestFilters.java b/src/main/java/test/pdfbox/filter/TestFilters.java new file mode 100644 index 0000000..db124eb --- /dev/null +++ b/src/main/java/test/pdfbox/filter/TestFilters.java @@ -0,0 +1,182 @@ +/** + * Copyright (c) 2003-2004, www.pdfbox.org + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of pdfbox; nor the names of its + * contributors may be used to endorse or promote products derived from this + * software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * http://www.pdfbox.org + * + */ +package test.pdfbox.filter; + +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.File; +import java.io.FileInputStream; + +import java.util.Collection; +import java.util.Iterator; + +import junit.framework.Test; +import junit.framework.TestCase; +import junit.framework.TestSuite; + +import org.apache.log4j.Logger; + +import org.pdfbox.cos.COSDictionary; + +import org.pdfbox.filter.DCTFilter; +import org.pdfbox.filter.CCITTFaxDecodeFilter; +import org.pdfbox.filter.Filter; +import org.pdfbox.filter.FilterManager; +import org.pdfbox.filter.RunLengthDecodeFilter; + +/** + * This will test all of the filters in the PDFBox system. + * + * @author Ben Litchfield (ben@csh.rit.edu) + * @version $Revision: 1.5 $ + */ +public class TestFilters extends TestCase +{ + private static Logger log = Logger.getLogger(TestFilters.class); + + private static final int BUFFER_SIZE = 2048; + private static final COSDictionary EMPTY_DICTIONARY = new COSDictionary(); + + /** + * Constructor. + * + * @param name The name of the test to run. + */ + public TestFilters( String name ) + { + super( name ); + } + + /** + * This will get the suite of test that this class holds. + * + * @return All of the tests that this class holds. + */ + public static Test suite() + { + return new TestSuite( TestFilters.class ); + } + + /** + * This will test all of the filters in the system. + * + * @throws IOException If there is an exception while encoding. + */ + public void testFilters() throws IOException + { + FilterManager manager = new FilterManager(); + Collection filters = manager.getFilters(); + + Iterator filterIter = filters.iterator(); + while( filterIter.hasNext() ) + { + long start = System.currentTimeMillis(); + Filter filter = (Filter)filterIter.next(); + if( !(filter instanceof DCTFilter || + filter instanceof CCITTFaxDecodeFilter || + filter instanceof RunLengthDecodeFilter)) + { + checkFilter( new File( "classes" ), filter ); + long stop = System.currentTimeMillis(); + System.out.println( "Time for filter " + filter.getClass().getName() + "=" + (stop-start) ); + } + } + } + + /** + * This will check the filter. + * + * @param file The file or directory to test. + * @param filter The filter to check. + * + * @throws IOException If there is an exception while encoding. + */ + private void checkFilter( File file, Filter filter ) throws IOException + { + if( file.isDirectory() ) + { + File[] subFiles = file.listFiles(); + for( int i=0; i