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: ValidateClasspathTaskTest.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.ClassProcessingException;
036    import org.jomc.ant.ValidateClasspathTask;
037    import org.jomc.ant.test.support.AntExecutionResult;
038    import static org.jomc.ant.test.support.Assert.assertException;
039    import static org.jomc.ant.test.support.Assert.assertExceptionMessage;
040    import static org.jomc.ant.test.support.Assert.assertMessageLogged;
041    import static org.jomc.ant.test.support.Assert.assertMessageNotLogged;
042    import static org.jomc.ant.test.support.Assert.assertNoException;
043    import org.junit.Test;
044    
045    /**
046     * Test cases for class {@code org.jomc.ant.ValidateClasspathTask}.
047     *
048     * @author <a href="mailto:schulte2005@users.sourceforge.net">Christian Schulte</a>
049     * @version $JOMC: ValidateClasspathTaskTest.java 3879 2011-10-24 00:59:27Z schulte2005 $
050     */
051    public class ValidateClasspathTaskTest extends ClassFileProcessorTaskTest
052    {
053    
054        /** Creates a new {@code ValidateClasspathTaskTest} instance. */
055        public ValidateClasspathTaskTest()
056        {
057            super();
058        }
059    
060        /** {@inheritDoc} */
061        @Override
062        public ValidateClasspathTask getJomcTask()
063        {
064            return (ValidateClasspathTask) super.getJomcTask();
065        }
066    
067        /** {@inheritDoc} */
068        @Override
069        protected ValidateClasspathTask newJomcTask()
070        {
071            return new ValidateClasspathTask();
072        }
073    
074        /** {@inheritDoc} */
075        @Override
076        protected String getBuildFileName()
077        {
078            return "validate-classpath-test.xml";
079        }
080    
081        @Test
082        public final void testSpecificationNotFound() throws Exception
083        {
084            final AntExecutionResult r = this.executeTarget( "test-specification-not-found" );
085            assertNoException( r );
086            assertMessageLogged( r, "Specification 'DOES NOT EXIST' not found.", Project.MSG_WARN );
087        }
088    
089        @Test
090        public final void testImplementationNotFound() throws Exception
091        {
092            final AntExecutionResult r = this.executeTarget( "test-implementation-not-found" );
093            assertNoException( r );
094            assertMessageLogged( r, "Implementation 'DOES NOT EXIST' not found.", Project.MSG_WARN );
095        }
096    
097        @Test
098        public final void testModuleNotFound() throws Exception
099        {
100            final AntExecutionResult r = this.executeTarget( "test-module-not-found" );
101            assertNoException( r );
102            assertMessageLogged( r, "Module 'DOES NOT EXIST' not found.", Project.MSG_WARN );
103        }
104    
105        @Test
106        public final void testClassProcessingDisabled() throws Exception
107        {
108            final AntExecutionResult r = this.executeTarget( "test-class-processing-disabled" );
109            assertNoException( r );
110            assertMessageLogged( r, "Class file processing disabled.", Project.MSG_INFO );
111        }
112    
113        @Test
114        public final void testValidateAntTasks() throws Exception
115        {
116            final AntExecutionResult r = this.executeTarget( "test-validate-ant-tasks" );
117            assertNoException( r );
118        }
119    
120        @Test
121        public final void testValidateAntTasksWithRedundantResources() throws Exception
122        {
123            final AntExecutionResult r = this.executeTarget( "test-validate-ant-tasks-with-redundant-resources" );
124            assertNoException( r );
125        }
126    
127        @Test
128        public final void testValidateIllegalAntTasks() throws Exception
129        {
130            final AntExecutionResult r = this.executeTarget( "test-validate-illegal-ant-tasks" );
131            assertException( r, ClassProcessingException.class );
132        }
133    
134        @Test
135        public final void testValidateOneSpecification() throws Exception
136        {
137            final AntExecutionResult r = this.executeTarget( "test-validate-one-specification" );
138            assertNoException( r );
139            assertMessageNotLogged( r, "Specification 'org.jomc.ant.test.JomcTask' not found." );
140        }
141    
142        @Test
143        public final void testValidateOneIllegalSpecification() throws Exception
144        {
145            final AntExecutionResult r = this.executeTarget( "test-validate-one-illegal-specification" );
146            assertException( r, ClassProcessingException.class );
147        }
148    
149        @Test
150        public final void testValidateOneImplementation() throws Exception
151        {
152            final AntExecutionResult r = this.executeTarget( "test-validate-one-implementation" );
153            assertNoException( r );
154            assertMessageNotLogged( r, "Implementation 'org.jomc.ant.test.JomcToolTask' not found." );
155        }
156    
157        @Test
158        public final void testValidateOneIllegalImplementation() throws Exception
159        {
160            final AntExecutionResult r = this.executeTarget( "test-validate-one-illegal-implementation" );
161            assertException( r, ClassProcessingException.class );
162        }
163    
164        @Test
165        public final void testValidateOneModule() throws Exception
166        {
167            final AntExecutionResult r = this.executeTarget( "test-validate-one-module" );
168            assertNoException( r );
169            assertMessageNotLogged( r, "Module 'JOMC Ant Tasks Tests' not found." );
170        }
171    
172        @Test
173        public final void testValidateOneIllegalModule() throws Exception
174        {
175            final AntExecutionResult r = this.executeTarget( "test-validate-one-illegal-module" );
176            assertException( r, ClassProcessingException.class );
177        }
178    
179        @Test
180        public final void testValidateAntTasksWithClasspathref() throws Exception
181        {
182            final AntExecutionResult r = this.executeTarget( "test-validate-ant-tasks-with-classpathref" );
183            assertNoException( r );
184        }
185    
186        @Test
187        public final void testValidateAntTasksWithNestedClasspath() throws Exception
188        {
189            final AntExecutionResult r = this.executeTarget( "test-validate-ant-tasks-with-nested-classpath" );
190            assertNoException( r );
191        }
192    
193        @Test
194        public final void testValidateAntTasksAllAttributes() throws Exception
195        {
196            final AntExecutionResult r = this.executeTarget( "test-validate-ant-tasks-all-attributes" );
197            assertNoException( r );
198        }
199    
200        @Test
201        public final void testValidateAntTasksBrokenModel() throws Exception
202        {
203            final AntExecutionResult r = this.executeTarget( "test-validate-ant-tasks-broken-model" );
204            assertException( r, ClassProcessingException.class );
205        }
206    
207    }