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: MergeModletsTaskTest.java 4613 2012-09-22 10:07:08Z schulte $
029 *
030 */
031package org.jomc.ant.test;
032
033import org.apache.tools.ant.BuildException;
034import org.apache.tools.ant.Project;
035import org.jomc.ant.MergeModletsTask;
036import org.jomc.ant.test.support.AntExecutionResult;
037import static org.jomc.ant.test.support.Assert.assertException;
038import static org.jomc.ant.test.support.Assert.assertExceptionMessage;
039import static org.jomc.ant.test.support.Assert.assertExceptionMessageContaining;
040import static org.jomc.ant.test.support.Assert.assertMessageLogged;
041import static org.jomc.ant.test.support.Assert.assertMessageLoggedContaining;
042import static org.jomc.ant.test.support.Assert.assertNoException;
043import org.junit.Test;
044import static org.junit.Assert.assertNotNull;
045import static org.junit.Assert.fail;
046
047/**
048 * Test cases for class {@code org.jomc.ant.MergeModletsTask}.
049 *
050 * @author <a href="mailto:cs@schulte.it">Christian Schulte</a>
051 * @version $JOMC: MergeModletsTaskTest.java 4613 2012-09-22 10:07:08Z schulte $
052 */
053public class MergeModletsTaskTest extends JomcTaskTest
054{
055
056    /** Creates a new {@code MergeModletsTaskTest} instance. */
057    public MergeModletsTaskTest()
058    {
059        super();
060    }
061
062    /** {@inheritDoc} */
063    @Override
064    public MergeModletsTask getJomcTask()
065    {
066        return (MergeModletsTask) super.getJomcTask();
067    }
068
069    /** {@inheritDoc} */
070    @Override
071    protected MergeModletsTask newJomcTask()
072    {
073        return new MergeModletsTask();
074    }
075
076    /** {@inheritDoc} */
077    @Override
078    protected String getBuildFileName()
079    {
080        return "merge-modlets-test.xml";
081    }
082
083    @Test
084    public final void testMissingModletFile() throws Exception
085    {
086        final AntExecutionResult r = this.executeTarget( "test-missing-modlet-file" );
087        assertException( r, BuildException.class );
088        assertExceptionMessage( r, "Mandatory attribute 'modletFile' is missing a value." );
089    }
090
091    @Test
092    public final void testMissingModletName() throws Exception
093    {
094        final AntExecutionResult r = this.executeTarget( "test-missing-modlet-name" );
095        assertException( r, BuildException.class );
096        assertExceptionMessage( r, "Mandatory attribute 'modletName' is missing a value." );
097    }
098
099    @Test
100    public final void testExclusionMissingModletName() throws Exception
101    {
102        final AntExecutionResult r = this.executeTarget( "test-exclusion-missing-modlet-name" );
103        assertException( r, BuildException.class );
104        assertExceptionMessage( r, "Mandatory attribute 'name' is missing a value." );
105    }
106
107    @Test
108    public final void testInclusionMissingModletName() throws Exception
109    {
110        final AntExecutionResult r = this.executeTarget( "test-inclusion-missing-modlet-name" );
111        assertException( r, BuildException.class );
112        assertExceptionMessage( r, "Mandatory attribute 'name' is missing a value." );
113    }
114
115    @Test
116    public final void testModletResourceMissingLocation() throws Exception
117    {
118        final AntExecutionResult r = this.executeTarget( "test-modlet-resource-missing-locatiom" );
119        assertException( r, BuildException.class );
120        assertExceptionMessage( r, "Mandatory attribute 'location' is missing a value." );
121    }
122
123    @Test
124    public final void testMergeModlets() throws Exception
125    {
126        final AntExecutionResult r = this.executeTarget( "test-merge-modlets" );
127        assertNoException( r );
128        assertMessageLoggedContaining( r, "Writing" );
129    }
130
131    @Test
132    public final void testMergeModletsWithNoopStylesheet() throws Exception
133    {
134        final AntExecutionResult r = this.executeTarget( "test-merge-modlets-with-no-op-stylesheet" );
135        assertNoException( r );
136        assertMessageLoggedContaining( r, "Writing" );
137    }
138
139    @Test
140    public final void testMergeModletsWithRedundantResources() throws Exception
141    {
142        final AntExecutionResult r = this.executeTarget( "test-merge-modlets-with-redundant-resources" );
143        assertNoException( r );
144        assertMessageLoggedContaining( r, "Writing" );
145    }
146
147    @Test
148    public final void testMergeModletsWithIllegalTransformationResultStylesheet() throws Exception
149    {
150        final AntExecutionResult r =
151            this.executeTarget( "test-merge-modlets-with-illegal-transformation-result-stylesheet" );
152
153        assertException( r, BuildException.class );
154        assertExceptionMessageContaining( r, "Illegal transformation result" );
155    }
156
157    @Test
158    public final void testMergeModletsUnsupportedResource() throws Exception
159    {
160        final AntExecutionResult r = this.executeTarget( "test-merge-modlets-unsupported-resource" );
161        assertNoException( r );
162        assertMessageLoggedContaining( r, "not supported.", Project.MSG_WARN );
163    }
164
165    @Test
166    public final void testMergeModletsExclusion() throws Exception
167    {
168        final AntExecutionResult r = this.executeTarget( "test-merge-modlets-exclusion" );
169        assertNoException( r );
170        assertMessageLogged( r, "Excluding modlet 'JOMC Ant Tasks Tests'.", Project.MSG_INFO );
171    }
172
173    @Test
174    public final void testMergeModletsInclusion() throws Exception
175    {
176        final AntExecutionResult r = this.executeTarget( "test-merge-modlets-inclusion" );
177        assertNoException( r );
178        assertMessageLogged( r, "Including modlet 'JOMC Ant Tasks Tests'.", Project.MSG_INFO );
179    }
180
181    @Test
182    public final void testMergeModletsAllAttributes() throws Exception
183    {
184        final AntExecutionResult r = this.executeTarget( "test-merge-modlets-all-attributes" );
185        assertNoException( r );
186        assertMessageLoggedContaining( r, "Writing", Project.MSG_INFO );
187    }
188
189    @Test
190    public final void testIsModletExcluded() throws Exception
191    {
192        try
193        {
194            this.getJomcTask().isModletExcluded( null );
195            fail( "Expected 'NullPointerException' not thrown." );
196        }
197        catch ( final NullPointerException e )
198        {
199            assertNotNull( e.getMessage() );
200            System.out.println( e );
201        }
202    }
203
204    @Test
205    public final void testIsModletIncluded() throws Exception
206    {
207        try
208        {
209            this.getJomcTask().isModletIncluded( null );
210            fail( "Expected 'NullPointerException' not thrown." );
211        }
212        catch ( final NullPointerException e )
213        {
214            assertNotNull( e.getMessage() );
215            System.out.println( e );
216        }
217    }
218
219}