jdk/test/javax/imageio/plugins/tiff/TIFFFieldTest.java
author bpb
Fri, 09 Dec 2016 11:08:38 -0800
changeset 42742 60484cf11911
parent 40721 69084433be85
child 42743 e61f0c011e93
permissions -rw-r--r--
8169725: cannot use TIFFField(TIFFTag tag, int value) for TIFF_LONG values greater than Integer.MAX_VALUE Summary: Change constructor TIFFField(TIFFTag,int) to TIFFField(TIFFTag,long). Reviewed-by: jdv, prr
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
37568
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
     1
/*
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
     2
 * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
     3
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
     4
 *
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
     5
 * This code is free software; you can redistribute it and/or modify it
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
     6
 * under the terms of the GNU General Public License version 2 only, as
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
     7
 * published by the Free Software Foundation.
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
     8
 *
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
     9
 * This code is distributed in the hope that it will be useful, but WITHOUT
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
    10
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
    11
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
    12
 * version 2 for more details (a copy is included in the LICENSE file that
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
    13
 * accompanied this code).
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
    14
 *
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
    15
 * You should have received a copy of the GNU General Public License version
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
    16
 * 2 along with this work; if not, write to the Free Software Foundation,
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
    17
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
    18
 *
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
    19
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
    20
 * or visit www.oracle.com if you need additional information or have any
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
    21
 * questions.
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
    22
 */
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
    23
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
    24
/**
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
    25
 * @test
42742
60484cf11911 8169725: cannot use TIFFField(TIFFTag tag, int value) for TIFF_LONG values greater than Integer.MAX_VALUE
bpb
parents: 40721
diff changeset
    26
 * @bug     8152183 8149562 8169725
37568
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
    27
 * @author  a.stepanov
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
    28
 * @summary Some checks for TIFFField methods
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
    29
 * @run     main TIFFFieldTest
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
    30
 */
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
    31
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
    32
import java.util.List;
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
    33
import java.util.ArrayList;
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
    34
import javax.imageio.metadata.IIOMetadataNode;
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
    35
import javax.imageio.plugins.tiff.*;
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
    36
import org.w3c.dom.NamedNodeMap;
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
    37
import org.w3c.dom.Node;
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
    38
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
    39
