jdk/test/javax/imageio/plugins/tiff/MultiPageTest/MultiPageTest.java
author iignatyev
Mon, 12 Jun 2017 12:45:52 -0700
changeset 45468 e5b219883af4
parent 45288 58be10a068c2
permissions -rw-r--r--
8181762: add explicit @build actions for jdk.test.lib classes in all :tier3 tests Reviewed-by: alanb
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
35672
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
     1
/*
45288
58be10a068c2 8180805: move RandomFactory to the top level testlibrary
iignatyev
parents: 36916
diff changeset
     2
 * Copyright (c) 2016, 2017, Oracle and/or its affiliates. All rights reserved.
35672
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
     3
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
     4
 *
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
     5
 * This code is free software; you can redistribute it and/or modify it
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
     6
 * under the terms of the GNU General Public License version 2 only, as
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
     7
 * published by the Free Software Foundation.
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
     8
 *
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
     9
 * This code is distributed in the hope that it will be useful, but WITHOUT
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
    10
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
    11
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
    12
 * version 2 for more details (a copy is included in the LICENSE file that
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
    13
 * accompanied this code).
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
    14
 *
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
    15
 * You should have received a copy of the GNU General Public License version
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
    16
 * 2 along with this work; if not, write to the Free Software Foundation,
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
    17
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
    18
 *
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
    19
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
    20
 * or visit www.oracle.com if you need additional information or have any
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
    21
 * questions.
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
    22
 */
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
    23
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
    24
/**
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
    25
 * @test
45288
58be10a068c2 8180805: move RandomFactory to the top level testlibrary
iignatyev
parents: 36916
diff changeset
    26
 * @library /test/lib
35672
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
    27
 *
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
    28
 * @bug     8145776
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
    29
 * @author  a.stepanov
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
    30
 * @summary A simple write-read test for the multi-page tiff.
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
    31
 *          Create the file programmaticaly, then do some simple checks
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
    32
 *          (number of pages, sizes, colors). Use -Dseed=X to set
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
    33
 *          the random generator seed.
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
    34
 *
45468
e5b219883af4 8181762: add explicit @build actions for jdk.test.lib classes in all :tier3 tests
iignatyev
parents: 45288
diff changeset
    35
 * @build   jdk.test.lib.RandomFactory
35672
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
    36
 * @run     main MultiPageTest
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
    37
 * @key     randomness
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
    38
 */
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
    39
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
    40
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
    41
import java.awt.*;
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
    42
import java.awt.image.*;
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
    43
import java.io.*;
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
    44
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
    45
import java.util.*;
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
    46
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
    47
import javax.imageio.*;
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
    48
import javax.imageio.stream.*;
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
    49
45288
58be10a068c2 8180805: move RandomFactory to the top level testlibrary
iignatyev
parents: 36916
diff changeset
    50
import jdk.test.lib.RandomFactory;
35672
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
    51
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
    52
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
    53
