View Javadoc

1   /*
2    * #%L
3    * Native ARchive plugin for Maven
4    * %%
5    * Copyright (C) 2002 - 2014 NAR Maven Plugin developers.
6    * %%
7    * Licensed under the Apache License, Version 2.0 (the "License");
8    * you may not use this file except in compliance with the License.
9    * You may obtain a copy of the License at
10   * 
11   * http://www.apache.org/licenses/LICENSE-2.0
12   * 
13   * Unless required by applicable law or agreed to in writing, software
14   * distributed under the License is distributed on an "AS IS" BASIS,
15   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16   * See the License for the specific language governing permissions and
17   * limitations under the License.
18   * #L%
19   */
20  package com.github.maven_nar.cpptasks;
21  
22  import java.io.File;
23  
24  import junit.framework.TestCase;
25  
26  import org.apache.tools.ant.BuildException;
27  
28  import com.github.maven_nar.cpptasks.compiler.CompilerConfiguration;
29  import com.github.maven_nar.cpptasks.compiler.ProgressMonitor;
30  
31  /**
32   * A description of a file built or to be built
33   */
34  public class TestTargetInfo extends TestCase {
35    private class DummyConfiguration implements CompilerConfiguration {
36      @Override
37      public int bid(final String filename) {
38        return 1;
39      }
40  
41      public void close() {
42      }
43  
44      @Override
45      public void compile(final CCTask task, final File workingDir, final String[] source, final boolean relentless,
46          final ProgressMonitor monitor) throws BuildException {
47        throw new BuildException("Not implemented");
48      }
49  
50      @Override
51      public CompilerConfiguration[] createPrecompileConfigurations(final File file, final String[] exceptFiles) {
52        return null;
53      }
54  
55      @Override
56      public String getIdentifier() {
57        return "dummy";
58      }
59  
60      public String[] getIncludeDirectories() {
61        return new String[0];
62      }
63  
64      @Override
65      public String getIncludePathIdentifier() {
66        return "dummyIncludePath";
67      }
68  
69      @Override
70      public String[] getOutputFileNames(final String inputFile, final VersionInfo versionInfo) {
71        return new String[0];
72      }
73  
74      @Override
75      public CompilerParam getParam(final String name) {
76        return null;
77      }
78  
79      @Override
80      public ProcessorParam[] getParams() {
81        return new ProcessorParam[0];
82      }
83  
84      @Override
85      public boolean getRebuild() {
86        return false;
87      }
88  
89      @Override
90      public boolean isPrecompileGeneration() {
91        return true;
92      }
93  
94      @Override
95      public DependencyInfo parseIncludes(final CCTask task, final File baseDir, final File file) {
96        return null;
97      }
98    }
99  
100   public TestTargetInfo(final String name) {
101     super(name);
102   }
103 
104   public void testConstructorNullConfig() {
105     try {
106       new TargetInfo(null, new File[] {
107         new File("")
108       }, null, new File(""), false);
109       fail("Didn't throw exception");
110     } catch (final NullPointerException ex) {
111     }
112   }
113 
114   public void testConstructorNullOutput() {
115     final CompilerConfiguration config = new DummyConfiguration();
116     try {
117       new TargetInfo(config, new File[] {
118         new File("")
119       }, null, null, false);
120       fail("Didn't throw exception");
121     } catch (final NullPointerException ex) {
122     }
123   }
124 
125   public void testConstructorNullSource() {
126     final CompilerConfiguration config = new DummyConfiguration();
127     try {
128       new TargetInfo(config, null, null, new File(""), false);
129       fail("Didn't throw exception");
130     } catch (final NullPointerException ex) {
131     }
132   }
133 
134   public void testGetRebuild() {
135     final CompilerConfiguration config = new DummyConfiguration();
136     TargetInfo targetInfo = new TargetInfo(config, new File[] {
137       new File("FoO.BaR")
138     }, null, new File("foo.o"), false);
139     assertEquals(false, targetInfo.getRebuild());
140     targetInfo = new TargetInfo(config, new File[] {
141       new File("FoO.BaR")
142     }, null, new File("foo.o"), true);
143     assertEquals(true, targetInfo.getRebuild());
144   }
145 
146   public void testGetSource() {
147     final CompilerConfiguration config = new DummyConfiguration();
148     final TargetInfo targetInfo = new TargetInfo(config, new File[] {
149       new File("FoO.BaR")
150     }, null, new File("foo.o"), false);
151     final String source = targetInfo.getSources()[0].getName();
152     assertEquals(source, "FoO.BaR");
153   }
154 
155   public void testHasSameSource() {
156     final CompilerConfiguration config = new DummyConfiguration();
157     final TargetInfo targetInfo = new TargetInfo(config, new File[] {
158       new File("foo.bar")
159     }, null, new File("foo.o"), false);
160     boolean hasSame = targetInfo.getSources()[0].equals(new File("foo.bar"));
161     assertTrue(hasSame);
162     hasSame = targetInfo.getSources()[0].equals(new File("boo.far"));
163     assertEquals(hasSame, false);
164   }
165 
166   public void testMustRebuild() {
167     final CompilerConfiguration config = new DummyConfiguration();
168     final TargetInfo targetInfo = new TargetInfo(config, new File[] {
169       new File("FoO.BaR")
170     }, null, new File("foo.o"), false);
171     assertEquals(false, targetInfo.getRebuild());
172     targetInfo.mustRebuild();
173     assertEquals(true, targetInfo.getRebuild());
174   }
175 }