/*******************************************************************************
 * Copyright (c) 2009, 2010 Oracle. 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:
 *     Oracle - initial API and implementation
 ******************************************************************************/
package org.eclipse.jpt.core.tests.internal.jpa2.context.orm;

import junit.framework.Test;
import junit.framework.TestCase;
import junit.framework.TestSuite;

public class Generic2_0OrmContextModelTests
	extends TestCase
{
	public static Test suite() {
		TestSuite suite = new TestSuite(Generic2_0OrmContextModelTests.class.getPackage().getName());
		suite.addTestSuite(GenericOrmAssociationOverride2_0Tests.class);
		suite.addTestSuite(GenericOrmCascade2_0Tests.class);
		suite.addTestSuite(GenericOrmCollectionTable2_0Tests.class);
		suite.addTestSuite(GenericOrmElementCollectionMapping2_0Tests.class);
		suite.addTestSuite(GenericOrmEntity2_0Tests.class);
		suite.addTestSuite(GenericOrmEmbeddedMapping2_0Tests.class);
		suite.addTestSuite(GenericOrmManyToManyMapping2_0Tests.class);
		suite.addTestSuite(GenericOrmManyToOneMapping2_0Tests.class);
		suite.addTestSuite(GenericOrmOneToManyMapping2_0Tests.class);
		suite.addTestSuite(GenericOrmOneToOneMapping2_0Tests.class);
		suite.addTestSuite(GenericOrmPersistentAttribute2_0Tests.class);
		suite.addTestSuite(GenericOrmPersistentType2_0Tests.class);
		suite.addTestSuite(GenericOrmSequenceGenerator2_0Tests.class);
		return suite;
	}

	private Generic2_0OrmContextModelTests() {
		super();
		throw new UnsupportedOperationException();
	}
}
