/*******************************************************************************
 * Copyright (c) 2009 IBM Corporation and others All rights reserved. This
 * program and the accompanying materials are made available under the terms of
 * the Eclipse Public License v1.0 which accompanies this distribution, and is
 * available at http://www.eclipse.org/legal/epl-v10.html
 * 
 * Contributors: IBM Corporation - initial API and implementation
 *******************************************************************************/
package org.eclipse.e4.languages.javascript.junit.test;

import java.net.URL;
import java.util.Arrays;

import junit.framework.Test;
import junit.framework.TestSuite;

import org.eclipse.e4.languages.javascript.junit.JavaScriptTestSuite;

public class AllTests extends TestSuite {

	public static Test suite() {
		return new AllTests();
	}

	public AllTests() {
		addTestSuite(BasicJavaScriptTest.class);		
		URL testjsURL = getClass().getResource("test.js");
		addTest(new JavaScriptTestSuite("AssertTestCase", Arrays.asList(new Object[]{testjsURL})));
		addTest(new JavaScriptTestSuite("MyTestCase1", Arrays.asList(new Object[]{testjsURL})));
		addTest(new JavaScriptTestSuite("MyTestCase2", Arrays.asList(new Object[]{testjsURL})));
		addTest(new JavaScriptTestSuite("MyTestCase3", Arrays.asList(new Object[]{testjsURL})));
	}
}
