rt/emul/compacttest/src/test/java/org/apidesign/bck2brwsr/tck/ReflectionClassValueTest.java
author Jaroslav Tulach <jaroslav.tulach@apidesign.org>
Tue, 17 Jan 2017 06:14:39 +0100
changeset 1982 cee8ecc45816
parent 1902 rt/emul/compacttest/src/test/java/org/apidesign/bck2brwsr/tck/ReflectionTest.java@c3dee54ecc15
child 1985 cd1cc103a03c
permissions -rw-r--r--
Compare tests for ClassValue
jaroslav@355
     1
/**
jaroslav@355
     2
 * Back 2 Browser Bytecode Translator
jaroslav@1787
     3
 * Copyright (C) 2012-2015 Jaroslav Tulach <jaroslav.tulach@apidesign.org>
jaroslav@355
     4
 *
jaroslav@355
     5
 * This program is free software: you can redistribute it and/or modify
jaroslav@355
     6
 * it under the terms of the GNU General Public License as published by
jaroslav@355
     7
 * the Free Software Foundation, version 2 of the License.
jaroslav@355
     8
 *
jaroslav@355
     9
 * This program is distributed in the hope that it will be useful,
jaroslav@355
    10
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
jaroslav@355
    11
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
jaroslav@355
    12
 * GNU General Public License for more details.
jaroslav@355
    13
 *
jaroslav@355
    14
 * You should have received a copy of the GNU General Public License
jaroslav@355
    15
 * along with this program. Look for COPYING file in the top folder.
jaroslav@355
    16
 * If not, see http://opensource.org/licenses/GPL-2.0.
jaroslav@355
    17
 */
jaroslav@355
    18
package org.apidesign.bck2brwsr.tck;
jaroslav@355
    19
jaroslav@355
    20
import org.apidesign.bck2brwsr.vmtest.Compare;
jaroslav@355
    21
import org.apidesign.bck2brwsr.vmtest.VMTest;
jaroslav@355
    22
import org.testng.annotations.Factory;
jaroslav@355
    23
jaroslav@355
    24
/**
jaroslav@355
    25
 *
jaroslav@355
    26
 * @author Jaroslav Tulach <jtulach@netbeans.org>
jaroslav@355
    27
 */
jaroslav@1982
    28
public class ReflectionClassValueTest {
jaroslav@1982
    29
    private static final class StringValue extends ClassValue<String> {
jaroslav@1982
    30
        private final boolean upper;
jaroslav@1982
    31
jaroslav@1982
    32
        public StringValue(boolean upper) {
jaroslav@1982
    33
            this.upper = upper;
jaroslav@1982
    34
        }
jaroslav@1982
    35
jaroslav@1982
    36
        @Override
jaroslav@1982
    37
        protected String computeValue(Class<?> type) {
jaroslav@1982
    38
            final String str = new String(type.toString());
jaroslav@1982
    39
            return upper ? str.toUpperCase() : str.toLowerCase();
jaroslav@1982
    40
        }
jaroslav@1982
    41
    }
jaroslav@1982
    42
    private static final StringValue UPPER = new StringValue(true);
jaroslav@1982
    43
    private static final StringValue LOWER = new StringValue(false);
jaroslav@1982
    44
jaroslav@1982
    45
    @Compare public String upperRunnable() {
jaroslav@1982
    46
        return UPPER.get(Runnable.class);
jaroslav@1982
    47
    }
jaroslav@1982
    48
jaroslav@1982
    49
    @Compare public String lowerRunnable() {
jaroslav@1982
    50
        return LOWER.get(Runnable.class);
jaroslav@412
    51
    }
jaroslav@412
    52
    
jaroslav@1982
    53
    @Compare public boolean valueIsCached() {
jaroslav@1982
    54
        String one = LOWER.get(Runnable.class);
jaroslav@1982
    55
        String two = LOWER.get(Runnable.class);
jaroslav@1982
    56
        return one == two;
jaroslav@355
    57
    }
jaroslav@355
    58
jaroslav@1982
    59
    @Compare public boolean valueCanBeCleared() {
jaroslav@1982
    60
        String one = LOWER.get(Runnable.class);
jaroslav@1982
    61
        LOWER.remove(Runnable.class);
jaroslav@1982
    62
        String two = LOWER.get(Runnable.class);
jaroslav@1982
    63
        return one != two;
jaroslav@413
    64
    }
jaroslav@413
    65
jaroslav@1982
    66
    @Compare public String upperObject() {
jaroslav@1982
    67
        return UPPER.get(Object.class);
jaroslav@649
    68
    }
jaroslav@649
    69
jaroslav@1982
    70
    @Compare public String lowerObject() {
jaroslav@1982
    71
        return LOWER.get(Object.class);
jaroslav@886
    72
    }
jaroslav@886
    73
jaroslav@1982
    74
    @Compare public String upperLowerString() {
jaroslav@1982
    75
        return UPPER.get(String.class) + LOWER.get(String.class);
jaroslav@886
    76
    }
jaroslav@886
    77
jaroslav@1982
    78
    @Compare public String lowerUpperSeq() {
jaroslav@1982
    79
        return LOWER.get(CharSequence.class) + UPPER.get(CharSequence.class);
jaroslav@886
    80
    }
jaroslav@886
    81
jaroslav@355
    82
    @Factory
jaroslav@355
    83
    public static Object[] create() {
jaroslav@1982
    84
        return VMTest.create(ReflectionClassValueTest.class);
jaroslav@1838
    85
    }
jaroslav@355
    86
}