rt/emul/compacttest/src/test/java/org/apidesign/bck2brwsr/vmtest/impl/HtmlAnnotationsTest.java
Separating compact profile tests into own project, so launcher.http can depend on compact profile JAR
2 * Back 2 Browser Bytecode Translator
3 * Copyright (C) 2012 Jaroslav Tulach <jaroslav.tulach@apidesign.org>
5 * This program is free software: you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation, version 2 of the License.
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
14 * You should have received a copy of the GNU General Public License
15 * along with this program. Look for COPYING file in the top folder.
16 * If not, see http://opensource.org/licenses/GPL-2.0.
18 package org.apidesign.bck2brwsr.vmtest.impl;
20 import org.apidesign.bck2brwsr.core.JavaScriptBody;
21 import org.apidesign.bck2brwsr.vmtest.BrwsrTest;
22 import org.apidesign.bck2brwsr.vmtest.VMTest;
23 import org.testng.annotations.Factory;
25 /** Verify cooperation with net.java.html.js annotations.
27 * @author Jaroslav Tulach <jtulach@netbeans.org>
29 public class HtmlAnnotationsTest {
30 static int firstCheck;
32 private void assertMulNotDefinedForTheFirstTime() {
33 if (firstCheck++ == 0) {
34 Object mul = windowMul();
35 assert mul == null : "htmlannotations.js should not be processed before first call to HtmlAnnotations class";
39 @BrwsrTest public void fourtyTwo() throws Exception {
40 assertMulNotDefinedForTheFirstTime();
41 assertEquals(HtmlAnnotations.fourtyTwo(), 42);
44 @BrwsrTest public void externalMul() throws Exception {
45 assertMulNotDefinedForTheFirstTime();
46 assertEquals(HtmlAnnotations.useExternalMul(7, 6), 42);
49 @BrwsrTest public void callRunnableFromJS() throws Exception {
50 assertMulNotDefinedForTheFirstTime();
51 assertEquals(HtmlAnnotations.callback(), 1);
54 @BrwsrTest public void callStaticMethodFromJS() throws Exception {
55 assertMulNotDefinedForTheFirstTime();
56 assertEquals(HtmlAnnotations.staticCallback(), 1);
59 @BrwsrTest public void callbackWithFourParamsAndReturnType() throws Exception {
60 assertMulNotDefinedForTheFirstTime();
61 Object instance = HtmlAnnotations.create();
62 assertNotNull(instance, "Instance created");
63 assertEquals(HtmlAnnotations.first(instance, 42, 31), 42);
66 @BrwsrTest public void callbackWithObjectParamsAndReturnType() throws Exception {
67 assertMulNotDefinedForTheFirstTime();
68 Object instance = HtmlAnnotations.create();
69 assertNotNull(instance, "Instance created");
70 assertEquals(HtmlAnnotations.onError(instance, 42.0), 42.0);
73 private static void assertEquals(double real, double exp) {
74 if (real - exp < 0.01) {
77 assert false : "Expecting " + exp + " but was " + real;
80 private static void assertNotNull(Object obj, String msg) {
81 assert obj != null : msg;
84 @JavaScriptBody(args = {}, body = "return window.mul ? window.mul : null;")
85 private static native Object windowMul();
87 @Factory public static Object[] create() {
88 return VMTest.create(HtmlAnnotationsTest.class);