/**
 * <copyright>
 * </copyright>
 *
 * $Id$
 */
package org.eclipse.stem.diseasemodels.vector.tests;

import junit.framework.TestCase;

import org.eclipse.stem.diseasemodels.vector.VectorDiseaseModel;

/**
 * <!-- begin-user-doc -->
 * A test case for the model object '<em><b>Disease Model</b></em>'.
 * <!-- end-user-doc -->
 * @generated
 */
public abstract class VectorDiseaseModelTest extends TestCase {

	/**
	 * The fixture for this Disease Model test case.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected VectorDiseaseModel fixture = null;

	/**
	 * Constructs a new Disease Model test case with the given name.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public VectorDiseaseModelTest(String name) {
		super(name);
	}

	/**
	 * Sets the fixture for this Disease Model test case.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected void setFixture(VectorDiseaseModel fixture) {
		this.fixture = fixture;
	}

	/**
	 * Returns the fixture for this Disease Model test case.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected VectorDiseaseModel getFixture() {
		return fixture;
	}

} //VectorDiseaseModelTest
