/*
 * Copyright (c) 2005 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 - initial API and implementation
 *
 * $Id: LiteralSpecificationTest.java,v 1.1 2006/02/21 16:32:27 khussey Exp $
 */
package org.eclipse.uml2.uml.tests;

import org.eclipse.uml2.uml.LiteralSpecification;

/**
 * <!-- begin-user-doc -->
 * A test case for the model object '<em><b>Literal Specification</b></em>'.
 * <!-- end-user-doc -->
 * @generated
 */
public abstract class LiteralSpecificationTest
		extends ValueSpecificationTest {

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

	/**
	 * Returns the fixture for this Literal Specification test case.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private LiteralSpecification getFixture() {
		return (LiteralSpecification) fixture;
	}

} //LiteralSpecificationTest
