1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one
3    * or more contributor license agreements.  See the NOTICE file
4    * distributed with this work for additional information
5    * regarding copyright ownership.  The ASF licenses this file
6    * to you under the Apache License, Version 2.0 (the
7    * "License"); you may not use this file except in compliance
8    * with the License.  You may obtain a copy of the License at
9    *
10   *   http://www.apache.org/licenses/LICENSE-2.0
11   *
12   * Unless required by applicable law or agreed to in writing,
13   * software distributed under the License is distributed on an
14   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15   * KIND, either express or implied.  See the License for the
16   * specific language governing permissions and limitations
17   * under the License.
18   */
19  package org.apache.maven.plugin.eclipse;
20  
21  import java.util.ArrayList;
22  import java.util.List;
23  
24  import junit.framework.TestCase;
25  
26  /**
27   * Test class for EclipseSourceDir
28   * 
29   * @author <a href="mailto:baerrach@apache.org">Barrie Treloar</a>
30   * @version $Id: EclipseSourceDirTest.java 779831 2009-05-29 04:00:14Z baerrach $
31   */
32  public class EclipseSourceDirTest
33      extends TestCase
34  {
35      private EclipseSourceDir testFixture_src_main_java() {
36          List includes = new ArrayList();
37          includes.add( EclipsePlugin.JAVA_FILE_PATTERN );
38          return new EclipseSourceDir( "/src/main/java", null, false, false, includes, null, false );
39      }
40  
41      private EclipseSourceDir testFixture_src_main_resources() {
42          List excludes = new ArrayList();
43          excludes.add( EclipsePlugin.JAVA_FILE_PATTERN );
44          return new EclipseSourceDir( "/src/main/resources", "target/classes", true, false, null, excludes, false );
45      }
46  
47      private EclipseSourceDir testFixture_src_test_java() {
48          List includes = new ArrayList();
49          includes.add( EclipsePlugin.JAVA_FILE_PATTERN );
50          return new EclipseSourceDir( "/src/test/java", "target/test-classes", false, true, includes, null, false );
51      }
52  
53      private EclipseSourceDir testFixture_src_test_resources() {
54          List excludes = new ArrayList();
55          excludes.add( EclipsePlugin.JAVA_FILE_PATTERN );
56          return new EclipseSourceDir( "/src/test/resources", "target/test-classes", true, true, null, excludes, false );
57      }
58      
59      /**
60       * A merge with a source directory and a resource directory results in:
61       * <ul>
62       * <li>source directory
63       * <li>includes is empty
64       * <li>excludes is empty
65       * </ul>
66       * @throws Exception
67       */
68      public void testMerge_src_main_java_with_src_main_resources() throws Exception
69      {
70          EclipseSourceDir src_main_java = testFixture_src_main_java();
71          EclipseSourceDir src_main_resources = testFixture_src_main_resources();
72          
73          src_main_java.merge( src_main_resources );
74          assertEquals( "source /src/main/java: output=null, include=[], exclude=[], test=false, filtering=false", src_main_java.toString());
75      }
76      
77      public void testMerge_two_resource_directories() throws Exception {
78          EclipseSourceDir resource1 = testFixture_src_main_resources();
79          EclipseSourceDir resource2 = testFixture_src_main_resources();
80          
81          resource1.getInclude().add( "**/*.txt" );
82          resource1.getExclude().add( "**/*.svn" );
83          
84          resource2.getInclude().add( "**/*.xml" );
85          resource2.getExclude().add( "**/*.cvs" );
86          
87          resource1.merge( resource2 );
88          
89          assertEquals( "resource /src/main/resources: output=target/classes, include=[**/*.txt|**/*.xml], exclude=[**/*.java|**/*.svn|**/*.cvs], test=false, filtering=false", resource1.toString());        
90      }
91      
92      public void testMerge_two_resource_directories_with_duplicates() throws Exception {
93          EclipseSourceDir resource1 = testFixture_src_main_resources();
94          EclipseSourceDir resource2 = testFixture_src_main_resources();
95          
96          resource1.getInclude().add( "**/*.dup" );
97          resource1.getInclude().add( "**/*.txt" );
98          resource1.getExclude().add( "**/*.svn" );
99          resource1.getExclude().add( "**/*~" );
100         
101         resource2.getInclude().add( "**/*.xml" );
102         resource2.getInclude().add( "**/*.dup" );
103         resource2.getExclude().add( "**/*.cvs" );
104         resource2.getExclude().add( "**/*~" );
105 
106         resource1.merge( resource2 );
107         
108         assertEquals( "resource /src/main/resources: output=target/classes, include=[**/*.dup|**/*.txt|**/*.xml], exclude=[**/*.java|**/*.svn|**/*~|**/*.cvs], test=false, filtering=false", resource1.toString());        
109     }
110 
111 
112     public void testToString_src_main_java()
113     {
114         EclipseSourceDir objectUnderTest = testFixture_src_main_java();
115         
116         assertEquals( "source /src/main/java: output=null, include=[**/*.java], exclude=[], test=false, filtering=false", objectUnderTest.toString());
117     }
118     
119     public void testToString_src_main_resources()
120     {
121         EclipseSourceDir objectUnderTest = testFixture_src_main_resources();
122         
123         assertEquals( "resource /src/main/resources: output=target/classes, include=[], exclude=[**/*.java], test=false, filtering=false", objectUnderTest.toString());
124     }
125     
126     public void testToString_src_test_java()
127     {
128         EclipseSourceDir objectUnderTest = testFixture_src_test_java();
129         
130         assertEquals( "source /src/test/java: output=target/test-classes, include=[**/*.java], exclude=[], test=true, filtering=false", objectUnderTest.toString());
131     }
132     
133     public void testToString_src_test_resources()
134     {
135         EclipseSourceDir objectUnderTest = testFixture_src_test_resources();
136         
137         assertEquals( "resource /src/test/resources: output=target/test-classes, include=[], exclude=[**/*.java], test=true, filtering=false", objectUnderTest.toString());
138     }    
139     
140 
141 }