jaroslav@260: /**
jaroslav@260: * HTML via Java(tm) Language Bindings
jaroslav@260: * Copyright (C) 2013 Jaroslav Tulach
jaroslav@260: *
jaroslav@260: * This program is free software: you can redistribute it and/or modify
jaroslav@260: * it under the terms of the GNU General Public License as published by
jaroslav@260: * the Free Software Foundation, version 2 of the License.
jaroslav@260: *
jaroslav@260: * This program is distributed in the hope that it will be useful,
jaroslav@260: * but WITHOUT ANY WARRANTY; without even the implied warranty of
jaroslav@260: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
jaroslav@260: * GNU General Public License for more details. apidesign.org
jaroslav@260: * designates this particular file as subject to the
jaroslav@260: * "Classpath" exception as provided by apidesign.org
jaroslav@260: * in the License file that accompanied this code.
jaroslav@260: *
jaroslav@260: * You should have received a copy of the GNU General Public License
jaroslav@260: * along with this program. Look for COPYING file in the top folder.
jaroslav@260: * If not, see http://wiki.apidesign.org/wiki/GPLwithClassPathException
jaroslav@260: */
jaroslav@260: package org.apidesign.html.wstyrus;
jaroslav@260:
jaroslav@260: import java.io.BufferedReader;
jaroslav@260: import java.io.IOException;
jaroslav@260: import java.io.InputStreamReader;
jaroslav@260: import java.lang.annotation.Annotation;
jaroslav@260: import java.lang.reflect.Method;
jaroslav@260: import java.net.URI;
jaroslav@260: import java.net.URISyntaxException;
jaroslav@260: import java.net.URL;
jaroslav@260: import java.net.URLConnection;
jaroslav@260: import java.util.ArrayList;
jaroslav@260: import java.util.List;
jaroslav@260: import java.util.Map;
jaroslav@260: import java.util.concurrent.Executors;
jaroslav@260: import net.java.html.BrwsrCtx;
jaroslav@260: import net.java.html.boot.BrowserBuilder;
jaroslav@260: import net.java.html.js.JavaScriptBody;
jaroslav@288: import org.apidesign.html.boot.impl.FnUtils;
jaroslav@288: import org.apidesign.html.boot.spi.Fn;
jaroslav@260: import org.apidesign.html.context.spi.Contexts;
jaroslav@260: import org.apidesign.html.json.spi.Technology;
jaroslav@260: import org.apidesign.html.json.spi.Transfer;
jaroslav@260: import org.apidesign.html.json.spi.WSTransfer;
jaroslav@260: import org.apidesign.html.json.tck.KOTest;
jaroslav@260: import org.apidesign.html.json.tck.KnockoutTCK;
jaroslav@260: import org.apidesign.html.kofx.FXContext;
jaroslav@260: import org.json.JSONException;
jaroslav@260: import org.json.JSONObject;
jaroslav@260: import org.openide.util.lookup.ServiceProvider;
jaroslav@260: import org.testng.annotations.Factory;
jaroslav@260: import static org.testng.Assert.*;
jaroslav@260:
jaroslav@260: /**
jaroslav@260: *
jaroslav@260: * @author Jaroslav Tulach
jaroslav@260: */
jaroslav@260: @ServiceProvider(service = KnockoutTCK.class)
jaroslav@260: public final class TyrusKnockoutTest extends KnockoutTCK {
jaroslav@260: private static Class> browserClass;
jaroslav@288: private static Fn.Presenter browserContext;
jaroslav@260:
jaroslav@260: public TyrusKnockoutTest() {
jaroslav@260: }
jaroslav@260:
jaroslav@260: @Factory public static Object[] compatibilityTests() throws Exception {
jaroslav@260: Class[] arr = testClasses();
jaroslav@260: for (int i = 0; i < arr.length; i++) {
jaroslav@260: assertEquals(
jaroslav@260: arr[i].getClassLoader(),
jaroslav@260: TyrusKnockoutTest.class.getClassLoader(),
jaroslav@260: "All classes loaded by the same classloader"
jaroslav@260: );
jaroslav@260: }
jaroslav@260:
jaroslav@260: URI uri = TyrusDynamicHTTP.initServer();
jaroslav@260:
jaroslav@260: final BrowserBuilder bb = BrowserBuilder.newBrowser().loadClass(TyrusKnockoutTest.class).
jaroslav@260: loadPage(uri.toString()).
jaroslav@260: invoke("initialized");
jaroslav@260:
jaroslav@260: Executors.newSingleThreadExecutor().submit(new Runnable() {
jaroslav@260: @Override
jaroslav@260: public void run() {
jaroslav@260: bb.showAndWait();
jaroslav@260: }
jaroslav@260: });
jaroslav@260:
jaroslav@260: ClassLoader l = getClassLoader();
jaroslav@260: List