1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1.2 +++ b/rt/emul/compacttest/src/test/java/org/apidesign/bck2brwsr/tck/BooleanTest.java Fri Jun 10 05:52:44 2016 +0200
1.3 @@ -0,0 +1,47 @@
1.4 +/**
1.5 + * Back 2 Browser Bytecode Translator
1.6 + * Copyright (C) 2012-2015 Jaroslav Tulach <jaroslav.tulach@apidesign.org>
1.7 + *
1.8 + * This program is free software: you can redistribute it and/or modify
1.9 + * it under the terms of the GNU General Public License as published by
1.10 + * the Free Software Foundation, version 2 of the License.
1.11 + *
1.12 + * This program is distributed in the hope that it will be useful,
1.13 + * but WITHOUT ANY WARRANTY; without even the implied warranty of
1.14 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1.15 + * GNU General Public License for more details.
1.16 + *
1.17 + * You should have received a copy of the GNU General Public License
1.18 + * along with this program. Look for COPYING file in the top folder.
1.19 + * If not, see http://opensource.org/licenses/GPL-2.0.
1.20 + */
1.21 +package org.apidesign.bck2brwsr.tck;
1.22 +
1.23 +import net.java.html.js.JavaScriptBody;
1.24 +import org.apidesign.bck2brwsr.vmtest.BrwsrTest;
1.25 +import org.apidesign.bck2brwsr.vmtest.VMTest;
1.26 +import org.testng.annotations.Factory;
1.27 +
1.28 +public class BooleanTest {
1.29 + @JavaScriptBody(args = { }, body = "return true;")
1.30 + private static native Boolean getTrue();
1.31 +
1.32 + @JavaScriptBody(args = { }, body = "return false;")
1.33 + private static native Boolean getFalse();
1.34 +
1.35 + @BrwsrTest public void primitiveTrue() {
1.36 + boolean t = getTrue();
1.37 + assert t : "Yes, it is true";
1.38 + }
1.39 +
1.40 + @BrwsrTest public void primitiveFalse() {
1.41 + boolean t = getFalse();
1.42 + assert !t : "Yes, it is false";
1.43 + }
1.44 +
1.45 + @Factory
1.46 + public static Object[] create() {
1.47 + return VMTest.create(BooleanTest.class);
1.48 + }
1.49 +
1.50 +}
2.1 --- a/rt/emul/mini/src/main/resources/org/apidesign/vm4brwsr/emul/lang/java_lang_String.js Wed Jun 08 07:15:54 2016 +0200
2.2 +++ b/rt/emul/mini/src/main/resources/org/apidesign/vm4brwsr/emul/lang/java_lang_String.js Fri Jun 10 05:52:44 2016 +0200
2.3 @@ -1,6 +1,7 @@
2.4 // initialize methods on arrays and String constants
2.5 vm.java_lang_reflect_Array(false);
2.6 vm.java_lang_String(false);
2.7 +vm.java_lang_Boolean(false);
2.8
2.9 Object.defineProperty(Array, "at", { configurable: true, writable: true, value : function(arr, indx, value) {
2.10 var prev = arr[indx];
3.1 --- a/rt/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java Wed Jun 08 07:15:54 2016 +0200
3.2 +++ b/rt/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java Fri Jun 10 05:52:44 2016 +0200
3.3 @@ -1491,12 +1491,16 @@
3.4 int indx = readUShortArg(byteCodes, i);
3.5 String[] fi = jc.getFieldInfoName(indx);
3.6 final int type = VarType.fromFieldType(fi[2].charAt(0));
3.7 - String ac = accessClassFalse(mangleClassName(fi[0]));
3.8 - FieldData field = findField(fi);
3.9 - String af = accessField(ac, field, fi);
3.10 - smapper.assign(this, type, af + "()");
3.11 + if (DirectlLibraries.isScriptLibrary(fi[0]) && fi[0].endsWith("/Exports")) {
3.12 + smapper.assign(this, type, fi[1]);
3.13 + } else {
3.14 + String ac = accessClassFalse(mangleClassName(fi[0]));
3.15 + FieldData field = findField(fi);
3.16 + String af = accessField(ac, field, fi);
3.17 + smapper.assign(this, type, af + "()");
3.18 + addReference(fi[0]);
3.19 + }
3.20 i += 2;
3.21 - addReference(fi[0]);
3.22 break;
3.23 }
3.24 case opc_putstatic: {
4.1 --- a/rt/vm/src/test/java/org/apidesign/vm4brwsr/LibUse.java Wed Jun 08 07:15:54 2016 +0200
4.2 +++ b/rt/vm/src/test/java/org/apidesign/vm4brwsr/LibUse.java Fri Jun 10 05:52:44 2016 +0200
4.3 @@ -17,7 +17,9 @@
4.4 */
4.5 package org.apidesign.vm4brwsr;
4.6
4.7 +import static net.java.html.lib.Exports.NaN;
4.8 import static net.java.html.lib.Exports.eval;
4.9 +import static net.java.html.lib.Exports.isNaN;
4.10 import static net.java.html.lib.Exports.parseInt;
4.11 import net.java.html.lib.Objs;
4.12
4.13 @@ -50,4 +52,9 @@
4.14 return parseInt(str, radix);
4.15 }
4.16
4.17 + public boolean checkNaN() throws Exception {
4.18 + double nan = NaN;
4.19 + return isNaN(nan);
4.20 + }
4.21 +
4.22 }
5.1 --- a/rt/vm/src/test/java/org/apidesign/vm4brwsr/LibUseTest.java Wed Jun 08 07:15:54 2016 +0200
5.2 +++ b/rt/vm/src/test/java/org/apidesign/vm4brwsr/LibUseTest.java Fri Jun 10 05:52:44 2016 +0200
5.3 @@ -73,4 +73,13 @@
5.4 15, "F", 16
5.5 );
5.6 }
5.7 +
5.8 + @Test
5.9 + public void verifyNaN() throws Exception {
5.10 + code.assertExec(
5.11 + "Check NaN", LibUse.class,
5.12 + "checkNaN__Z",
5.13 + true
5.14 + );
5.15 + }
5.16 }