/*******************************************************************************
 * Copyright (c) 2005, 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.utility.tests.internal;

import junit.framework.Test;
import junit.framework.TestSuite;
import org.eclipse.jpt.utility.tests.internal.enumerations.JptUtilityEnumerationsTests;
import org.eclipse.jpt.utility.tests.internal.iterables.JptUtilityIterablesTests;
import org.eclipse.jpt.utility.tests.internal.iterators.JptUtilityIteratorsTests;
import org.eclipse.jpt.utility.tests.internal.model.JptUtilityModelTests;
import org.eclipse.jpt.utility.tests.internal.node.JptUtilityNodeTests;
import org.eclipse.jpt.utility.tests.internal.synchronizers.JptUtilitySynchronizersTests;

/**
 * decentralize test creation code
 */
public class JptUtilityTests {

	public static Test suite() {
		TestSuite suite = new TestSuite(JptUtilityTests.class.getPackage().getName());

		suite.addTest(JptUtilityEnumerationsTests.suite());
		suite.addTest(JptUtilityIterablesTests.suite());
		suite.addTest(JptUtilityIteratorsTests.suite());
		suite.addTest(JptUtilityModelTests.suite());
		suite.addTest(JptUtilityNodeTests.suite());
		suite.addTest(JptUtilitySynchronizersTests.suite());

		suite.addTestSuite(ArrayToolsTests.class);
		suite.addTestSuite(AsynchronousCommandExecutorTests.class);
		suite.addTestSuite(BagTests.class);
		suite.addTestSuite(BidiFilterTests.class);
		suite.addTestSuite(BidiStringConverterTests.class);
		suite.addTestSuite(BidiTransformerTests.class);
		suite.addTestSuite(BitToolsTests.class);
		suite.addTestSuite(BooleanReferenceTests.class);
		suite.addTestSuite(BooleanToolsTests.class);
		suite.addTestSuite(ClasspathTests.class);
		suite.addTestSuite(ClassNameTests.class);
		suite.addTestSuite(CollectionToolsTests.class);
		suite.addTestSuite(CommandExecutorTests.class);
		suite.addTestSuite(CommandRunnableTests.class);
		suite.addTestSuite(CommandTests.class);
		suite.addTestSuite(CompositeCommandTests.class);
		suite.addTestSuite(ExceptionHandlerTests.class);
		suite.addTestSuite(FileToolsTests.class);
		suite.addTestSuite(FilterTests.class);
		suite.addTestSuite(HashBagTests.class);
		suite.addTestSuite(IdentityHashBagTests.class);
		suite.addTestSuite(IndentingPrintWriterTests.class);
		suite.addTestSuite(IntReferenceTests.class);
		suite.addTestSuite(JavaTypeTests.class);
		suite.addTestSuite(JDBCTypeTests.class);
		suite.addTestSuite(KeyedSetTests.class);
		suite.addTestSuite(ListenerListTests.class);
		suite.addTestSuite(MethodSignatureTests.class);
		suite.addTestSuite(NameToolsTests.class);
		suite.addTestSuite(NotNullFilterTests.class);
		suite.addTestSuite(ObjectReferenceTests.class);
		suite.addTestSuite(RangeTests.class);
		suite.addTestSuite(ReflectionToolsTests.class);
		suite.addTestSuite(ReverseComparatorTests.class);
		suite.addTestSuite(SimpleAssociationTests.class);
		suite.addTestSuite(SimpleQueueTests.class);
		suite.addTestSuite(SimpleStackTests.class);
		suite.addTestSuite(StringToolsTests.class);
		suite.addTestSuite(SynchronizedBooleanTests.class);
		suite.addTestSuite(SynchronizedIntTests.class);
		suite.addTestSuite(SynchronizedObjectTests.class);
		suite.addTestSuite(SynchronizedQueueTests.class);
		suite.addTestSuite(SynchronizedStackTests.class);
		suite.addTestSuite(XMLStringEncoderTests.class);

		return suite;
	}

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

}