public class MultiPageTest {
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
    54
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
    55
    private final String fileName;
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
    56
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
    57
    private final int NUM_IMAGES = 51;
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
    58
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
    59
    private final static Random rnd = RandomFactory.getRandom();
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
    60
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
    61
    private final int w[], h[];
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
    62
    private final Color colors[];
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
    63
    private final int BLACK_SIZE = 100;
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
    64
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
    65
    private final int imageType;
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
    66
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
    67
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
    68
    public MultiPageTest(int type, String tName) {
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
    69
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
    70
        imageType = type;
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
    71
        fileName  = "test__" + tName + ".tif";
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
    72
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
    73
        w = new int[NUM_IMAGES + 4];
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
    74
        h = new int[NUM_IMAGES + 4];
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
    75
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
    76
        for (int i = 2; i < NUM_IMAGES + 2; i++) {
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
    77
            w[i] = 10 + rnd.nextInt(21);
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
    78
            h[i] = 10 + rnd.nextInt(21);
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
    79
        }
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
    80
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
    81
        w[0] = BLACK_SIZE;  h[0] = BLACK_SIZE;
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
    82
        w[1] = BLACK_SIZE;  h[1] = BLACK_SIZE;
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
    83
        w[NUM_IMAGES + 2] = BLACK_SIZE;  h[NUM_IMAGES + 2] = BLACK_SIZE;
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
    84
        w[NUM_IMAGES + 3] = BLACK_SIZE;  h[NUM_IMAGES + 3] = BLACK_SIZE;
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
    85
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
    86
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
    87
        colors = new Color[NUM_IMAGES + 4];
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
    88
        for (int i = 2; i < NUM_IMAGES + 2; ++i) {
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
    89
            colors[i] = new Color(
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
    90
                rnd.nextInt(256), rnd.nextInt(256), rnd.nextInt(256));
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
    91
        }
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
    92
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
    93
        colors[0] = Color.black;
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
    94
        colors[1] = Color.black;
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
    95
        colors[NUM_IMAGES + 2] = Color.black;
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
    96
        colors[NUM_IMAGES + 3] = Color.black;
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
    97
    }
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
    98
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
    99
36916
54775766cde0 8149558: [TEST] add regression test for JDK-8150154
avstepan
parents: 35672
diff changeset
   100
    private ImageWriter getTIFFWriter() {
35672
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
   101
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
   102
        Iterator<ImageWriter> writers = ImageIO.getImageWritersByFormatName("TIFF");
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
   103
        if (!writers.hasNext()) {
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
   104
            throw new RuntimeException("No writers available for " + fileName);
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
   105
        }
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
   106
        return writers.next();
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
   107
    }
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
   108
36916
54775766cde0 8149558: [TEST] add regression test for JDK-8150154
avstepan
parents: 35672
diff changeset
   109
    private ImageReader getTIFFReader() {
35672
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
   110
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
   111
        Iterator<ImageReader> readers = ImageIO.getImageReadersByFormatName("TIFF");
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
   112
        if (!readers.hasNext()) {
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
   113
            throw new RuntimeException("No readers available for " + fileName);
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
   114
        }
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
   115
        return readers.next();
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
   116
    }
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
   117
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
   118
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
   119
    private void createImage() throws Exception {
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
   120
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
   121
        OutputStream s = new BufferedOutputStream(new FileOutputStream(fileName));
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
   122
        try (ImageOutputStream ios = ImageIO.createImageOutputStream(s)) {
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
   123
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
   124
            ImageWriter writer = getTIFFWriter();
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
   125
            writer.setOutput(ios);
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
   126
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
   127
            Graphics g;
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
   128
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
   129
            BufferedImage blackImg =
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
   130
                new BufferedImage(BLACK_SIZE, BLACK_SIZE, imageType);
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
   131
            g = blackImg.getGraphics();
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
   132
            g.setColor(Color.black);
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
   133
            g.fillRect(0, 0, BLACK_SIZE, BLACK_SIZE);
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
   134
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
   135
            writer.prepareWriteSequence(null);
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
   136
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
   137
            for (int i = 2; i < NUM_IMAGES + 2; i++) {
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
   138
                BufferedImage img = new BufferedImage(w[i], h[i], imageType);
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
   139
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
   140
                g = img.getGraphics();
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
   141
                g.setColor(colors[i]);
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
   142
                g.fillRect(0, 0, w[i], h[i]);
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
   143
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
   144
                writer.writeToSequence(new IIOImage(img, null, null), null);
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
   145
            }
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
   146
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
   147
            writer.endWriteSequence();
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
   148
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
   149
            // check: insert to the beginning
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
   150
            writer.writeInsert(0, new IIOImage(blackImg, null, null), null);
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
   151
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
   152
            // check: insert to non-zero position
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
   153
            writer.writeInsert(1, new IIOImage(blackImg, null, null), null);
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
   154
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
   155
            // check: append to the end by index
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
   156
            writer.writeInsert(NUM_IMAGES + 2,
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
   157
                new IIOImage(blackImg, null, null), null);
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
   158
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
   159
            // check: append to the end using index "-1"
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
   160
            writer.writeInsert(-1, new IIOImage(blackImg, null, null), null);
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
   161
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
   162
            ios.flush();
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
   163
            writer.dispose();
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
   164
        }
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
   165
        s.close();
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
   166
    }
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
   167
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
   168
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
   169
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
   170
    private void readAndCheckImage() throws Exception {
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
   171
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
   172
        ImageReader reader = getTIFFReader();
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
   173
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
   174
        ImageInputStream s = ImageIO.createImageInputStream(new File(fileName));
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
   175
        reader.setInput(s);
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
   176
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
   177
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
   178
        // check number of pages
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
   179
        if ((NUM_IMAGES + 4) != reader.getNumImages(true)) {
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
   180
            throw new RuntimeException("invalid number of images!");
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
   181
        }
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
   182
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
   183
        // check colors / sizes
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
   184
        for (int i = 0; i < NUM_IMAGES + 4; i++) {
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
   185
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
   186
            BufferedImage img = reader.read(i);
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
   187
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
   188
            int imw = w[i], imh = h[i];
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
   189
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
   190
            if ( (img.getWidth() != imw) || (img.getHeight() != imh) ) {
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
   191
                throw new RuntimeException("NOK: size(" + i + ")");
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
   192
            }
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
   193
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
   194
            Color
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
   195
                    c1 = new Color(img.getRGB(0, 0)),
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
   196
                    c2 = new Color(img.getRGB(imw / 2, imh / 2)),
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
   197
                    c3 = new Color(img.getRGB(imw - 1, imh - 1));
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
   198
            if (! (c1.equals(colors[i]) && c1.equals(c2) && c1.equals(c3) ) ) {
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
   199
                throw new RuntimeException("NOK: color(" + i + ")");
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
   200
            }
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
   201
        }
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
   202
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
   203
        reader.dispose();
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
   204
        s.close();
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
   205
    }
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
   206
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
   207
    public void doTest() throws Exception {
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
   208
        createImage();
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
   209
        readAndCheckImage();
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
   210
    }
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
   211
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
   212
    public static void main(String[] args) throws Exception {
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
   213
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
   214
        int types[] = new int[]{
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
   215
            BufferedImage.TYPE_INT_RGB,
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
   216
            BufferedImage.TYPE_INT_ARGB,
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
   217
            BufferedImage.TYPE_INT_ARGB_PRE,
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
   218
            BufferedImage.TYPE_INT_BGR,
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
   219
            BufferedImage.TYPE_3BYTE_BGR,
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
   220
            BufferedImage.TYPE_4BYTE_ABGR,
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
   221
            BufferedImage.TYPE_4BYTE_ABGR_PRE
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
   222
        };
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
   223
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
   224
        String names[] = new String[]{
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
   225
            "TYPE_INT_RGB",
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
   226
            "TYPE_INT_ARGB",
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
   227
            "TYPE_INT_ARGB_PRE",
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
   228
            "TYPE_INT_BGR",
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
   229
            "TYPE_3BYTE_BGR",
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
   230
            "TYPE_4BYTE_ABGR",
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
   231
            "TYPE_4BYTE_ABGR_PRE"
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
   232
        };
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
   233
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
   234
        for (int i = 0; i < types.length; i++) {
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
   235
            System.out.println("image type: " + names[i]);
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
   236
            (new MultiPageTest(types[i], names[i])).doTest();
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
   237
        }
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
   238
    }
c97d62614abc 8145776: [TEST] add a test checking multipage tiff creation
avstepan
parents:
diff changeset
   239
}