From: Curt A. <ca...@us...> - 2002-03-08 08:20:36
|
Update of /cvsroot/ant-contrib/cpptasks/test/junit/net/sf/antcontrib/cpptasks In directory usw-pr-cvs1:/tmp/cvs-serv9040/test/junit/net/sf/antcontrib/cpptasks Added Files: TestAbstractCCompiler.java TestAbstractDef.java TestAbstractLinker.java TestAllClasses.java TestCCTask.java TestCUtil.java TestCompilerDef.java TestTargetInfo.java Log Message: Rework of cc for batch compilation, clear-text history and dependencies files --- NEW FILE: TestAbstractCCompiler.java --- /* * The Apache Software License, Version 1.1 * * Copyright (c) 2002 The Apache Software Foundation. All rights * reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3. The end-user documentation included with the redistribution, if * any, must include the following acknowlegement: * "This product includes software developed by the * Apache Software Foundation (http://www.apache.org/)." * Alternately, this acknowlegement may appear in the software itself, * if and wherever such third-party acknowlegements normally appear. * * 4. The names "The Jakarta Project", "Ant", and "Apache Software * Foundation" must not be used to endorse or promote products derived * from this software without prior written permission. For written * permission, please contact ap...@ap.... * * 5. Products derived from this software may not be called "Apache" * nor may "Apache" appear in their names without prior written * permission of the Apache Group. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * ==================================================================== * * This software consists of voluntary contributions made by many * individuals on behalf of the Apache Software Foundation. For more * information on the Apache Software Foundation, please see * <http://www.apache.org/>. */ package net.sf.antcontrib.cpptasks; import org.apache.tools.ant.*; import java.io.*; import java.util.*; import net.sf.antcontrib.cpptasks.compiler.AbstractCCompiler; import net.sf.antcontrib.cpptasks.os.WindowsInfo; import junit.framework.*; import org.apache.tools.ant.BuildException; import org.apache.tools.ant.Task; import net.sf.antcontrib.cpptasks.CompilerDef; import net.sf.antcontrib.cpptasks.compiler.CompilerConfiguration; import java.io.File; /** * Test for abstract compiler class * * Override create to test concrete compiler implementions */ public class TestAbstractCCompiler extends TestCase { public TestAbstractCCompiler(String name) { super(name); } private class DummyAbstractCCompiler extends AbstractCCompiler { public DummyAbstractCCompiler() { super(new String[] { ".cpp", ".c" }, new String[] { ".hpp", ".h", ".inl" }); } public String getIdentifier() { return "dummy"; } public void compile(Task task, File[] srcfile, File[] outputfile, CompilerConfiguration config) throws BuildException { throw new BuildException("Not implemented"); } public CompilerConfiguration createConfiguration(CompilerDef def1, CompilerDef def2) { return null; } } protected AbstractCCompiler create() { return new DummyAbstractCCompiler(); } public void testGetIdentfier() { AbstractCCompiler compiler = create(); String id = compiler.getIdentifier(); assertEquals("dummy",id); } public void testGetOutputFileName1() { AbstractCCompiler compiler = create(); String input = "c:/foo\\bar\\hello.c"; // // may cause IllegalStateException since // setPlatformInfo has not been called try { String output = compiler.getOutputFileName(input); } catch(java.lang.IllegalStateException ex) { } } public void testGetOutputFileName2() { AbstractCCompiler compiler = create(); compiler.setPlatformInfo(WindowsInfo.getInstance()); String output = compiler.getOutputFileName("c:/foo\\bar\\hello.c"); assertEquals("hello.obj",output); output = compiler.getOutputFileName("c:/foo\\bar/hello.c"); assertEquals("hello.obj",output); output = compiler.getOutputFileName("hello.c"); assertEquals("hello.obj",output); output = compiler.getOutputFileName("c:/foo\\bar\\hello.h"); assertNull(output); output = compiler.getOutputFileName("c:/foo\\bar/hello.h"); assertNull(output); } public void testBid() { AbstractCCompiler compiler = create(); int bid = compiler.bid("c:/foo\\bar\\hello.c"); assertEquals(100,bid); bid = compiler.bid("c:/foo\\bar/hello.c"); assertEquals(100,bid); bid = compiler.bid("c:/foo\\bar\\hello.h"); assertEquals(1,bid); bid = compiler.bid("c:/foo\\bar/hello.h"); assertEquals(1,bid); bid = compiler.bid("c:/foo\\bar/hello.pas"); assertEquals(0,bid); bid = compiler.bid("c:/foo\\bar/hello.java"); assertEquals(0,bid); } } --- NEW FILE: TestAbstractDef.java --- /* * The Apache Software License, Version 1.1 * * Copyright (c) 2002 The Apache Software Foundation. All rights * reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3. The end-user documentation included with the redistribution, if * any, must include the following acknowlegement: * "This product includes software developed by the * Apache Software Foundation (http://www.apache.org/)." * Alternately, this acknowlegement may appear in the software itself, * if and wherever such third-party acknowlegements normally appear. * * 4. The names "The Jakarta Project", "Ant", and "Apache Software * Foundation" must not be used to endorse or promote products derived * from this software without prior written permission. For written * permission, please contact ap...@ap.... * * 5. Products derived from this software may not be called "Apache" * nor may "Apache" appear in their names without prior written * permission of the Apache Group. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * ==================================================================== * * This software consists of voluntary contributions made by many * individuals on behalf of the Apache Software Foundation. For more * information on the Apache Software Foundation, please see * <http://www.apache.org/>. */ package net.sf.antcontrib.cpptasks; import org.apache.tools.ant.*; import java.io.*; import java.util.*; import net.sf.antcontrib.cpptasks.AbstractDef; import junit.framework.*; /** * A description of a file built or to be built */ public class TestAbstractDef extends TestCase { public TestAbstractDef(String name) { super(name); } private class DummyAbstractDef extends AbstractDef { } protected AbstractDef create() { return new DummyAbstractDef(); } public void testSetName() { AbstractDef def = create(); def.setName("foo"); String defname = def.getName(); assertEquals("foo",defname); } } --- NEW FILE: TestAbstractLinker.java --- /* * The Apache Software License, Version 1.1 * * Copyright (c) 2002 The Apache Software Foundation. All rights * reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3. The end-user documentation included with the redistribution, if * any, must include the following acknowlegement: * "This product includes software developed by the * Apache Software Foundation (http://www.apache.org/)." * Alternately, this acknowlegement may appear in the software itself, * if and wherever such third-party acknowlegements normally appear. * * 4. The names "The Jakarta Project", "Ant", and "Apache Software * Foundation" must not be used to endorse or promote products derived * from this software without prior written permission. For written * permission, please contact ap...@ap.... * * 5. Products derived from this software may not be called "Apache" * nor may "Apache" appear in their names without prior written * permission of the Apache Group. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * ==================================================================== * * This software consists of voluntary contributions made by many * individuals on behalf of the Apache Software Foundation. For more * information on the Apache Software Foundation, please see * <http://www.apache.org/>. */ package net.sf.antcontrib.cpptasks; import org.apache.tools.ant.*; import java.io.*; import java.util.*; import net.sf.antcontrib.cpptasks.compiler.AbstractLinker; import net.sf.antcontrib.cpptasks.os.WindowsInfo; import junit.framework.*; import org.apache.tools.ant.BuildException; import org.apache.tools.ant.Task; import net.sf.antcontrib.cpptasks.CompilerDef; import net.sf.antcontrib.cpptasks.compiler.CompilerConfiguration; import java.io.File; /** * Test for abstract compiler class * * Override create to test concrete compiler implementions */ public class TestAbstractLinker extends TestCase { public TestAbstractLinker(String name) { super(name); } } --- NEW FILE: TestAllClasses.java --- /* * The Apache Software License, Version 1.1 * * Copyright (c) 2002 The Apache Software Foundation. All rights * reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3. The end-user documentation included with the redistribution, if * any, must include the following acknowlegement: * "This product includes software developed by the * Apache Software Foundation (http://www.apache.org/)." * Alternately, this acknowlegement may appear in the software itself, * if and wherever such third-party acknowlegements normally appear. * * 4. The names "The Jakarta Project", "Ant", and "Apache Software * Foundation" must not be used to endorse or promote products derived * from this software without prior written permission. For written * permission, please contact ap...@ap.... * * 5. Products derived from this software may not be called "Apache" * nor may "Apache" appear in their names without prior written * permission of the Apache Group. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * ==================================================================== * * This software consists of voluntary contributions made by many * individuals on behalf of the Apache Software Foundation. For more * information on the Apache Software Foundation, please see * <http://www.apache.org/>. */ package net.sf.antcontrib.cpptasks; import org.apache.tools.ant.*; import java.io.*; import java.util.*; import net.sf.antcontrib.cpptasks.compiler.AbstractCCompiler; import net.sf.antcontrib.cpptasks.os.WindowsInfo; import junit.framework.*; import org.apache.tools.ant.BuildException; import org.apache.tools.ant.Task; import net.sf.antcontrib.cpptasks.CompilerDef; import net.sf.antcontrib.cpptasks.compiler.CompilerConfiguration; import java.io.File; /** * Test for abstract compiler class * * Override create to test concrete compiler implementions */ public class TestAllClasses extends TestSuite { public TestAllClasses(String name) { super(name); addTestSuite(net.sf.antcontrib.cpptasks.TestAbstractLinker.class); addTestSuite(net.sf.antcontrib.cpptasks.TestAbstractDef.class); addTestSuite(net.sf.antcontrib.cpptasks.TestAbstractCCompiler.class); addTestSuite(net.sf.antcontrib.cpptasks.TestCCTask.class); addTestSuite(net.sf.antcontrib.cpptasks.compiler.TestCommandLineCCompilerConfiguration.class); addTestSuite(net.sf.antcontrib.cpptasks.TestCompilerDef.class); addTestSuite(net.sf.antcontrib.cpptasks.types.TestDefineArgument.class); addTestSuite(net.sf.antcontrib.cpptasks.TestTargetInfo.class); addTestSuite(net.sf.antcontrib.cpptasks.TestCUtil.class); } public static TestSuite suite() { return new TestAllClasses("TestAllClasses"); } } --- NEW FILE: TestCCTask.java --- /* * The Apache Software License, Version 1.1 * * Copyright (c) 2002 The Apache Software Foundation. All rights * reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3. The end-user documentation included with the redistribution, if * any, must include the following acknowlegement: * "This product includes software developed by the * Apache Software Foundation (http://www.apache.org/)." * Alternately, this acknowlegement may appear in the software itself, * if and wherever such third-party acknowlegements normally appear. * * 4. The names "The Jakarta Project", "Ant", and "Apache Software * Foundation" must not be used to endorse or promote products derived * from this software without prior written permission. For written * permission, please contact ap...@ap.... * * 5. Products derived from this software may not be called "Apache" * nor may "Apache" appear in their names without prior written * permission of the Apache Group. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * ==================================================================== * * This software consists of voluntary contributions made by many * individuals on behalf of the Apache Software Foundation. For more * information on the Apache Software Foundation, please see * <http://www.apache.org/>. */ package net.sf.antcontrib.cpptasks; import org.apache.tools.ant.*; import java.io.*; import java.util.*; import net.sf.antcontrib.cpptasks.compiler.AbstractCCompiler; import net.sf.antcontrib.cpptasks.os.WindowsInfo; import junit.framework.*; import org.apache.tools.ant.BuildException; import org.apache.tools.ant.Task; import net.sf.antcontrib.cpptasks.CCTask; import net.sf.antcontrib.cpptasks.compiler.CompilerConfiguration; import net.sf.antcontrib.cpptasks.compiler.CommandLineCompilerConfiguration; import net.sf.antcontrib.cpptasks.gcc.GccCCompiler; import java.io.File; /** * Test <cc> task * * Override create to test concrete compiler implementions */ public class TestCCTask extends TestCase { public TestCCTask(String name) { super(name); } public void testGetTargetsToBuildByConfiguration1() { CompilerConfiguration config1 = new CommandLineCompilerConfiguration(GccCCompiler.getInstance(), "dummy", new File[0], new File[0],new File[0], "", new String[0], true); TargetInfo target1 = new TargetInfo(config1,new File[] { new File("src/foo.bar") }, new File("foo.obj"),true); Hashtable targets = new Hashtable(); targets.put(target1.getOutput(),target1); Hashtable targetsByConfig = CCTask.getTargetsToBuildByConfiguration(targets); Vector targetsForConfig1 = (Vector) targetsByConfig.get(config1); assertNotNull(targetsForConfig1); assertEquals(1,targetsForConfig1.size()); TargetInfo targetx = (TargetInfo) targetsForConfig1.get(0); assertSame(target1,targetx); } public void testGetTargetsToBuildByConfiguration2() { CompilerConfiguration config1 = new CommandLineCompilerConfiguration(GccCCompiler.getInstance(), "dummy", new File[0], new File[0], new File[0],"", new String[0], false); // // target doesn't need to be rebuilt // TargetInfo target1 = new TargetInfo(config1,new File[] { new File("src/foo.bar") }, new File("foo.obj"),false); Hashtable targets = new Hashtable(); targets.put(target1.getOutput(),target1); // // no targets need to be built, return a zero-length hashtable // Hashtable targetsByConfig = CCTask.getTargetsToBuildByConfiguration(targets); assertEquals(0,targetsByConfig.size()); } } --- NEW FILE: TestCUtil.java --- /* * The Apache Software License, Version 1.1 * * Copyright (c) 2002 The Apache Software Foundation. All rights * reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3. The end-user documentation included with the redistribution, if * any, must include the following acknowlegement: * "This product includes software developed by the * Apache Software Foundation (http://www.apache.org/)." * Alternately, this acknowlegement may appear in the software itself, * if and wherever such third-party acknowlegements normally appear. * * 4. The names "The Jakarta Project", "Ant", and "Apache Software * Foundation" must not be used to endorse or promote products derived * from this software without prior written permission. For written * permission, please contact ap...@ap.... * * 5. Products derived from this software may not be called "Apache" * nor may "Apache" appear in their names without prior written * permission of the Apache Group. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * ==================================================================== * * This software consists of voluntary contributions made by many * individuals on behalf of the Apache Software Foundation. For more * information on the Apache Software Foundation, please see * <http://www.apache.org/>. */ package net.sf.antcontrib.cpptasks; import org.apache.tools.ant.*; import java.io.*; import java.util.*; import net.sf.antcontrib.cpptasks.CUtil; import junit.framework.*; /** * Tests for CUtil class */ public class TestCUtil extends TestCase { public TestCUtil(String name) { super(name); } /** * This method tests CUtil.getRelativePath */ public void testGetRelativePath1() { String baseFileName = "c:/foo/bar/"; File baseFile = new File(baseFileName); Vector baseParts = new Vector(5); CUtil.decomposeFile(baseFile,baseParts); String rel = CUtil.getRelativePath(baseParts,"c:/foo/bar/baz"); assertEquals("baz",rel); rel = CUtil.getRelativePath(baseParts,"c:/foo/bar/"); assertEquals(".",rel); rel = CUtil.getRelativePath(baseParts,"c:/foo/"); assertEquals("..",rel); rel = CUtil.getRelativePath(baseParts,"c:/foo/baz/bar"); StringBuffer buf = new StringBuffer(".."); buf.append(File.separatorChar); buf.append("baz"); buf.append(File.separatorChar); buf.append("bar"); assertEquals(buf.toString(),rel); rel = CUtil.getRelativePath(baseParts,"d:\\foo.bar"); assertEquals("d:\\foo.bar",rel); } public void testParsePath1() { File[] files = CUtil.parsePath("",";"); assertEquals(0,files.length); } public void testParsePath2() { String workingDir = System.getProperty("user.dir"); File[] files = CUtil.parsePath(workingDir,";"); assertEquals(1,files.length); File workingDirFile = new File(workingDir); assertEquals(workingDirFile,files[0]); } public void testParsePath3() { String workingDir = System.getProperty("user.dir"); File[] files = CUtil.parsePath(workingDir + ";",";"); assertEquals(1,files.length); assertEquals(new File(workingDir),files[0]); } public void testParsePath4() { String workingDir = System.getProperty("user.dir"); String javaHome = System.getProperty("java.home"); File[] files = CUtil.parsePath(workingDir + ";" + javaHome,";"); assertEquals(2,files.length); assertEquals(new File(workingDir),files[0]); assertEquals(new File(javaHome),files[1]); } public void testParsePath5() { String workingDir = System.getProperty("user.dir"); String javaHome = System.getProperty("java.home"); File[] files = CUtil.parsePath(workingDir + ";" + javaHome + ";",";"); assertEquals(2,files.length); assertEquals(new File(workingDir),files[0]); assertEquals(new File(javaHome),files[1]); } public void testGetPathFromEnvironment() { File[] files = CUtil.getPathFromEnvironment("LIB",";"); assertNotNull(files); } } --- NEW FILE: TestCompilerDef.java --- /* * The Apache Software License, Version 1.1 * * Copyright (c) 2002 The Apache Software Foundation. All rights * reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3. The end-user documentation included with the redistribution, if * any, must include the following acknowlegement: * "This product includes software developed by the * Apache Software Foundation (http://www.apache.org/)." * Alternately, this acknowlegement may appear in the software itself, * if and wherever such third-party acknowlegements normally appear. * * 4. The names "The Jakarta Project", "Ant", and "Apache Software * Foundation" must not be used to endorse or promote products derived * from this software without prior written permission. For written * permission, please contact ap...@ap.... * * 5. Products derived from this software may not be called "Apache" * nor may "Apache" appear in their names without prior written * permission of the Apache Group. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * ==================================================================== * * This software consists of voluntary contributions made by many * individuals on behalf of the Apache Software Foundation. For more * information on the Apache Software Foundation, please see * <http://www.apache.org/>. */ package net.sf.antcontrib.cpptasks; import org.apache.tools.ant.*; import java.io.*; import java.util.*; import net.sf.antcontrib.cpptasks.CompilerDef; import net.sf.antcontrib.cpptasks.types.DefineSet; import net.sf.antcontrib.cpptasks.types.DefineArgument; import net.sf.antcontrib.cpptasks.types.ConditionalPath; import junit.framework.*; /** * Tests for CompilerDef class */ public class TestCompilerDef extends TestCase { public TestCompilerDef(String name) { super(name); } /** * This method tests CompilerDef.getActiveDefines * * A CompilerDef is created similar to what would be created * for * * <cc> * <defineset> * <define name="DEBUG" if="debug"/> * <define name="NDEBUG" unless="debug"/> * </defineset> * </cc> * * Then getActiveDefines is called for a project without * and with the "debug" property defined. Return value * from getActiveDefines should contain one member */ public void testGetActiveDefines() { Project project = new org.apache.tools.ant.Project(); CompilerDef def = new CompilerDef(); def.setProject(project); DefineSet defset = new DefineSet(); DefineArgument arg1 = new DefineArgument(true,"DEBUG"); arg1.setIf("debug"); defset.addDefine(arg1); DefineArgument arg2 = new DefineArgument(true,"NDEBUG"); arg2.setUnless("debug"); defset.addDefine(arg2); def.addConfiguredDefineset(defset); // // Evaluate without "debug" set // DefineArgument[] activeArgs = def.getActiveDefines(); assertEquals(1,activeArgs.length); assertEquals("NDEBUG",activeArgs[0].getName()); // // Set the "debug" property // project.setProperty("debug",""); activeArgs = def.getActiveDefines(); assertEquals(1,activeArgs.length); assertEquals("DEBUG",activeArgs[0].getName()); } /** * This method tests CompilerDef.getActiveIncludePath * * A CompilerDef is created similar to what would be created * for * * <cc> * <includepath location=".." if="debug"/> * </cc> * * and is evaluate for a project without and without "debug" set */ public void testGetActiveIncludePaths() { Project project = new org.apache.tools.ant.Project(); CompilerDef def = new CompilerDef(); def.setProject(project); ConditionalPath path = def.createIncludePath(); path.setLocation(new File("..")); path.setIf("debug"); // // Evaluate without "debug" set // String[] includePaths = def.getActiveIncludePaths(); assertEquals(0,includePaths.length); // // Set the "debug" property // project.setProperty("debug",""); includePaths= def.getActiveIncludePaths(); assertEquals(1,includePaths.length); } } --- NEW FILE: TestTargetInfo.java --- /* * The Apache Software License, Version 1.1 * * Copyright (c) 2002 The Apache Software Foundation. All rights * reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3. The end-user documentation included with the redistribution, if * any, must include the following acknowlegement: * "This product includes software developed by the * Apache Software Foundation (http://www.apache.org/)." * Alternately, this acknowlegement may appear in the software itself, * if and wherever such third-party acknowlegements normally appear. * * 4. The names "The Jakarta Project", "Ant", and "Apache Software * Foundation" must not be used to endorse or promote products derived * from this software without prior written permission. For written * permission, please contact ap...@ap.... * * 5. Products derived from this software may not be called "Apache" * nor may "Apache" appear in their names without prior written * permission of the Apache Group. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * ==================================================================== * * This software consists of voluntary contributions made by many * individuals on behalf of the Apache Software Foundation. For more * information on the Apache Software Foundation, please see * <http://www.apache.org/>. */ package net.sf.antcontrib.cpptasks; import org.apache.tools.ant.*; import java.io.*; import java.util.*; import net.sf.antcontrib.cpptasks.compiler.CompilerConfiguration; import junit.framework.*; /** * A description of a file built or to be built */ public class TestTargetInfo extends TestCase { public TestTargetInfo(String name) { super(name); } public void testConstructorNullConfig() { try { new TargetInfo(null,new File[] { new File("") }, new File(""),false); fail("Didn't throw exception"); } catch(NullPointerException ex) { } } private class DummyConfiguration implements CompilerConfiguration { public String getIdentifier() { return "dummy"; } public String getIncludePathIdentifier() { return "dummyIncludePath"; } public String[] getIncludeDirectories() { return new String[0]; } public int bid(String filename) { return 1; } public String getOutputFileName(String inputFile) { return null; } public void compile(org.apache.tools.ant.Task task, File workingDir, String[] source) throws BuildException { throw new BuildException("Not implemented"); } public boolean getRebuild() { return false; } public DependencyInfo parseIncludes(Task task, File file) { return null; } } public void testConstructorNullSource() { CompilerConfiguration config = new DummyConfiguration(); try { new TargetInfo(config,null,new File(""),false); fail("Didn't throw exception"); } catch(NullPointerException ex) { } } public void testConstructorNullOutput() { CompilerConfiguration config = new DummyConfiguration(); try { new TargetInfo(config,new File[] { new File("") },null,false); fail("Didn't throw exception"); } catch(NullPointerException ex) { } } public void testHasSameSource() { CompilerConfiguration config = new DummyConfiguration(); TargetInfo targetInfo = new TargetInfo(config,new File[] { new File("foo.bar") },new File("foo.o"),false); boolean hasSame = targetInfo.getSource(0).equals(new File("foo.bar")); assertTrue(hasSame); hasSame = targetInfo.getSource(0).equals(new File("boo.far")); assertEquals(hasSame,false); hasSame = targetInfo.getSource(0).equals(new File("FoO.BaR")); assertTrue(hasSame); } public void testGetSource() { CompilerConfiguration config = new DummyConfiguration(); TargetInfo targetInfo = new TargetInfo(config,new File[] { new File("FoO.BaR") },new File("foo.o"),false); String source = targetInfo.getSource(0).getName(); assertEquals(source,"FoO.BaR"); } public void testGetRebuild() { CompilerConfiguration config = new DummyConfiguration(); TargetInfo targetInfo = new TargetInfo(config,new File[] { new File("FoO.BaR") },new File("foo.o"),false); assertEquals(false,targetInfo.getRebuild()); targetInfo = new TargetInfo(config,new File[] { new File("FoO.BaR") },new File("foo.o"),true); assertEquals(true,targetInfo.getRebuild()); } public void testMustRebuild() { CompilerConfiguration config = new DummyConfiguration(); TargetInfo targetInfo = new TargetInfo(config,new File[] { new File("FoO.BaR") },new File("foo.o"),false); assertEquals(false,targetInfo.getRebuild()); targetInfo.mustRebuild(); assertEquals(true,targetInfo.getRebuild()); } } |