/* * #%L * Native ARchive plugin for Maven * %% * Copyright (C) 2002 - 2014 NAR Maven Plugin developers. * %% * 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. * #L% */ package com.github.maven_nar.cpptasks; import java.io.File; import junit.framework.TestCase; import org.apache.tools.ant.BuildException; import com.github.maven_nar.cpptasks.compiler.CompilerConfiguration; import com.github.maven_nar.cpptasks.compiler.ProgressMonitor; /** * A description of a file built or to be built */ public class TestTargetInfo extends TestCase { private class DummyConfiguration implements CompilerConfiguration { @Override public int bid(final String filename) { return 1; } public void close() { } @Override public void compile(final CCTask task, final File workingDir, final String[] source, final boolean relentless, final ProgressMonitor monitor) throws BuildException { throw new BuildException("Not implemented"); } @Override public CompilerConfiguration[] createPrecompileConfigurations(final File file, final String[] exceptFiles) { return null; } @Override public String getIdentifier() { return "dummy"; } public String[] getIncludeDirectories() { return new String[0]; } @Override public String getIncludePathIdentifier() { return "dummyIncludePath"; } @Override public String[] getOutputFileNames(final String inputFile, final VersionInfo versionInfo) { return new String[0]; } @Override public CompilerParam getParam(final String name) { return null; } @Override public ProcessorParam[] getParams() { return new ProcessorParam[0]; } @Override public boolean getRebuild() { return false; } @Override public boolean isPrecompileGeneration() { return true; } @Override public DependencyInfo parseIncludes(final CCTask task, final File baseDir, final File file) { return null; } } public TestTargetInfo(final String name) { super(name); } public void testConstructorNullConfig() { try { new TargetInfo(null, new File[] { new File("") }, null, new File(""), false); fail("Didn't throw exception"); } catch (final NullPointerException ex) { } } public void testConstructorNullOutput() { final CompilerConfiguration config = new DummyConfiguration(); try { new TargetInfo(config, new File[] { new File("") }, null, null, false); fail("Didn't throw exception"); } catch (final NullPointerException ex) { } } public void testConstructorNullSource() { final CompilerConfiguration config = new DummyConfiguration(); try { new TargetInfo(config, null, null, new File(""), false); fail("Didn't throw exception"); } catch (final NullPointerException ex) { } } public void testGetRebuild() { final CompilerConfiguration config = new DummyConfiguration(); TargetInfo targetInfo = new TargetInfo(config, new File[] { new File("FoO.BaR") }, null, new File("foo.o"), false); assertEquals(false, targetInfo.getRebuild()); targetInfo = new TargetInfo(config, new File[] { new File("FoO.BaR") }, null, new File("foo.o"), true); assertEquals(true, targetInfo.getRebuild()); } public void testGetSource() { final CompilerConfiguration config = new DummyConfiguration(); final TargetInfo targetInfo = new TargetInfo(config, new File[] { new File("FoO.BaR") }, null, new File("foo.o"), false); final String source = targetInfo.getSources()[0].getName(); assertEquals(source, "FoO.BaR"); } public void testHasSameSource() { final CompilerConfiguration config = new DummyConfiguration(); final TargetInfo targetInfo = new TargetInfo(config, new File[] { new File("foo.bar") }, null, new File("foo.o"), false); boolean hasSame = targetInfo.getSources()[0].equals(new File("foo.bar")); assertTrue(hasSame); hasSame = targetInfo.getSources()[0].equals(new File("boo.far")); assertEquals(hasSame, false); } public void testMustRebuild() { final CompilerConfiguration config = new DummyConfiguration(); final TargetInfo targetInfo = new TargetInfo(config, new File[] { new File("FoO.BaR") }, null, new File("foo.o"), false); assertEquals(false, targetInfo.getRebuild()); targetInfo.mustRebuild(); assertEquals(true, targetInfo.getRebuild()); } }