/*******************************************************************************
 * Copyright (c) 2000, 2004 IBM Corporation and others.
 * All rights reserved. This program and the accompanying materials 
 * are made available under the terms of the Common Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/cpl-v10.html
 * 
 * Contributors:
 *     IBM Corporation - initial API and implementation
 *******************************************************************************/
package org.eclipse.jdt.core.tests.compiler.regression;

import org.eclipse.jdt.core.tests.util.CompilerTestSetup;
import org.eclipse.jdt.core.tests.util.TestVerifier;
import org.eclipse.jdt.core.tests.util.Util;
import org.eclipse.jdt.internal.compiler.env.INameEnvironment;
import org.eclipse.jdt.internal.compiler.batch.FileSystem;

import junit.framework.*;

public class RegressionTestSetup extends CompilerTestSetup {
	
	TestVerifier verifier = new TestVerifier(true);
	INameEnvironment javaClassLib;
	
	public RegressionTestSetup(Test test, String complianceLevel) {
		super(test, complianceLevel);
	}
	public RegressionTestSetup(Test test, String complianceLevel, String support) {
		super(test, complianceLevel, support);
	}

	protected void setUp() {
		if (this.javaClassLib == null) {
			// Create name environment
			this.javaClassLib = new FileSystem(Util.getJavaClassLibs(), new String[0], null);
		}
		super.setUp();
	}
	protected void tearDown() {
		this.verifier.shutDown();
	}
}
