001    /*
002     *   Copyright (C) Christian Schulte, 2005-206
003     *   All rights reserved.
004     *
005     *   Redistribution and use in source and binary forms, with or without
006     *   modification, are permitted provided that the following conditions
007     *   are met:
008     *
009     *     o Redistributions of source code must retain the above copyright
010     *       notice, this list of conditions and the following disclaimer.
011     *
012     *     o Redistributions in binary form must reproduce the above copyright
013     *       notice, this list of conditions and the following disclaimer in
014     *       the documentation and/or other materials provided with the
015     *       distribution.
016     *
017     *   THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
018     *   INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
019     *   AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
020     *   THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY DIRECT, INDIRECT,
021     *   INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
022     *   NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
023     *   DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
024     *   THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
025     *   (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
026     *   THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
027     *
028     *   $JOMC: MergeModulesTaskTest.java 3879 2011-10-24 00:59:27Z schulte2005 $
029     *
030     */
031    package org.jomc.ant.test;
032    
033    import org.apache.tools.ant.BuildException;
034    import org.apache.tools.ant.Project;
035    import org.jomc.ant.MergeModulesTask;
036    import org.jomc.ant.test.support.AntExecutionResult;
037    import static org.jomc.ant.test.support.Assert.assertException;
038    import static org.jomc.ant.test.support.Assert.assertExceptionMessage;
039    import static org.jomc.ant.test.support.Assert.assertExceptionMessageContaining;
040    import static org.jomc.ant.test.support.Assert.assertMessageLogged;
041    import static org.jomc.ant.test.support.Assert.assertMessageLoggedContaining;
042    import static org.jomc.ant.test.support.Assert.assertNoException;
043    import org.junit.Test;
044    import static org.junit.Assert.assertNotNull;
045    import static org.junit.Assert.fail;
046    
047    /**
048     * Test cases for class {@code org.jomc.ant.MergeModulesTask}.
049     *
050     * @author <a href="mailto:schulte2005@users.sourceforge.net">Christian Schulte</a>
051     * @version $JOMC: MergeModulesTaskTest.java 3879 2011-10-24 00:59:27Z schulte2005 $
052     */
053    public class MergeModulesTaskTest extends JomcModelTaskTest
054    {
055    
056        /** Creates a new {@code MergeModulesTaskTest} instance. */
057        public MergeModulesTaskTest()
058        {
059            super();
060        }
061    
062        /** {@inheritDoc} */
063        @Override
064        public MergeModulesTask getJomcTask()
065        {
066            return (MergeModulesTask) super.getJomcTask();
067        }
068    
069        /** {@inheritDoc} */
070        @Override
071        protected MergeModulesTask newJomcTask()
072        {
073            return new MergeModulesTask();
074        }
075    
076        /** {@inheritDoc} */
077        @Override
078        protected String getBuildFileName()
079        {
080            return "merge-modules-test.xml";
081        }
082    
083        @Test
084        public final void testMissingModuleFile() throws Exception
085        {
086            final AntExecutionResult r = this.executeTarget( "test-missing-module-file" );
087            assertException( r, BuildException.class );
088            assertExceptionMessage( r, "Mandatory attribute 'moduleFile' is missing a value." );
089        }
090    
091        @Test
092        public final void testMissingModuleName() throws Exception
093        {
094            final AntExecutionResult r = this.executeTarget( "test-missing-module-name" );
095            assertException( r, BuildException.class );
096            assertExceptionMessage( r, "Mandatory attribute 'moduleName' is missing a value." );
097        }
098    
099        @Test
100        public final void testExclusionMissingModuleName() throws Exception
101        {
102            final AntExecutionResult r = this.executeTarget( "test-exclusion-missing-module-name" );
103            assertException( r, BuildException.class );
104            assertExceptionMessage( r, "Mandatory attribute 'name' is missing a value." );
105        }
106    
107        @Test
108        public final void testInclusionMissingModuleName() throws Exception
109        {
110            final AntExecutionResult r = this.executeTarget( "test-inclusion-missing-module-name" );
111            assertException( r, BuildException.class );
112            assertExceptionMessage( r, "Mandatory attribute 'name' is missing a value." );
113        }
114    
115        @Test
116        public final void testMergeModules() throws Exception
117        {
118            final AntExecutionResult r = this.executeTarget( "test-merge-modules" );
119            assertNoException( r );
120            assertMessageLoggedContaining( r, "Writing", Project.MSG_INFO );
121        }
122    
123        @Test
124        public final void testMergeModulesWithNoopStylesheet() throws Exception
125        {
126            final AntExecutionResult r = this.executeTarget( "test-merge-modules-with-no-op-stylesheet" );
127            assertNoException( r );
128            assertMessageLoggedContaining( r, "Writing", Project.MSG_INFO );
129        }
130    
131        @Test
132        public final void testMergeModulesWithRedundantResources() throws Exception
133        {
134            final AntExecutionResult r = this.executeTarget( "test-merge-modules-with-redundant-resources" );
135            assertNoException( r );
136            assertMessageLoggedContaining( r, "Writing", Project.MSG_INFO );
137        }
138    
139        @Test
140        public final void testMergeModulesWithIllegalTransformationResultStylesheet() throws Exception
141        {
142            final AntExecutionResult r =
143                this.executeTarget( "test-merge-modules-with-illegal-transformation-result-stylesheet" );
144    
145            assertException( r, BuildException.class );
146            assertExceptionMessageContaining( r, "Illegal transformation result" );
147        }
148    
149        @Test
150        public final void testMergeModulesUnsupportedResource() throws Exception
151        {
152            final AntExecutionResult r = this.executeTarget( "test-merge-modules-unsupported-resource" );
153            assertNoException( r );
154            assertMessageLoggedContaining( r, "not supported.", Project.MSG_WARN );
155        }
156    
157        @Test
158        public final void testMergeModulesExclusion() throws Exception
159        {
160            final AntExecutionResult r = this.executeTarget( "test-merge-modules-exclusion" );
161            assertNoException( r );
162            assertMessageLogged( r, "Excluding module 'JOMC Ant Tasks Tests'.", Project.MSG_INFO );
163        }
164    
165        @Test
166        public final void testMergeModulesInclusion() throws Exception
167        {
168            final AntExecutionResult r = this.executeTarget( "test-merge-modules-inclusion" );
169            assertNoException( r );
170            assertMessageLogged( r, "Including module 'JOMC Ant Tasks Tests'.", Project.MSG_INFO );
171        }
172    
173        @Test
174        public final void testMergeModulesAllAttributes() throws Exception
175        {
176            final AntExecutionResult r = this.executeTarget( "test-merge-modules-all-attributes" );
177            assertNoException( r );
178            assertMessageLoggedContaining( r, "Writing", Project.MSG_INFO );
179        }
180    
181        @Test
182        public final void testIsModuleExcluded() throws Exception
183        {
184            try
185            {
186                this.getJomcTask().isModuleExcluded( null );
187                fail( "Expected 'NullPointerException' not thrown." );
188            }
189            catch ( final NullPointerException e )
190            {
191                assertNotNull( e.getMessage() );
192                System.out.println( e );
193            }
194        }
195    
196        @Test
197        public final void testIsModuleIncluded() throws Exception
198        {
199            try
200            {
201                this.getJomcTask().isModuleIncluded( null );
202                fail( "Expected 'NullPointerException' not thrown." );
203            }
204            catch ( final NullPointerException e )
205            {
206                assertNotNull( e.getMessage() );
207                System.out.println( e );
208            }
209        }
210    
211    }