vmtest/src/test/java/org/apidesign/bck2brwsr/tck/CompareStringsTest.java
author Jaroslav Tulach <jaroslav.tulach@apidesign.org>
Sat, 26 Jan 2013 08:47:05 +0100
changeset 592 5e13b1ac2886
parent 456 f2f769bafeef
child 608 6e9328ca3462
permissions -rw-r--r--
In order to support fields of the same name in subclasses we are now prefixing them with name of the class that defines them. To provide convenient way to access them from generated bytecode and also directly from JavaScript, there is a getter/setter function for each field. It starts with _ followed by the field name. If called with a parameter, it sets the field, with a parameter it just returns it.
jaroslav@296
     1
/**
jaroslav@296
     2
 * Back 2 Browser Bytecode Translator
jaroslav@296
     3
 * Copyright (C) 2012 Jaroslav Tulach <jaroslav.tulach@apidesign.org>
jaroslav@296
     4
 *
jaroslav@296
     5
 * This program is free software: you can redistribute it and/or modify
jaroslav@296
     6
 * it under the terms of the GNU General Public License as published by
jaroslav@296
     7
 * the Free Software Foundation, version 2 of the License.
jaroslav@296
     8
 *
jaroslav@296
     9
 * This program is distributed in the hope that it will be useful,
jaroslav@296
    10
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
jaroslav@296
    11
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
jaroslav@296
    12
 * GNU General Public License for more details.
jaroslav@296
    13
 *
jaroslav@296
    14
 * You should have received a copy of the GNU General Public License
jaroslav@296
    15
 * along with this program. Look for COPYING file in the top folder.
jaroslav@296
    16
 * If not, see http://opensource.org/licenses/GPL-2.0.
jaroslav@296
    17
 */
jaroslav@346
    18
package org.apidesign.bck2brwsr.tck;
jaroslav@296
    19
jaroslav@339
    20
import java.net.MalformedURLException;
jaroslav@339
    21
import java.net.URL;
jaroslav@346
    22
import org.apidesign.bck2brwsr.vmtest.Compare;
jaroslav@346
    23
import org.apidesign.bck2brwsr.vmtest.VMTest;
jaroslav@296
    24
import org.testng.annotations.Factory;
jaroslav@296
    25
jaroslav@296
    26
/**
jaroslav@296
    27
 *
jaroslav@296
    28
 * @author Jaroslav Tulach <jtulach@netbeans.org>
jaroslav@296
    29
 */
jaroslav@296
    30
