package org.eclipse.stem.interventions.tests;

/******************************************************************************* 
 * Copyright (c) 2011 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 
 *******************************************************************************/

import junit.framework.TestCase;

import org.eclipse.stem.interventions.InterventionLabelValue;

/**
 * <!-- begin-user-doc -->
 * A test case for the model object '<em><b>Intervention Label Value</b></em>'.
 * <!-- end-user-doc -->
 * @generated
 */
public abstract class InterventionLabelValueTest extends TestCase {

	/**
	 * The fixture for this Intervention Label Value test case.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected InterventionLabelValue fixture = null;

	/**
	 * Constructs a new Intervention Label Value test case with the given name.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public InterventionLabelValueTest(String name) {
		super(name);
	}

	/**
	 * Sets the fixture for this Intervention Label Value test case.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected void setFixture(InterventionLabelValue fixture) {
		this.fixture = fixture;
	}

	/**
	 * Returns the fixture for this Intervention Label Value test case.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected InterventionLabelValue getFixture() {
		return fixture;
	}

} //InterventionLabelValueTest
