AjdeCompilerTest.java

/********************************************************************
 * Copyright (c) 2007 Contributors. All rights reserved.
 * This program and the accompanying materials are made available
 * under the terms of the Eclipse Public License v 2.0
 * which accompanies this distribution and is available at
 * https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.txt
 *
 * Contributors: IBM Corporation - initial API and implementation
 * 				 Helen Hawkins   - initial version (bug 148190)
 *******************************************************************/
package org.aspectj.ajde;

import org.aspectj.ajde.core.AjCompiler;

/**
 * Tests ajde's management of the AjCompiler instances. Expect
 * there to be a different one for each .lst file and for ajde
 * to only remember the compiler for the last .lst file.
 */
public class AjdeCompilerTest extends AjdeTestCase {

	protected void setUp() throws Exception {
		super.setUp();
		initialiseProject("LstBuildConfigManagerTest");
	}

	// Expect to get a different compiler instance for each
	// different config file
	public void testGetSameAjCompilerForSameConfigFiles() {
		AjCompiler c1 = getCompilerForConfigFileWithName("bad-injar.lst");
		AjCompiler c2 = getCompilerForConfigFileWithName("bad-injar.lst");
		assertEquals("expected the same AjCompiler instance to be returned" +
				" for the same configFile but found different ones", c1, c2);
	}

	// Expect to get a different compiler instance for each
	// different config file
	public void testGetDifferentAjCompilerForDifferentConfigFiles() {
		AjCompiler c1 = getCompilerForConfigFileWithName("bad-injar.lst");
		AjCompiler c2 = getCompilerForConfigFileWithName("dir-entry.lst");
		assertNotSame("expected different AjCompiler instances to be returned" +
				" for different configFiles but found the smae", c1, c2);
	}

	// want to keep the same setting regardless of the configFile
	// being built - therefore the same instance should be passed
	// from one AjCompiler instance to the next
	public void testSameCompilerConfigForDifferentConfigFiles() {
		AjCompiler c1 = getCompilerForConfigFileWithName("bad-injar.lst");
		AjCompiler c2 = getCompilerForConfigFileWithName("dir-entry.lst");
		assertEquals("expected the same compilerConfig instance to be associated" +
				" with the different AjCompiler's however found different ones",
				c1.getCompilerConfiguration(), c2.getCompilerConfiguration());
	}

	// want to have a different messageHandler instance for the different
	// config files - or we can just reset?!?! Resetting would be easier
	public void testSameMessageHandlerForDifferentConfigFiles() {
		AjCompiler c1 = getCompilerForConfigFileWithName("bad-injar.lst");
		AjCompiler c2 = getCompilerForConfigFileWithName("dir-entry.lst");
		assertEquals("expected the same messageHandler instance to be associated" +
				" with the different AjCompiler's however found different ones",
				c1.getMessageHandler(), c2.getMessageHandler());
	}

	// can have the same buildProgressMonitor for the different configFiles
	// because it holds no state
	public void testSameBuildProgressMonitorForDifferentConfigFiles() {
		AjCompiler c1 = getCompilerForConfigFileWithName("bad-injar.lst");
		AjCompiler c2 = getCompilerForConfigFileWithName("dir-entry.lst");
		assertEquals("expected the same buildProgressMonitor instance to be associated" +
				" with the different AjCompiler's however found different ones",
				c1.getBuildProgressMonitor(), c2.getBuildProgressMonitor());
	}

}