vmtest/src/test/java/org/apidesign/bck2brwsr/tck/ReflectionArrayTest.java
author Jaroslav Tulach <jaroslav.tulach@apidesign.org>
Fri, 18 Jan 2013 21:51:06 +0100
branchArrayReflect
changeset 485 d962d1330e54
parent 484 7ca6bd52b668
permissions -rw-r--r--
Just autoboxing on Arrays remains
jaroslav@477
     1
/**
jaroslav@477
     2
 * Back 2 Browser Bytecode Translator
jaroslav@477
     3
 * Copyright (C) 2012 Jaroslav Tulach <jaroslav.tulach@apidesign.org>
jaroslav@477
     4
 *
jaroslav@477
     5
 * This program is free software: you can redistribute it and/or modify
jaroslav@477
     6
 * it under the terms of the GNU General Public License as published by
jaroslav@477
     7
 * the Free Software Foundation, version 2 of the License.
jaroslav@477
     8
 *
jaroslav@477
     9
 * This program is distributed in the hope that it will be useful,
jaroslav@477
    10
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
jaroslav@477
    11
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
jaroslav@477
    12
 * GNU General Public License for more details.
jaroslav@477
    13
 *
jaroslav@477
    14
 * You should have received a copy of the GNU General Public License
jaroslav@477
    15
 * along with this program. Look for COPYING file in the top folder.
jaroslav@477
    16
 * If not, see http://opensource.org/licenses/GPL-2.0.
jaroslav@477
    17
 */
jaroslav@477
    18
package org.apidesign.bck2brwsr.tck;
jaroslav@477
    19
jaroslav@477
    20
import java.lang.reflect.Array;
jaroslav@477
    21
import org.apidesign.bck2brwsr.vmtest.Compare;
jaroslav@477
    22
import org.apidesign.bck2brwsr.vmtest.VMTest;
jaroslav@477
    23
import org.testng.annotations.Factory;
jaroslav@477
    24
jaroslav@477
    25
/**
jaroslav@477
    26
 *
jaroslav@477
    27
 * @author Jaroslav Tulach <jtulach@netbeans.org>
jaroslav@477
    28
 */
jaroslav@477
    29
