/**
 * <copyright>
 * </copyright>
 *
 * $Id$
 */
package org.eclipse.stem.diseasemodels.vector.tests;

import junit.framework.Test;
import junit.framework.TestSuite;

import junit.textui.TestRunner;

/**
 * <!-- begin-user-doc -->
 * A test suite for the '<em><b>vector</b></em>' package.
 * <!-- end-user-doc -->
 * @generated
 */
public class VectorTests extends TestSuite {

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public static void main(String[] args) {
		TestRunner.run(suite());
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public static Test suite() {
		TestSuite suite = new VectorTests("vector Tests");
		suite.addTestSuite(MacdonaldRossDiseaseModelTest.class);
		suite.addTestSuite(DengueModelTest.class);
		suite.addTestSuite(SimpleDengueModelTest.class);
		suite.addTestSuite(VerySimpleDengueModelTest.class);
		suite.addTestSuite(DengueModelHostLabelTest.class);
		suite.addTestSuite(DengueModelHostLabelValueTest.class);
		suite.addTestSuite(DengueModelVectorLabelTest.class);
		suite.addTestSuite(DengueModelVectorLabelValueTest.class);
		return suite;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public VectorTests(String name) {
		super(name);
	}

} //VectorTests