public class CompareStringsTest {
jaroslav@430
    31
    @Compare public String firstChar() {
jaroslav@430
    32
        return "" + ("Hello".toCharArray()[0]);
jaroslav@430
    33
    }
jaroslav@430
    34
    
jaroslav@434
    35
    @Compare public String classCast() {
jaroslav@434
    36
        Object o = firstChar();
jaroslav@434
    37
        return String.class.cast(o);
jaroslav@434
    38
    }
jaroslav@434
    39
jaroslav@434
    40
    @Compare public String classCastThrown() {
jaroslav@434
    41
        Object o = null;
jaroslav@434
    42
        return String.class.cast(o);
jaroslav@434
    43
    }
jaroslav@434
    44
    
jaroslav@501
    45
    @Compare public boolean equalToNull() {
jaroslav@501
    46
        return "Ahoj".equals(null);
jaroslav@501
    47
    }
jaroslav@501
    48
    
jaroslav@339
    49
    @Compare public static Object compareURLs() throws MalformedURLException {
jaroslav@339
    50
        return new URL("http://apidesign.org:8080/wiki/").toExternalForm().toString();
jaroslav@339
    51
    }
jaroslav@339
    52
    
jaroslav@296
    53
    @Compare public String deleteLastTwoCharacters() {
jaroslav@296
    54
        StringBuilder sb = new StringBuilder();
jaroslav@296
    55
        sb.append("453.0");
jaroslav@296
    56
        if (sb.toString().endsWith(".0")) {
jaroslav@296
    57
            final int l = sb.length();
jaroslav@296
    58
            sb.delete(l - 2, l);
jaroslav@296
    59
        }
jaroslav@296
    60
        return sb.toString().toString();
jaroslav@296
    61
    }
jaroslav@296
    62
    
jaroslav@321
    63
    @Compare public String nameOfStringClass() throws Exception {
jaroslav@321
    64
        return Class.forName("java.lang.String").getName();
jaroslav@321
    65
    }
jaroslav@322
    66
    @Compare public String nameOfArrayClass() throws Exception {
jaroslav@346
    67
        return Class.forName("org.apidesign.bck2brwsr.tck.CompareHashTest").getName();
jaroslav@322
    68
    }
jaroslav@326
    69
    
jaroslav@326
    70
    @Compare public String lowerHello() {
jaroslav@326
    71
        return "HeLlO".toLowerCase();
jaroslav@326
    72
    }
jaroslav@326
    73
    
jaroslav@326
    74
    @Compare public String lowerA() {
jaroslav@326
    75
        return String.valueOf(Character.toLowerCase('A')).toString();
jaroslav@326
    76
    }
jaroslav@326
    77
    @Compare public String upperHello() {
jaroslav@326
    78
        return "hello".toUpperCase();
jaroslav@326
    79
    }
jaroslav@326
    80
    
jaroslav@326
    81
    @Compare public String upperA() {
jaroslav@326
    82
        return String.valueOf(Character.toUpperCase('a')).toString();
jaroslav@326
    83
    }
jaroslav@326
    84
    
jaroslav@326
    85
    @Compare public boolean matchRegExp() throws Exception {
jaroslav@326
    86
        return "58038503".matches("\\d*");
jaroslav@326
    87
    }
jaroslav@326
    88
jaroslav@326
    89
    @Compare public boolean doesNotMatchRegExp() throws Exception {
jaroslav@326
    90
        return "58038503GH".matches("\\d*");
jaroslav@326
    91
    }
jaroslav@326
    92
jaroslav@326
    93
    @Compare public boolean doesNotMatchRegExpFully() throws Exception {
jaroslav@326
    94
        return "Hello".matches("Hell");
jaroslav@326
    95
    }
jaroslav@326
    96
    
jaroslav@447
    97
    @Compare public String emptyCharArray() {
jaroslav@447
    98
        char[] arr = new char[10];
jaroslav@447
    99
        return new String(arr);
jaroslav@447
   100
    }
jaroslav@447
   101
    
jaroslav@326
   102
    @Compare public String variousCharacterTests() throws Exception {
jaroslav@326
   103
        StringBuilder sb = new StringBuilder();
jaroslav@326
   104
        
jaroslav@326
   105
        sb.append(Character.isUpperCase('a'));
jaroslav@326
   106
        sb.append(Character.isUpperCase('A'));
jaroslav@326
   107
        sb.append(Character.isLowerCase('a'));
jaroslav@326
   108
        sb.append(Character.isLowerCase('A'));
jaroslav@326
   109
        
jaroslav@326
   110
        sb.append(Character.isLetter('A'));
jaroslav@326
   111
        sb.append(Character.isLetterOrDigit('9'));
jaroslav@326
   112
        sb.append(Character.isLetterOrDigit('A'));
jaroslav@326
   113
        sb.append(Character.isLetter('0'));
jaroslav@326
   114
        
jaroslav@326
   115
        return sb.toString().toString();
jaroslav@326
   116
    }
jaroslav@322
   117
        
jaroslav@328
   118
    @Compare
jaroslav@328
   119
    public String nullFieldInitialized() {
jaroslav@328
   120
        NullField nf = new NullField();
jaroslav@328
   121
        return ("" + nf.name).toString();
jaroslav@328
   122
    }
jaroslav@328
   123
jaroslav@296
   124
    @Factory
jaroslav@296
   125
    public static Object[] create() {
jaroslav@346
   126
        return VMTest.create(CompareStringsTest.class);
jaroslav@296
   127
    }
jaroslav@328
   128
jaroslav@328
   129
    private static final class NullField {
jaroslav@328
   130
jaroslav@328
   131
        String name;
jaroslav@328
   132
    }
jaroslav@296
   133
}