public class ReflectionArrayTest {
jaroslav@477
    30
    @Compare public int lengthOfStringArray() {
jaroslav@477
    31
        String[] arr = (String[]) Array.newInstance(String.class, 10);
jaroslav@477
    32
        return arr.length;
jaroslav@477
    33
    }
jaroslav@482
    34
    
jaroslav@482
    35
    @Compare public int reflectiveLengthOfStringArray() {
jaroslav@482
    36
        Object arr = Array.newInstance(String.class, 10);
jaroslav@482
    37
        return Array.getLength(arr);
jaroslav@482
    38
    }
jaroslav@482
    39
jaroslav@482
    40
    @Compare public int reflectiveLengthOneNonArray() {
jaroslav@482
    41
        Object arr = "non-array";
jaroslav@482
    42
        return Array.getLength(arr);
jaroslav@482
    43
    }
jaroslav@477
    44
jaroslav@477
    45
    @Compare public String compTypeOfStringArray() {
jaroslav@477
    46
        String[] arr = (String[]) Array.newInstance(String.class, 10);
jaroslav@477
    47
        return arr.getClass().getComponentType().getName();
jaroslav@477
    48
    }
jaroslav@477
    49
jaroslav@477
    50
    @Compare public Object negativeArrayExcp() {
jaroslav@477
    51
        return Array.newInstance(String.class, -5);
jaroslav@477
    52
    }
jaroslav@477
    53
    
jaroslav@477
    54
    @Compare public int lengthOfIntArray() {
jaroslav@477
    55
        int[] arr = (int[]) Array.newInstance(Integer.TYPE, 10);
jaroslav@477
    56
        return arr.length;
jaroslav@477
    57
    }
jaroslav@477
    58
jaroslav@482
    59
    @Compare public int reflectiveLengthOfIntArray() {
jaroslav@482
    60
        Object arr = Array.newInstance(Integer.TYPE, 10);
jaroslav@482
    61
        return Array.getLength(arr);
jaroslav@482
    62
    }
jaroslav@482
    63
jaroslav@477
    64
    @Compare public String compTypeOfIntArray() {
jaroslav@477
    65
        int[] arr = (int[]) Array.newInstance(int.class, 10);
jaroslav@477
    66
        return arr.getClass().getComponentType().getName();
jaroslav@477
    67
    }
jaroslav@477
    68
jaroslav@477
    69
    @Compare public Object intNegativeArrayExcp() {
jaroslav@477
    70
        return Array.newInstance(int.class, -5);
jaroslav@477
    71
    }
jaroslav@482
    72
jaroslav@482
    73
    @Compare public Integer verifyAutobox() {
jaroslav@482
    74
        int[] arr = (int[]) Array.newInstance(int.class, 5);
jaroslav@482
    75
        return (Integer) Array.get(arr, 0);
jaroslav@482
    76
    }
jaroslav@485
    77
    @Compare public String verifyObjectArray() {
jaroslav@485
    78
        String[] arr = (String[]) Array.newInstance(String.class, 5);
jaroslav@485
    79
        Array.set(arr, 0, "Hello");
jaroslav@485
    80
        return (String) Array.get(arr, 0);
jaroslav@485
    81
    }
jaroslav@482
    82
    @Compare public int verifyInt() {
jaroslav@482
    83
        int[] arr = (int[]) Array.newInstance(int.class, 5);
jaroslav@482
    84
        return Array.getInt(arr, 0);
jaroslav@482
    85
    }
jaroslav@482
    86
    @Compare public long verifyConvertToLong() {
jaroslav@482
    87
        int[] arr = (int[]) Array.newInstance(int.class, 5);
jaroslav@482
    88
        return Array.getLong(arr, 0);
jaroslav@482
    89
    }
jaroslav@482
    90
jaroslav@482
    91
    @Compare public Object verifySetIntToObject() {
jaroslav@485
    92
        try {
jaroslav@485
    93
            Object[] arr = (Object[]) Array.newInstance(Object.class, 5);
jaroslav@485
    94
            Array.setInt(arr, 0, 10);
jaroslav@485
    95
            return Array.get(arr, 0);
jaroslav@485
    96
        } catch (Exception exception) {
jaroslav@485
    97
            return exception.getClass().getName();
jaroslav@485
    98
        }
jaroslav@482
    99
    }
jaroslav@482
   100
    @Compare public long verifySetShort() {
jaroslav@482
   101
        int[] arr = (int[]) Array.newInstance(int.class, 5);
jaroslav@482
   102
        Array.setShort(arr, 0, (short)10);
jaroslav@482
   103
        return Array.getLong(arr, 0);
jaroslav@482
   104
    }
jaroslav@482
   105
    @Compare public long verifyCantSetLong() {
jaroslav@482
   106
        int[] arr = (int[]) Array.newInstance(int.class, 5);
jaroslav@482
   107
        Array.setLong(arr, 0, 10);
jaroslav@482
   108
        return Array.getLong(arr, 0);
jaroslav@482
   109
    }
jaroslav@484
   110
    @Compare public float verifyLongToFloat() {
jaroslav@484
   111
        Object arr = Array.newInstance(float.class, 5);
jaroslav@484
   112
        Array.setLong(arr, 0, 10);
jaroslav@484
   113
        return Array.getFloat(arr, 0);
jaroslav@484
   114
    }
jaroslav@482
   115
jaroslav@482
   116
    @Compare public double verifyConvertToDouble() {
jaroslav@482
   117
        int[] arr = (int[]) Array.newInstance(int.class, 5);
jaroslav@482
   118
        return Array.getDouble(arr, 0);
jaroslav@482
   119
    }
jaroslav@477
   120
    
jaroslav@480
   121
    @Compare public int multiIntArray() {
jaroslav@480
   122
        int[][][] arr = (int[][][]) Array.newInstance(int.class, 3, 3, 3);
jaroslav@480
   123
        return arr[0][1][2] + 5 + arr[2][2][0];
jaroslav@480
   124
    }
jaroslav@480
   125
jaroslav@480
   126
    @Compare public String multiIntArrayCompType() {
jaroslav@480
   127
        return Array.newInstance(int.class, 3, 3, 3).getClass().getName();
jaroslav@480
   128
    }
jaroslav@480
   129
    
jaroslav@477
   130
    
jaroslav@477
   131
    @Factory
jaroslav@477
   132
    public static Object[] create() {
jaroslav@477
   133
        return VMTest.create(ReflectionArrayTest.class);
jaroslav@477
   134
    }
jaroslav@477
   135
}