/*******************************************************************************
 * Copyright (c) 2000, 2012 IBM Corporation and others.
 *
 * This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License 2.0
 * which accompanies this distribution, and is available at
 * https://www.eclipse.org/legal/epl-2.0/
 *
 * SPDX-License-Identifier: EPL-2.0
 *
 * Contributors:
 *     IBM Corporation - initial API and implementation
 *     James Blackburn (Broadcom Corp.) - ongoing development
 *******************************************************************************/
package org.eclipse.core.tests.resources.regression;

import junit.framework.*;

/**
 * A suite that runs all regression tests.
 */
public class AllTests extends TestCase {
	/**
	 * AllTests constructor comment.
	 */
	public AllTests() {
		super(null);
	}

	/**
	 * AllTests constructor comment.
	 * @param name java.lang.String
	 */
	public AllTests(String name) {
		super(name);
	}

	public static Test suite() {
		TestSuite suite = new TestSuite(AllTests.class.getName());
		suite.addTest(Bug_006708.suite());
		suite.addTest(Bug_025457.suite());
		suite.addTest(Bug_026294.suite());
		suite.addTest(Bug_027271.suite());
		suite.addTest(Bug_028981.suite());
		suite.addTest(Bug_029116.suite());
		suite.addTest(Bug_029671.suite());
		suite.addTest(Bug_029851.suite());
		suite.addTest(Bug_032076.suite());
		suite.addTest(Bug_044106.suite());
		suite.addTest(Bug_092108.suite());
		suite.addTest(Bug_097608.suite());
		suite.addTest(Bug_098740.suite());
		suite.addTest(Bug_126104.suite());
		suite.addTest(Bug_127562.suite());
		suite.addTest(Bug_132510.suite());
		suite.addTest(Bug_134364.suite());
		suite.addTest(Bug_147232.suite());
		suite.addTest(Bug_160251.suite());
		suite.addTest(Bug_165892.suite());
		suite.addTest(Bug_192631.suite());
		suite.addTest(Bug_226264.suite());
		suite.addTest(Bug_231301.suite());
		suite.addTest(Bug_233939.suite());
		suite.addTest(Bug_265810.suite());
		suite.addTest(Bug_264182.suite());
		suite.addTest(Bug_288315.suite());
		suite.addTest(Bug_303517.suite());
		suite.addTest(Bug_329836.suite());
		suite.addTest(Bug_331445.suite());
		suite.addTest(Bug_332543.suite());
		suite.addTest(Bug_378156.suite());
		suite.addTest(IFileTest.suite());
		suite.addTest(IFolderTest.suite());
		suite.addTest(IProjectTest.suite());
		suite.addTest(IResourceTest.suite());
		suite.addTest(IWorkspaceTest.suite());
		suite.addTest(LocalStoreRegressionTests.suite());
		suite.addTest(NLTest.suite());
		suite.addTest(PR_1GEAB3C_Test.suite());
		suite.addTest(PR_1GH2B0N_Test.suite());
		suite.addTest(PR_1GHOM0N_Test.suite());
		suite.addTest(Bug_530868.suite());
		suite.addTest(Bug_185247_recursiveLinks.suite());
		suite.addTest(Bug_185247_LinuxTests.suite());
		return suite;
	}
}
