# HG changeset patch # User Jaroslav Tulach # Date 1425059706 -3600 # Node ID 7601b9d64be60c6f0ff4de01bb16e2176638a7a5 # Parent 18b3a9a85716fcfe01a6bcd87f2082a9ceae7922 Merging tests execution into single browser window diff -r 18b3a9a85716 -r 7601b9d64be6 ko/bck2brwsr/src/test/java/org/apidesign/bck2brwsr/ko2brwsr/Bck2BrwsrJavaScriptBodyTest.java --- a/ko/bck2brwsr/src/test/java/org/apidesign/bck2brwsr/ko2brwsr/Bck2BrwsrJavaScriptBodyTest.java Fri Feb 27 18:11:54 2015 +0100 +++ b/ko/bck2brwsr/src/test/java/org/apidesign/bck2brwsr/ko2brwsr/Bck2BrwsrJavaScriptBodyTest.java Fri Feb 27 18:55:06 2015 +0100 @@ -27,14 +27,22 @@ * @author Jaroslav Tulach */ public class Bck2BrwsrJavaScriptBodyTest extends JavaScriptTCK { - @Factory public static Object[] tests() { + @Factory public static Object[] create() { + return VMTest.newTests(). + withClasses(tests()). + withClasses(Bck2BrwsrKnockoutImpl.createClasses()). + withLaunchers("bck2brwsr"). + withTestAnnotation(KOTest.class). + build(); + } + + static Class[] tests() { final Class[] arr = testClasses(); for (int i = 0; i < arr.length; i++) { if (arr[i].getSimpleName().startsWith("GC")) { arr[i] = Object.class; } } - return VMTest.newTests().withClasses(arr) - .withTestAnnotation(KOTest.class).build(); + return arr; } } diff -r 18b3a9a85716 -r 7601b9d64be6 ko/bck2brwsr/src/test/java/org/apidesign/bck2brwsr/ko2brwsr/Bck2BrwsrKnockoutImpl.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ko/bck2brwsr/src/test/java/org/apidesign/bck2brwsr/ko2brwsr/Bck2BrwsrKnockoutImpl.java Fri Feb 27 18:55:06 2015 +0100 @@ -0,0 +1,121 @@ +/** + * Back 2 Browser Bytecode Translator + * Copyright (C) 2012-2015 Jaroslav Tulach + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 2 of the License. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. Look for COPYING file in the top folder. + * If not, see http://opensource.org/licenses/GPL-2.0. + */ +package org.apidesign.bck2brwsr.ko2brwsr; + +import java.io.IOException; +import java.net.URI; +import java.net.URISyntaxException; +import java.net.URL; +import java.util.Map; +import net.java.html.BrwsrCtx; +import org.apidesign.bck2brwsr.core.JavaScriptBody; +import org.netbeans.html.context.spi.Contexts; +import org.netbeans.html.json.spi.Technology; +import org.netbeans.html.json.spi.Transfer; +import org.netbeans.html.json.spi.WSTransfer; +import org.netbeans.html.json.tck.KnockoutTCK; +import org.netbeans.html.ko4j.KO4J; +import org.openide.util.lookup.ServiceProvider; + +/** + * + * @author Jaroslav Tulach + */ +@ServiceProvider(service = KnockoutTCK.class) +public final class Bck2BrwsrKnockoutImpl extends KnockoutTCK { + static Class[] createClasses() { + final Class[] arr = testClasses(); + for (int i = 0; i < arr.length; i++) { + if (arr[i].getSimpleName().startsWith("GC")) { + arr[i] = Object.class; + } + } + return arr; + } + + @Override + public BrwsrCtx createContext() { + KO4J ko = new KO4J(null); + return Contexts.newBuilder(). + register(Transfer.class, ko.transfer(), 9). + register(WSTransfer.class, ko.websockets(), 9). + register(Technology.class, ko.knockout(), 9).build(); + } + + + + @Override + public Object createJSON(Map values) { + Object json = createJSON(); + + for (Map.Entry entry : values.entrySet()) { + putValue(json, entry.getKey(), entry.getValue()); + } + return json; + } + + @JavaScriptBody(args = {}, body = "return new Object();") + private static native Object createJSON(); + + @JavaScriptBody(args = { "json", "key", "value" }, body = "json[key] = value;") + private static native void putValue(Object json, String key, Object value); + + @Override + public Object executeScript(String script, Object[] arguments) { + return execScript(script, arguments); + } + + @JavaScriptBody(args = { "s", "args" }, body = + "var f = new Function(s); return f.apply(null, args);" + ) + private static native Object execScript(String s, Object[] arguments); + + @JavaScriptBody(args = { }, body = + "var h;" + + "if (!!window && !!window.location && !!window.location.href)\n" + + " h = window.location.href;\n" + + "else " + + " h = null;" + + "return h;\n" + ) + private static native String findBaseURL(); + + @Override + public URI prepareURL(String content, String mimeType, String[] parameters) { + try { + final URL baseURL = new URL(findBaseURL()); + StringBuilder sb = new StringBuilder(); + sb.append("/dynamic?mimeType=").append(mimeType); + for (int i = 0; i < parameters.length; i++) { + sb.append("¶m" + i).append("=").append(parameters[i]); + } + String mangle = content.replace("\n", "%0a") + .replace("\"", "\\\"").replace(" ", "%20"); + sb.append("&content=").append(mangle); + + URL query = new URL(baseURL, sb.toString()); + String uri = (String) query.getContent(new Class[] { String.class }); + URI connectTo = new URI(uri.trim()); + return connectTo; + } catch (IOException ex) { + throw new IllegalStateException(ex); + } catch (URISyntaxException ex) { + throw new IllegalStateException(ex); + } + } +} diff -r 18b3a9a85716 -r 7601b9d64be6 ko/bck2brwsr/src/test/java/org/apidesign/bck2brwsr/ko2brwsr/Bck2BrwsrKnockoutTest.java --- a/ko/bck2brwsr/src/test/java/org/apidesign/bck2brwsr/ko2brwsr/Bck2BrwsrKnockoutTest.java Fri Feb 27 18:11:54 2015 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,128 +0,0 @@ -/** - * Back 2 Browser Bytecode Translator - * Copyright (C) 2012-2015 Jaroslav Tulach - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, version 2 of the License. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. Look for COPYING file in the top folder. - * If not, see http://opensource.org/licenses/GPL-2.0. - */ -package org.apidesign.bck2brwsr.ko2brwsr; - -import java.io.IOException; -import java.net.URI; -import java.net.URISyntaxException; -import java.net.URL; -import java.util.Map; -import net.java.html.BrwsrCtx; -import org.apidesign.bck2brwsr.core.JavaScriptBody; -import org.apidesign.bck2brwsr.vmtest.VMTest; -import org.netbeans.html.context.spi.Contexts; -import org.netbeans.html.json.spi.Technology; -import org.netbeans.html.json.spi.Transfer; -import org.netbeans.html.json.spi.WSTransfer; -import org.netbeans.html.json.tck.KOTest; -import org.netbeans.html.json.tck.KnockoutTCK; -import org.netbeans.html.ko4j.KO4J; -import org.openide.util.lookup.ServiceProvider; -import org.testng.annotations.Factory; - -/** - * - * @author Jaroslav Tulach - */ -@ServiceProvider(service = KnockoutTCK.class) -public final class Bck2BrwsrKnockoutTest extends KnockoutTCK { - @Factory public static Object[] create() { - final Class[] arr = testClasses(); - for (int i = 0; i < arr.length; i++) { - if (arr[i].getSimpleName().startsWith("GC")) { - arr[i] = Object.class; - } - } - return VMTest.newTests(). - withClasses(arr). - withLaunchers("bck2brwsr"). - withTestAnnotation(KOTest.class). - build(); - } - - @Override - public BrwsrCtx createContext() { - KO4J ko = new KO4J(null); - return Contexts.newBuilder(). - register(Transfer.class, ko.transfer(), 9). - register(WSTransfer.class, ko.websockets(), 9). - register(Technology.class, ko.knockout(), 9).build(); - } - - - - @Override - public Object createJSON(Map values) { - Object json = createJSON(); - - for (Map.Entry entry : values.entrySet()) { - putValue(json, entry.getKey(), entry.getValue()); - } - return json; - } - - @JavaScriptBody(args = {}, body = "return new Object();") - private static native Object createJSON(); - - @JavaScriptBody(args = { "json", "key", "value" }, body = "json[key] = value;") - private static native void putValue(Object json, String key, Object value); - - @Override - public Object executeScript(String script, Object[] arguments) { - return execScript(script, arguments); - } - - @JavaScriptBody(args = { "s", "args" }, body = - "var f = new Function(s); return f.apply(null, args);" - ) - private static native Object execScript(String s, Object[] arguments); - - @JavaScriptBody(args = { }, body = - "var h;" - + "if (!!window && !!window.location && !!window.location.href)\n" - + " h = window.location.href;\n" - + "else " - + " h = null;" - + "return h;\n" - ) - private static native String findBaseURL(); - - @Override - public URI prepareURL(String content, String mimeType, String[] parameters) { - try { - final URL baseURL = new URL(findBaseURL()); - StringBuilder sb = new StringBuilder(); - sb.append("/dynamic?mimeType=").append(mimeType); - for (int i = 0; i < parameters.length; i++) { - sb.append("¶m" + i).append("=").append(parameters[i]); - } - String mangle = content.replace("\n", "%0a") - .replace("\"", "\\\"").replace(" ", "%20"); - sb.append("&content=").append(mangle); - - URL query = new URL(baseURL, sb.toString()); - String uri = (String) query.getContent(new Class[] { String.class }); - URI connectTo = new URI(uri.trim()); - return connectTo; - } catch (IOException ex) { - throw new IllegalStateException(ex); - } catch (URISyntaxException ex) { - throw new IllegalStateException(ex); - } - } -}