public class TIFFFieldTest {
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
    40
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
    41
    private final static String NAME = "tag"; // tag name
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
    42
    private final static int    NUM  = 12345; // tag number
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
    43
    private final static int MIN_TYPE = TIFFTag.MIN_DATATYPE;
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
    44
    private final static int MAX_TYPE = TIFFTag.MAX_DATATYPE;
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
    45
    private final static String CONSTRUCT = "can construct TIFFField with ";
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
    46
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
    47
    private void check(boolean ok, String msg) {
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
    48
        if (!ok) { throw new RuntimeException(msg); }
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
    49
    }
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
    50
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
    51
    private void testConstructors() {
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
    52
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
    53
        // test constructors
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
    54
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
    55
        TIFFTag tag = new TIFFTag(
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
    56
            NAME, NUM, 1 << TIFFTag.TIFF_SHORT | 1 << TIFFTag.TIFF_LONG);
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
    57
        TIFFField f;
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
    58
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
    59
        // constructor: TIFFField(tag, value)
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
    60
        boolean ok = false;
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
    61
        try { new TIFFField(null, 0); }
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
    62
        catch (NullPointerException e) { ok = true; }
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
    63
        check(ok, CONSTRUCT + "null tag");
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
    64
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
    65
        ok = false;
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
    66
        try { new TIFFField(tag, -1); }
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
    67
        catch (IllegalArgumentException e) { ok = true; }
42742
60484cf11911 8169725: cannot use TIFFField(TIFFTag tag, int value) for TIFF_LONG values greater than Integer.MAX_VALUE
bpb
parents: 40721
diff changeset
    68
        check(ok, CONSTRUCT + "negative value");
60484cf11911 8169725: cannot use TIFFField(TIFFTag tag, int value) for TIFF_LONG values greater than Integer.MAX_VALUE
bpb
parents: 40721
diff changeset
    69
60484cf11911 8169725: cannot use TIFFField(TIFFTag tag, int value) for TIFF_LONG values greater than Integer.MAX_VALUE
bpb
parents: 40721
diff changeset
    70
        ok = false;
60484cf11911 8169725: cannot use TIFFField(TIFFTag tag, int value) for TIFF_LONG values greater than Integer.MAX_VALUE
bpb
parents: 40721
diff changeset
    71
        try { new TIFFField(tag, 1L << 32); }
60484cf11911 8169725: cannot use TIFFField(TIFFTag tag, int value) for TIFF_LONG values greater than Integer.MAX_VALUE
bpb
parents: 40721
diff changeset
    72
        catch (IllegalArgumentException e) { ok = true; }
60484cf11911 8169725: cannot use TIFFField(TIFFTag tag, int value) for TIFF_LONG values greater than Integer.MAX_VALUE
bpb
parents: 40721
diff changeset
    73
        check(ok, CONSTRUCT + "value > 0xffffffff");
60484cf11911 8169725: cannot use TIFFField(TIFFTag tag, int value) for TIFF_LONG values greater than Integer.MAX_VALUE
bpb
parents: 40721
diff changeset
    74
60484cf11911 8169725: cannot use TIFFField(TIFFTag tag, int value) for TIFF_LONG values greater than Integer.MAX_VALUE
bpb
parents: 40721
diff changeset
    75
        ok = false;
60484cf11911 8169725: cannot use TIFFField(TIFFTag tag, int value) for TIFF_LONG values greater than Integer.MAX_VALUE
bpb
parents: 40721
diff changeset
    76
        try {
60484cf11911 8169725: cannot use TIFFField(TIFFTag tag, int value) for TIFF_LONG values greater than Integer.MAX_VALUE
bpb
parents: 40721
diff changeset
    77
            TIFFTag t = new TIFFTag(NAME, NUM, 1 << TIFFTag.TIFF_SHORT);
60484cf11911 8169725: cannot use TIFFField(TIFFTag tag, int value) for TIFF_LONG values greater than Integer.MAX_VALUE
bpb
parents: 40721
diff changeset
    78
            new TIFFField(t, 0x10000);
60484cf11911 8169725: cannot use TIFFField(TIFFTag tag, int value) for TIFF_LONG values greater than Integer.MAX_VALUE
bpb
parents: 40721
diff changeset
    79
        } catch (IllegalArgumentException e) { ok = true; }
60484cf11911 8169725: cannot use TIFFField(TIFFTag tag, int value) for TIFF_LONG values greater than Integer.MAX_VALUE
bpb
parents: 40721
diff changeset
    80
        check(ok, CONSTRUCT + "value 0x10000 incompatible with TIFF_SHORT");
60484cf11911 8169725: cannot use TIFFField(TIFFTag tag, int value) for TIFF_LONG values greater than Integer.MAX_VALUE
bpb
parents: 40721
diff changeset
    81
60484cf11911 8169725: cannot use TIFFField(TIFFTag tag, int value) for TIFF_LONG values greater than Integer.MAX_VALUE
bpb
parents: 40721
diff changeset
    82
        ok = false;
60484cf11911 8169725: cannot use TIFFField(TIFFTag tag, int value) for TIFF_LONG values greater than Integer.MAX_VALUE
bpb
parents: 40721
diff changeset
    83
        try {
60484cf11911 8169725: cannot use TIFFField(TIFFTag tag, int value) for TIFF_LONG values greater than Integer.MAX_VALUE
bpb
parents: 40721
diff changeset
    84
            TIFFTag t = new TIFFTag(NAME, NUM, 1 << TIFFTag.TIFF_LONG);
60484cf11911 8169725: cannot use TIFFField(TIFFTag tag, int value) for TIFF_LONG values greater than Integer.MAX_VALUE
bpb
parents: 40721
diff changeset
    85
            new TIFFField(t, 0xffff);
60484cf11911 8169725: cannot use TIFFField(TIFFTag tag, int value) for TIFF_LONG values greater than Integer.MAX_VALUE
bpb
parents: 40721
diff changeset
    86
        } catch (IllegalArgumentException e) { ok = true; }
60484cf11911 8169725: cannot use TIFFField(TIFFTag tag, int value) for TIFF_LONG values greater than Integer.MAX_VALUE
bpb
parents: 40721
diff changeset
    87
        check(ok, CONSTRUCT + "value 0xffff incompatible with TIFF_LONG");
37568
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
    88
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
    89
        // check value type recognition
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
    90
        int v = 1 << 16;
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
    91
        f = new TIFFField(tag, v - 1);
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
    92
        check(f.getType() == TIFFTag.TIFF_SHORT, "must be treated as short");
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
    93
        check(f.isIntegral(), "must be integral");
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
    94
        f = new TIFFField(tag, v);
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
    95
        check(f.getType() == TIFFTag.TIFF_LONG, "must be treated as long");
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
    96
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
    97
        // other checks
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
    98
        check(f.getAsLongs().length == 1, "invalid long[] size");
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
    99
        check(f.isIntegral(), "must be integral");
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   100
        check((f.getDirectory() == null) && !f.hasDirectory(),
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   101
            "must not have directory");
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   102
        check(f.getValueAsString(0).equals(String.valueOf(v)),
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   103
            "invalid string representation of value");
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   104
        check(f.getTag().getNumber() == f.getTagNumber(),
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   105
            "invalid tag number");
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   106
        check(f.getCount() == 1, "invalid count");
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   107
        check(f.getTagNumber() == NUM, "invalid tag number");
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   108
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   109
        // constructor: TIFFField(tag, type, count)
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   110
        int type = TIFFTag.TIFF_SHORT;
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   111
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   112
        ok = false;
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   113
        try { new TIFFField(null, type, 1); }
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   114
        catch (NullPointerException e) { ok = true; }
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   115
        check(ok, CONSTRUCT + "null tag");
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   116
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   117
        ok = false;
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   118
        try { new TIFFField(tag, MAX_TYPE + 1, 1); }
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   119
        catch (IllegalArgumentException e) { ok = true; }
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   120
        check(ok, CONSTRUCT + "invalid type tag");
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   121
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   122
        // check that count == 1 for TIFF_IFD_POINTER
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   123
        ok = false;
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   124
        try { new TIFFField(tag, TIFFTag.TIFF_IFD_POINTER, 0); }
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   125
        catch (IllegalArgumentException e) { ok = true; }
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   126
        check(ok, "only count = 1 should be allowed for IFDPointer");
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   127
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   128
        ok = false;
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   129
        try { new TIFFField(tag, TIFFTag.TIFF_IFD_POINTER, 2); }
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   130
        catch (IllegalArgumentException e) { ok = true; }
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   131
        check(ok, "only count = 1 should be allowed for IFDPointer");
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   132
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   133
        // check that count == 0 is not allowed for TIFF_RATIONAL, TIFF_SRATIONAL
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   134
        // (see fix for JDK-8149120)
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   135
        ok = false;
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   136
        try { new TIFFField(tag, TIFFTag.TIFF_RATIONAL, 0); }
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   137
        catch (IllegalArgumentException e) { ok = true; }
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   138
        check(ok, "count = 0 should not be allowed for Rational");
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   139
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   140
        ok = false;
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   141
        try { new TIFFField(tag, TIFFTag.TIFF_SRATIONAL, 0); }
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   142
        catch (IllegalArgumentException e) { ok = true; }
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   143
        check(ok, "count = 0 should not be allowed for SRational");
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   144
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   145
        ok = false;
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   146
        try { new TIFFField(tag, type, -1); }
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   147
        catch (IllegalArgumentException e) { ok = true; }
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   148
        check(ok, CONSTRUCT + "with invalid data count");
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   149
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   150
        f = new TIFFField(tag, type, 0);
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   151
        check(f.getCount() == 0, "invalid count");
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   152
        check(!f.hasDirectory(), "must not have directory");
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   153
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   154
        // constructor: TIFFField(tag, type, count, data)
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   155
        double a[] = {0.1, 0.2, 0.3};
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   156
        ok = false;
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   157
        try { new TIFFField(null, TIFFTag.TIFF_DOUBLE, a.length, a); }
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   158
        catch (NullPointerException e) { ok = true; }
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   159
        check(ok, CONSTRUCT + "null tag");
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   160
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   161
        ok = false;
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   162
        try { new TIFFField(tag, type, a.length - 1, a); }
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   163
        catch (IllegalArgumentException e) { ok = true; }
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   164
        check(ok, CONSTRUCT + "invalid data count");
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   165
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   166
        String a2[] = {"one", "two"};
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   167
        ok = false;
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   168
        try { new TIFFField(tag, type, 2, a2); }
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   169
        catch (IllegalArgumentException e) { ok = true; }
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   170
        check(ok, CONSTRUCT + "invalid data type");
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   171
        check((f.getDirectory() == null) && !f.hasDirectory(),
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   172
            "must not have directory");
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   173
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   174
        // constructor: TIFFField(tag, type, offset, dir)
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   175
        List<TIFFTag> tags = new ArrayList<>();
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   176
        tags.add(tag);
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   177
        TIFFTagSet sets[] = {new TIFFTagSet(tags)};
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   178
        TIFFDirectory dir = new TIFFDirectory(sets, null);
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   179
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   180
        ok = false;
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   181
        try { new TIFFField(null, type, 4L, dir); }
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   182
        catch (NullPointerException e) { ok = true; }
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   183
        check(ok, CONSTRUCT + "null tag");
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   184
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   185
        ok = false;
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   186
        try { new TIFFField(tag, type, 0L, dir); }
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   187
        catch (IllegalArgumentException e) { ok = true; }
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   188
        check(ok, CONSTRUCT + "non-positive offset");
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   189
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   190
        long offset = 4;
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   191
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   192
        for (int t = MIN_TYPE; t <= MAX_TYPE; t++) {
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   193
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   194
            tag = new TIFFTag(NAME, NUM, 1 << t);
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   195
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   196
            // only TIFF_LONG and TIFF_IFD_POINTER types are allowed
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   197
            if (t == TIFFTag.TIFF_LONG || t == TIFFTag.TIFF_IFD_POINTER) {
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   198
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   199
                f = new TIFFField(tag, t, offset, dir);
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   200
                check(f.hasDirectory(), "must have directory");
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   201
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   202
                check(f.getDirectory().getTag(NUM).getName().equals(NAME),
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   203
                    "invalid tag name");
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   204
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   205
                check(f.getCount() == 1, "invalid count");
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   206
                check(f.getAsLong(0) == offset, "invalid offset");
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   207
            } else {
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   208
                ok = false;
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   209
                try { new TIFFField(tag, t, offset, dir); }
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   210
                catch (IllegalArgumentException e) { ok = true; }
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   211
                check(ok, CONSTRUCT + "invalid data type");
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   212
            }
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   213
        }
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   214
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   215
        type = TIFFTag.TIFF_IFD_POINTER;
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   216
        tag = new TIFFTag(NAME, NUM, 1 << type);
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   217
        ok = false;
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   218
        try { new TIFFField(tag, type, offset, null); }
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   219
        catch (NullPointerException e) { ok = true; }
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   220
        check(ok, CONSTRUCT + "null TIFFDirectory");
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   221
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   222
        type = TIFFTag.TIFF_LONG;
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   223
        tag = new TIFFTag(NAME, NUM, 1 << type);
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   224
        ok = false;
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   225
        try { new TIFFField(tag, type, offset, null); }
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   226
        catch (NullPointerException e) { ok = true; }
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   227
        check(ok, CONSTRUCT + "null TIFFDirectory");
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   228
    }
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   229
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   230
    private void testTypes() {
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   231
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   232
        // test getTypeName(), getTypeByName() methods
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   233
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   234
        boolean ok = false;
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   235
        try { TIFFField.getTypeName(MIN_TYPE - 1); }
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   236
        catch (IllegalArgumentException e) { ok = true; }
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   237
        check(ok, "invalid data type number used");
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   238
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   239
        ok = false;
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   240
        try { TIFFField.getTypeName(MAX_TYPE + 1); }
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   241
        catch (IllegalArgumentException e) { ok = true; }
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   242
        check(ok, "invalid data type number used");
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   243
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   244
        for (int type = MIN_TYPE; type <= MAX_TYPE; type++) {
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   245
            String name = TIFFField.getTypeName(type);
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   246
            check(TIFFField.getTypeByName(name) == type, "invalid type");
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   247
        }
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   248
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   249
        for (int type = MIN_TYPE; type <= MAX_TYPE; type++) {
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   250
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   251
            TIFFTag tag = new TIFFTag(NAME, NUM, 1 << type);
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   252
            TIFFField f = new TIFFField(tag, type, 1);
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   253
            check(f.getType() == type, "invalid type");
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   254
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   255
            // check that invalid data types can not be used
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   256
            for (int type2 = MIN_TYPE; type2 <= MAX_TYPE; ++type2) {
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   257
                if (type2 != type) {
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   258
                    ok = false;
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   259
                    try { new TIFFField(tag, type2, 1); } // invalid type
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   260
                    catch (IllegalArgumentException e) { ok = true; }
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   261
                    check(ok, "invalid type was successfully set");
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   262
                }
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   263
            }
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   264
        }
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   265
    }
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   266
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   267
    private void testGetAs() {
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   268
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   269
        // test getAs...() methods
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   270
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   271
        int type = TIFFTag.TIFF_SHORT;
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   272
        TIFFTag tag = new TIFFTag(NAME, NUM, 1 << TIFFTag.TIFF_SHORT);
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   273
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   274
        short v = 123;
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   275
        TIFFField f = new TIFFField(tag, v);
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   276
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   277
        check(f.getAsInt(0)    ==    (int) v, "invalid int value");
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   278
        check(f.getAsLong(0)   ==   (long) v, "invalid long value");
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   279
        check(f.getAsFloat(0)  ==  (float) v, "invalid float value");
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   280
        check(f.getAsDouble(0) == (double) v, "invalid double value");
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   281
        check(f.getValueAsString(0).equals(Short.toString(v)),
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   282
            "invalid string representation");
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   283
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   284
        check(f.getAsInts().length == 1, "inavlid array size");
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   285
        check((int) v == f.getAsInts()[0], "invalid int value");
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   286
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   287
        float fa[] = {0.01f, 1.01f};
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   288
        type = TIFFTag.TIFF_FLOAT;
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   289
        f = new TIFFField(
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   290
            new TIFFTag(NAME, NUM, 1 << type), type, fa.length, fa);
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   291
        check(f.getCount() == fa.length, "invalid count");
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   292
        float fa2[] = f.getAsFloats();
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   293
        check(fa2.length == fa.length, "invalid array size");
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   294
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   295
        for (int i = 0; i < fa.length; i++) {
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   296
            check(fa2[i] == fa[i], "invalid value");
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   297
            check(f.getAsDouble(i) == fa[i], "invalid value");
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   298
            check(f.getAsInt(i) == (int) fa[i], "invalid value"); // cast to int
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   299
            check(f.getValueAsString(i).equals(Float.toString(fa[i])),
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   300
            "invalid string representation");
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   301
        }
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   302
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   303
        byte ba[] = {-1, -10, -100};
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   304
        type = TIFFTag.TIFF_BYTE;
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   305
        f = new TIFFField(
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   306
            new TIFFTag(NAME, NUM, 1 << type), type, ba.length, ba);
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   307
        check(f.getCount() == ba.length, "invalid count");
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   308
        byte ba2[] = f.getAsBytes();
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   309
        check(ba2.length == ba.length, "invalid count");
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   310
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   311
        for (int i = 0; i < ba.length; i++) {
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   312
            check(ba[i] == ba2[i], "invalid value");
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   313
            check(ba[i] == (byte) f.getAsDouble(i), "invalid value");
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   314
            check(ba[i] == (byte) f.getAsLong(i),   "invalid value");
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   315
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   316
            int unsigned = ba[i] & 0xff;
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   317
            check(f.getAsInt(i) == unsigned, "must be treated as unsigned");
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   318
        }
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   319
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   320
        char ca[] = {'a', 'z', 0xffff};
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   321
        type = TIFFTag.TIFF_SHORT;
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   322
        f = new TIFFField(
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   323
            new TIFFTag(NAME, NUM, 1 << type), type, ca.length, ca);
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   324
        check(f.getCount() == ca.length, "invalid count");
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   325
        char ca2[] = f.getAsChars();
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   326
        check(ba2.length == ba.length, "invalid count");
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   327
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   328
        for (int i = 0; i < ca.length; i++) {
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   329
            check(ca[i] == ca2[i], "invalid value");
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   330
            check(ca[i] == (char) f.getAsDouble(i), "invalid value");
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   331
            check(ca[i] == (char) f.getAsLong(i), "invalid value");
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   332
            check(ca[i] == (char) f.getAsInt(i), "invalid value");
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   333
        }
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   334
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   335
        type = TIFFTag.TIFF_DOUBLE;
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   336
        double da[] = {0.1, 0.2, 0.3};
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   337
        f = new TIFFField(
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   338
            new TIFFTag(NAME, NUM, 1 << type), type, da.length, da);
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   339
        check(!f.isIntegral(), "isIntegral must be false");
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   340
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   341
        double da2[] = f.getAsDoubles();
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   342
        check(f.getData() instanceof double[], "invalid data type");
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   343
        double da3[] = (double[]) f.getData();
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   344
        check((da.length == da2.length) &&
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   345
              (da.length == da2.length) &&
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   346
              (da.length == f.getCount()),
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   347
               "invalid data count");
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   348
        for (int i = 0; i < da.length; ++i) {
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   349
            check(da[i] == da2[i], "invalid data");
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   350
            check(da[i] == da3[i], "invalid data");
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   351
        }
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   352
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   353
        boolean ok = false;
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   354
        try { f.getAsShorts(); }
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   355
        catch (ClassCastException e) { ok = true; }
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   356
        check(ok, "invalid data cast");
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   357
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   358
        ok = false;
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   359
        try { f.getAsRationals(); }
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   360
        catch (ClassCastException e) { ok = true; }
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   361
        check(ok, "invalid data cast");
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   362
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   363
        ok = false;
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   364
        try { TIFFField.createArrayForType(TIFFTag.MIN_DATATYPE - 1, 1); }
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   365
        catch (IllegalArgumentException e) { ok = true; }
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   366
        check(ok, "can create array with invalid datatype");
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   367
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   368
        ok = false;
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   369
        try { TIFFField.createArrayForType(TIFFTag.MAX_DATATYPE + 1, 1); }
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   370
        catch (IllegalArgumentException e) { ok = true; }
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   371
        check(ok, "can create array with invalid datatype");
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   372
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   373
        ok = false;
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   374
        try { TIFFField.createArrayForType(TIFFTag.TIFF_FLOAT, -1); }
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   375
        catch (IllegalArgumentException e) { ok = true; }
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   376
        check(ok, "can create array with negative count");
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   377
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   378
        int n = 3;
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   379
        Object
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   380
            RA  = TIFFField.createArrayForType(TIFFTag.TIFF_RATIONAL,  n),
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   381
            SRA = TIFFField.createArrayForType(TIFFTag.TIFF_SRATIONAL, n);
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   382
        check(RA  instanceof long[][], "invalid data type");
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   383
        check(SRA instanceof  int[][], "invalid data type");
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   384
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   385
        long ra[][] = (long[][]) RA;
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   386
        int sra[][] = (int[][]) SRA;
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   387
        check((ra.length == n) && (sra.length == n), "invalid data size");
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   388
        for (int i = 0; i < n; i++) {
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   389
            check((ra[i].length == 2) && (sra[i].length == 2),
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   390
                "invalid data size");
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   391
            ra[i][0]  =  1;  ra[i][1]  = 5 + i;
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   392
            sra[i][0] = -1;  sra[i][1] = 5 + i;
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   393
        }
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   394
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   395
        type = TIFFTag.TIFF_RATIONAL;
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   396
        TIFFField f1 = new TIFFField(
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   397
            new TIFFTag(NAME, NUM, 1 << type), type, n, ra);
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   398
        type = TIFFTag.TIFF_SRATIONAL;
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   399
        TIFFField f2 = new TIFFField(
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   400
            new TIFFTag(NAME, NUM, 1 << type), type, n, sra);
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   401
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   402
        check((f1.getCount() == ra.length) && (f2.getCount() == sra.length),
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   403
            "invalid data count");
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   404
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   405
        check(f1.getAsRationals().length  == n, "invalid data count");
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   406
        check(f2.getAsSRationals().length == n, "invalid data count");
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   407
        for (int i = 0; i < n; i++) {
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   408
            long r[] = f1.getAsRational(i);
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   409
            check(r.length == 2, "invalid data format");
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   410
            check((r[0] == 1) && (r[1] == i + 5), "invalid data");
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   411
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   412
            int sr[] = f2.getAsSRational(i);
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   413
            check(sr.length == 2, "invalid data format");
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   414
            check((sr[0] == -1) && (sr[1] == i + 5), "invalid data");
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   415
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   416
            // check string representation
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   417
            String s = Long.toString(r[0]) + "/" + Long.toString(r[1]);
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   418
            check(s.equals(f1.getValueAsString(i)),
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   419
                "invalid string representation");
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   420
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   421
            s = Integer.toString(sr[0]) + "/" + Integer.toString(sr[1]);
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   422
            check(s.equals(f2.getValueAsString(i)),
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   423
                "invalid string representation");
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   424
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   425
            // see the documentation for getAsInt:
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   426
            // TIFF_SRATIONAL or TIFF_RATIONAL format are evaluated
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   427
            // by dividing the numerator into the denominator using
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   428
            // double-precision arithmetic and then casting to int
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   429
            check(f1.getAsInt(i) == (int)(r[0] / r[1]),
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   430
                "invalid result for getAsInt");
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   431
            check(f2.getAsInt(i) == (int)(r[0] / r[1]),
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   432
                "invalid result for getAsInt");
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   433
        }
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   434
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   435
        ok = false;
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   436
        try { f1.getAsRational(ra.length); }
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   437
        catch (ArrayIndexOutOfBoundsException e) { ok = true; }
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   438
        check(ok, "invalid index");
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   439
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   440
        String sa[] = {"-1.e-25", "22", "-1.23E5"};
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   441
        type = TIFFTag.TIFF_ASCII;
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   442
        f = new TIFFField(
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   443
            new TIFFTag(NAME, NUM, 1 << type), type, sa.length, sa);
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   444
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   445
        // test clone() method
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   446
        TIFFField cloned = null;
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   447
        try { cloned = f.clone(); } catch (CloneNotSupportedException e) {
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   448
            throw new RuntimeException(e);
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   449
        }
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   450
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   451
        check(f.getCount() == cloned.getCount(), "invalid cloned field count");
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   452
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   453
        check(f.getCount() == sa.length, "invalid data count");
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   454
        for (int i = 0; i < sa.length; i++) {
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   455
            check(sa[i].equals(f.getAsString(i)), "invalid data");
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   456
            // see docs: "data in TIFF_ASCII format will be parsed as by
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   457
            // the Double.parseDouble method, with the result cast to int"
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   458
            check(f.getAsInt(i) ==
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   459
                (int) Double.parseDouble(sa[i]), "invalid data");
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   460
            check(f.getAsDouble(i) == Double.parseDouble(sa[i]), "invalid data");
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   461
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   462
            check(sa[i].equals(cloned.getAsString(i)), "invalid cloned data");
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   463
        }
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   464
    }
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   465
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   466
    private void testCreateFromNode() {
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   467
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   468
        int type = TIFFTag.TIFF_LONG;
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   469
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   470
        List<TIFFTag> tags = new ArrayList<>();
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   471
        int v = 1234567;
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   472
        TIFFTag tag = new TIFFTag(NAME, NUM, 1 << type);
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   473
        tags.add(tag);
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   474
        TIFFTagSet ts = new TIFFTagSet(tags);
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   475
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   476
        boolean ok = false;
40721
69084433be85 8149562: TIFFField#createFromMetadataNode javadoc should provide information about sibling/child nodes that should be part of parameter node
bpb
parents: 37568
diff changeset
   477
        try {
69084433be85 8149562: TIFFField#createFromMetadataNode javadoc should provide information about sibling/child nodes that should be part of parameter node
bpb
parents: 37568
diff changeset
   478
            TIFFField.createFromMetadataNode(ts, null);
69084433be85 8149562: TIFFField#createFromMetadataNode javadoc should provide information about sibling/child nodes that should be part of parameter node
bpb
parents: 37568
diff changeset
   479
        } catch (IllegalArgumentException e) {
69084433be85 8149562: TIFFField#createFromMetadataNode javadoc should provide information about sibling/child nodes that should be part of parameter node
bpb
parents: 37568
diff changeset
   480
            // createFromMetadataNode() formerly threw a NullPointerException
69084433be85 8149562: TIFFField#createFromMetadataNode javadoc should provide information about sibling/child nodes that should be part of parameter node
bpb
parents: 37568
diff changeset
   481
            // if its Node parameter was null, but the specification has been
69084433be85 8149562: TIFFField#createFromMetadataNode javadoc should provide information about sibling/child nodes that should be part of parameter node
bpb
parents: 37568
diff changeset
   482
            // modified to allow only IllegalArgumentExceptions, perhaps with
69084433be85 8149562: TIFFField#createFromMetadataNode javadoc should provide information about sibling/child nodes that should be part of parameter node
bpb
parents: 37568
diff changeset
   483
            // a cause set. In the present invocation the cause would be set
69084433be85 8149562: TIFFField#createFromMetadataNode javadoc should provide information about sibling/child nodes that should be part of parameter node
bpb
parents: 37568
diff changeset
   484
            // to a NullPointerException but this is not explicitly specified
69084433be85 8149562: TIFFField#createFromMetadataNode javadoc should provide information about sibling/child nodes that should be part of parameter node
bpb
parents: 37568
diff changeset
   485
            // hence not verified here.
69084433be85 8149562: TIFFField#createFromMetadataNode javadoc should provide information about sibling/child nodes that should be part of parameter node
bpb
parents: 37568
diff changeset
   486
            ok = true;
69084433be85 8149562: TIFFField#createFromMetadataNode javadoc should provide information about sibling/child nodes that should be part of parameter node
bpb
parents: 37568
diff changeset
   487
        }
37568
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   488
        check(ok, "can create TIFFField from a null node");
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   489
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   490
        TIFFField f = new TIFFField(tag, v);
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   491
        Node node = f.getAsNativeNode();
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   492
        check(node.getNodeName().equals(f.getClass().getSimpleName()),
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   493
            "invalid node name");
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   494
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   495
        NamedNodeMap attrs = node.getAttributes();
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   496
        for (int i = 0; i < attrs.getLength(); i++) {
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   497
            String an = attrs.item(i).getNodeName().toLowerCase();
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   498
            String av = attrs.item(i).getNodeValue();
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   499
            if (an.contains("name")) {
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   500
                check(av.equals(NAME), "invalid tag name");
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   501
            } else if (an.contains("number")) {
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   502
                check(av.equals(Integer.toString(NUM)), "invalid tag number");
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   503
            }
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   504
        }
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   505
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   506
        // invalid node
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   507
        IIOMetadataNode nok = new IIOMetadataNode("NOK");
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   508
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   509
        ok = false;
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   510
        try { TIFFField.createFromMetadataNode(ts, nok); }
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   511
        catch (IllegalArgumentException e) { ok = true; }
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   512
        check(ok, CONSTRUCT + "invalid node name");
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   513
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   514
        TIFFField f2 = TIFFField.createFromMetadataNode(ts, node);
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   515
        check(f2.getType() == type, "invalid type");
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   516
        check(f2.getTagNumber() == NUM, "invalid tag number");
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   517
        check(f2.getTag().getName().equals(NAME), "invalid tag name");
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   518
        check(f2.getCount()  == 1, "invalid count");
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   519
        check(f2.getAsInt(0) == v, "invalid value");
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   520
    }
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   521
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   522
    public static void main(String[] args) {
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   523
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   524
        TIFFFieldTest test = new TIFFFieldTest();
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   525
        test.testConstructors();
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   526
        test.testCreateFromNode();
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   527
        test.testTypes();
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   528
        test.testGetAs();
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   529
    }
9e458df677e9 8152183: [TEST] add test for TIFFField
avstepan
parents:
diff changeset
   530
}