diff options
Diffstat (limited to 'test/junit/net/sf/antcontrib/cpptasks/TestLinkerDef.java')
-rw-r--r-- | test/junit/net/sf/antcontrib/cpptasks/TestLinkerDef.java | 343 |
1 files changed, 0 insertions, 343 deletions
diff --git a/test/junit/net/sf/antcontrib/cpptasks/TestLinkerDef.java b/test/junit/net/sf/antcontrib/cpptasks/TestLinkerDef.java deleted file mode 100644 index 9387d5b..0000000 --- a/test/junit/net/sf/antcontrib/cpptasks/TestLinkerDef.java +++ /dev/null @@ -1,343 +0,0 @@ -/* - * - * Copyright 2002-2004 The Ant-Contrib project - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not - * use this file except in compliance with the License. You may obtain a copy of - * the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations under - * the License. - */ -package net.sf.antcontrib.cpptasks; - -import java.io.File; -import java.io.IOException; -import net.sf.antcontrib.cpptasks.compiler.CommandLineLinkerConfiguration; -import net.sf.antcontrib.cpptasks.compiler.Linker; -import net.sf.antcontrib.cpptasks.devstudio.DevStudioLinker; -import net.sf.antcontrib.cpptasks.gcc.GccLinker; -import net.sf.antcontrib.cpptasks.types.FlexLong; -import net.sf.antcontrib.cpptasks.types.LibrarySet; -import net.sf.antcontrib.cpptasks.types.LinkerArgument; -import net.sf.antcontrib.cpptasks.types.SystemLibrarySet; -import org.apache.tools.ant.BuildException; -import org.apache.tools.ant.types.FlexInteger; - -/** - * Tests for LinkerDef class. - */ -public final class TestLinkerDef - extends TestProcessorDef { - /** - * Constructor. - * - * @param name - * test name - */ - public TestLinkerDef(final String name) { - super(name); - } - - /** - * Creates a processor. - * - * @return new linker - */ - protected ProcessorDef create() { - return new LinkerDef(); - } - - /** - * Test if setting the classname attribute to the name of the GCC linker - * results in the singleton GCC linker. - */ - public void testGetGcc() { - LinkerDef linkerDef = (LinkerDef) create(); - linkerDef.setClassname("net.sf.antcontrib.cpptasks.gcc.GccLinker"); - Linker comp = (Linker) linkerDef.getProcessor(); - assertNotNull(comp); - assertSame(GccLinker.getInstance(), comp); - } - - /** - * Test if setting the classname attribute to the name of the MSVC linker - * results in the singleton MSVC linker. - */ - public void testGetMSVC() { - LinkerDef linkerDef = (LinkerDef) create(); - linkerDef - .setClassname("net.sf.antcontrib.cpptasks.devstudio.DevStudioLinker"); - Linker comp = (Linker) linkerDef.getProcessor(); - assertNotNull(comp); - assertSame(DevStudioLinker.getInstance(), comp); - } - - /** - * Tests if setting the classname attribute to an bogus classname results in - * a BuildException. - * - */ - public void testUnknownClass() { - LinkerDef linkerDef = (LinkerDef) create(); - try { - linkerDef - .setClassname("net.sf.antcontrib.cpptasks.bogus.BogusLinker"); - } catch (BuildException ex) { - return; - } - fail("should have thrown exception"); - } - - /** - * Tests if setting the classname to the name of a class that doesn't - * support Linker throws a BuildException. - * - */ - public void testWrongType() { - LinkerDef linkerDef = (LinkerDef) create(); - try { - linkerDef.setClassname("net.sf.antcontrib.cpptasks.CCTask"); - } catch (ClassCastException ex) { - return; - } - fail("should have thrown exception"); - } - - /** - * Gets the command line arguments that appear before the filenames. - * - * @param processor processor under test - * @return command line arguments - */ - protected String[] getPreArguments(final ProcessorDef processor) { - return ((CommandLineLinkerConfiguration) getConfiguration(processor)) - .getPreArguments(); - } - - /** - * Sets the name attribute. - * - * @param linker - * linker defintion - * @param name - * linker name - */ - private static void setLinkerName(final LinkerDef linker, - final String name) { - LinkerEnum linkerName = new LinkerEnum(); - linkerName.setValue(name); - linker.setName(linkerName); - } - - /** - * Tests that linkerarg's that appear in the base linker are effective when - * creating the command line for a linker that extends it. - */ - public void testExtendsLinkerArgs() { - LinkerDef baseLinker = new LinkerDef(); - LinkerArgument linkerArg = new LinkerArgument(); - linkerArg.setValue("/base"); - baseLinker.addConfiguredLinkerArg(linkerArg); - LinkerDef extendedLinker = (LinkerDef) createExtendedProcessorDef( - baseLinker); - String[] preArgs = getPreArguments(extendedLinker); - assertEquals(1, preArgs.length); - assertEquals("/base", preArgs[0]); - } - - /** - * Tests that fileset's that appear in the base linker are effective when - * creating the command line for a linker that extends it. - * @throws IOException if unable to create or delete temporary file - */ - public void testExtendsFileSet() throws IOException { - super.testExtendsFileSet(File.createTempFile("cpptaskstest", ".o")); - } - - /** - * Tests that libset's that appear in the base linker are effective when - * creating the command line for a linker that extends it. - */ - public void testExtendsLibSet() { - LinkerDef baseLinker = new LinkerDef(); - LibrarySet libset = new LibrarySet(); - LinkerDef extendedLinker = (LinkerDef) createExtendedProcessorDef( - baseLinker); - libset.setProject(baseLinker.getProject()); - CUtil.StringArrayBuilder libs = new CUtil.StringArrayBuilder("advapi32"); - libset.setLibs(libs); - baseLinker.addLibset(libset); - CommandLineLinkerConfiguration config = (CommandLineLinkerConfiguration) - getConfiguration(extendedLinker); - String[] libnames = config.getLibraryNames(); - assertEquals(1, libnames.length); - assertEquals("advapi32", libnames[0]); - } - - /** - * Tests that syslibset's that appear in the base linker are effective when - * creating the command line for a linker that extends it. - */ - public void testExtendsSysLibSet() { - LinkerDef baseLinker = new LinkerDef(); - SystemLibrarySet libset = new SystemLibrarySet(); - LinkerDef extendedLinker = (LinkerDef) createExtendedProcessorDef( - baseLinker); - libset.setProject(baseLinker.getProject()); - CUtil.StringArrayBuilder libs = new CUtil.StringArrayBuilder("advapi32"); - libset.setLibs(libs); - baseLinker.addSyslibset(libset); - CommandLineLinkerConfiguration config = (CommandLineLinkerConfiguration) - getConfiguration(extendedLinker); - String[] libnames = config.getLibraryNames(); - assertEquals(1, libnames.length); - assertEquals("advapi32", libnames[0]); - } - - /** - * Tests that the base attribute in the base linker is effective when - * creating the command line for a linker that extends it. - */ - public void testExtendsBase() { - LinkerDef baseLinker = new LinkerDef(); - baseLinker.setBase(new FlexLong("10000")); - LinkerDef extendedLinker = (LinkerDef) createExtendedProcessorDef( - baseLinker); - setLinkerName(extendedLinker, "msvc"); - String[] preArgs = getPreArguments(extendedLinker); - assertEquals("/NOLOGO", preArgs[0]); - assertEquals("/SUBSYSTEM:WINDOWS", preArgs[1]); - assertEquals("/INCREMENTAL:NO", preArgs[2]); - assertEquals("/BASE:0x2710", preArgs[3]); - } - - /** - * Tests that the stack attribute in the base linker is effective when - * creating the command line for a linker that extends it. - */ - public void testExtendsStack() { - LinkerDef baseLinker = new LinkerDef(); - baseLinker.setStack(new FlexInteger("10000")); - LinkerDef extendedLinker = (LinkerDef) createExtendedProcessorDef( - baseLinker); - setLinkerName(extendedLinker, "msvc"); - String[] preArgs = getPreArguments(extendedLinker); - assertEquals("/NOLOGO", preArgs[0]); - assertEquals("/SUBSYSTEM:WINDOWS", preArgs[1]); - assertEquals("/INCREMENTAL:NO", preArgs[2]); - assertEquals("/STACK:0x2710", preArgs[3]); - } - - /** - * Tests that the entry attribute in the base linker is effective when - * creating the command line for a linker that extends it. - */ - public void testExtendsEntry() { - LinkerDef baseLinker = new LinkerDef(); - baseLinker.setEntry("foo"); - LinkerDef extendedLinker = (LinkerDef) createExtendedProcessorDef( - baseLinker); - String[] preArgs = getPreArguments(extendedLinker); - assertEquals("-e", preArgs[0]); - assertEquals("foo", preArgs[1]); - } - - /** - * Tests that the fixed attribute in the base linker is effective when - * creating the command line for a linker that extends it. - */ - public void testExtendsFixed() { - LinkerDef baseLinker = new LinkerDef(); - baseLinker.setFixed(true); - LinkerDef extendedLinker = (LinkerDef) createExtendedProcessorDef( - baseLinker); - setLinkerName(extendedLinker, "msvc"); - String[] preArgs = getPreArguments(extendedLinker); - assertEquals("/NOLOGO", preArgs[0]); - assertEquals("/SUBSYSTEM:WINDOWS", preArgs[1]); - assertEquals("/INCREMENTAL:NO", preArgs[2]); - assertEquals("/FIXED", preArgs[3]); - } - - /** - * Tests that the incremental attribute in the base linker is effective when - * creating the command line for a linker that extends it. - */ - public void testExtendsIncremental() { - LinkerDef baseLinker = new LinkerDef(); - baseLinker.setIncremental(true); - LinkerDef extendedLinker = (LinkerDef) createExtendedProcessorDef( - baseLinker); - setLinkerName(extendedLinker, "msvc"); - String[] preArgs = getPreArguments(extendedLinker); - assertEquals("/NOLOGO", preArgs[0]); - assertEquals("/SUBSYSTEM:WINDOWS", preArgs[1]); - assertEquals("/INCREMENTAL:YES", preArgs[2]); - } - - /** - * Tests that the map attribute in the base linker is effective when - * creating the command line for a linker that extends it. - */ - public void testExtendsMap() { - LinkerDef baseLinker = new LinkerDef(); - baseLinker.setMap(true); - LinkerDef extendedLinker = (LinkerDef) createExtendedProcessorDef( - baseLinker); - setLinkerName(extendedLinker, "msvc"); - String[] preArgs = getPreArguments(extendedLinker); - assertEquals("/NOLOGO", preArgs[0]); - assertEquals("/SUBSYSTEM:WINDOWS", preArgs[1]); - assertEquals("/INCREMENTAL:NO", preArgs[2]); - assertEquals("/MAP", preArgs[3]); - } - - /** - * Tests that the rebuild attribute in the base linker is effective when - * creating the command line for a linker that extends it. - */ - public void testExtendsRebuild() { - testExtendsRebuild(new LinkerDef()); - } - - /** - * Tests that the name attribute in the base linker is effective when - * creating the command line for a linker that extends it. - */ - public void testExtendsName() { - LinkerDef baseLinker = new LinkerDef(); - setLinkerName(baseLinker, "msvc"); - LinkerDef extendedLinker = (LinkerDef) createExtendedProcessorDef( - baseLinker); - extendedLinker.setBase(new FlexLong("10000")); - String[] preArgs = getPreArguments(extendedLinker); - assertEquals("/NOLOGO", preArgs[0]); - assertEquals("/SUBSYSTEM:WINDOWS", preArgs[1]); - assertEquals("/INCREMENTAL:NO", preArgs[2]); - assertEquals("/BASE:0x2710", preArgs[3]); - } - - /** - * Tests that the classname attribute in the base linker is effective when - * creating the command line for a linker that extends it. - */ - public void testExtendsClassname() { - LinkerDef baseLinker = new LinkerDef(); - baseLinker - .setClassname("net.sf.antcontrib.cpptasks.devstudio.DevStudioLinker"); - LinkerDef extendedLinker = (LinkerDef) createExtendedProcessorDef( - baseLinker); - extendedLinker.setBase(new FlexLong("10000")); - String[] preArgs = getPreArguments(extendedLinker); - assertEquals("/NOLOGO", preArgs[0]); - assertEquals("/SUBSYSTEM:WINDOWS", preArgs[1]); - assertEquals("/INCREMENTAL:NO", preArgs[2]); - assertEquals("/BASE:0x2710", preArgs[3]); - } -} |