package org.eclipse.stem.core.graph.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 org.eclipse.stem.core.graph.IntegrationLabel;

/**
 * <!-- begin-user-doc -->
 * A test case for the model object '<em><b>Integration Label</b></em>'.
 * <!-- end-user-doc -->
 * <p>
 * The following operations are tested:
 * <ul>
 *   <li>{@link org.eclipse.stem.core.graph.IntegrationLabel#reset(org.eclipse.stem.core.model.STEMTime) <em>Reset</em>}</li>
 * </ul>
 * </p>
 * @generated
 */
public abstract class IntegrationLabelTest extends DynamicNodeLabelTest {

	/**
	 * Constructs a new Integration Label test case with the given name.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public IntegrationLabelTest(String name) {
		super(name);
	}

	/**
	 * Returns the fixture for this Integration Label test case.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	protected IntegrationLabel getFixture() {
		return (IntegrationLabel)fixture;
	}

	/**
	 * Tests the '{@link org.eclipse.stem.core.graph.IntegrationLabel#reset(org.eclipse.stem.core.model.STEMTime) <em>Reset</em>}' operation.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see org.eclipse.stem.core.graph.IntegrationLabel#reset(org.eclipse.stem.core.model.STEMTime)
	 * @generated
	 */
	public void testReset__STEMTime() {
		// TODO: implement this operation test method
		// Ensure that you remove @generated or mark it @generated NOT
		fail();
	}

} //IntegrationLabelTest
