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: DefaultModelProviderTest.java 4613 2012-09-22 10:07:08Z schulte $
029 *
030 */
031package org.jomc.model.modlet.test;
032
033import org.jomc.model.ModelObject;
034import org.jomc.model.modlet.DefaultModelProvider;
035import org.jomc.modlet.Model;
036import org.jomc.modlet.ModelContext;
037import org.jomc.modlet.ModelContextFactory;
038import org.junit.Test;
039import static org.junit.Assert.assertEquals;
040import static org.junit.Assert.assertFalse;
041import static org.junit.Assert.assertNotNull;
042import static org.junit.Assert.assertNull;
043import static org.junit.Assert.assertTrue;
044import static org.junit.Assert.fail;
045
046/**
047 * Test cases for class {@code org.jomc.model.modlet.DefaultModelProcessor}.
048 *
049 * @author <a href="mailto:cs@schulte.it">Christian Schulte</a> 1.0
050 * @version $JOMC: DefaultModelProviderTest.java 4613 2012-09-22 10:07:08Z schulte $
051 */
052public class DefaultModelProviderTest
053{
054
055    /** The {@code DefaultModelProvider} instance tests are performed with. */
056    private DefaultModelProvider defaultModelProvider;
057
058    /** Creates a new {@code DefaultModelProviderTest} instance. */
059    public DefaultModelProviderTest()
060    {
061        super();
062    }
063
064    /**
065     * Gets the {@code DefaultModelProvider} instance tests are performed with.
066     *
067     * @return The {@code DefaultModelProvider} instance tests are performed with.
068     *
069     * @see #newModelProvider()
070     */
071    public DefaultModelProvider getModelProvider()
072    {
073        if ( this.defaultModelProvider == null )
074        {
075            this.defaultModelProvider = this.newModelProvider();
076        }
077
078        return this.defaultModelProvider;
079    }
080
081    /**
082     * Creates a new {@code DefaultModelProvider} instance to test.
083     *
084     * @return A new {@code DefaultModelProvider} instance to test.
085     *
086     * @see #getModelProvider()
087     */
088    protected DefaultModelProvider newModelProvider()
089    {
090        return new DefaultModelProvider();
091    }
092
093    @Test
094    public final void testFindModules() throws Exception
095    {
096        final ModelContext context = ModelContextFactory.newInstance().newModelContext();
097
098        try
099        {
100            this.getModelProvider().findModules( null, null, null );
101            fail( "Expected NullPointerException not thrown." );
102        }
103        catch ( final NullPointerException e )
104        {
105            assertNotNull( e.getMessage() );
106            System.out.println( e );
107        }
108
109        try
110        {
111            this.getModelProvider().findModules( context, null, null );
112            fail( "Expected NullPointerException not thrown." );
113        }
114        catch ( final NullPointerException e )
115        {
116            assertNotNull( e.getMessage() );
117            System.out.println( e );
118        }
119
120        try
121        {
122            this.getModelProvider().findModules( context, "TEST", null );
123            fail( "Expected NullPointerException not thrown." );
124        }
125        catch ( final NullPointerException e )
126        {
127            assertNotNull( e.getMessage() );
128            System.out.println( e );
129        }
130
131        DefaultModelProvider.setDefaultModuleLocation( null );
132        this.getModelProvider().setModuleLocation( null );
133        assertEquals( 1, this.getModelProvider().findModules(
134            context, ModelObject.MODEL_PUBLIC_ID, DefaultModelProvider.getDefaultModuleLocation() ).getModule().size() );
135
136        assertEquals( 1, this.getModelProvider().findModules(
137            context, ModelObject.MODEL_PUBLIC_ID, this.getModelProvider().getModuleLocation() ).getModule().size() );
138
139        DefaultModelProvider.setDefaultModuleLocation( "DOES_NOT_EXIST" );
140        this.getModelProvider().setModuleLocation( "DOES_NOT_EXIST" );
141
142        assertNull( this.getModelProvider().findModules(
143            context, ModelObject.MODEL_PUBLIC_ID, DefaultModelProvider.getDefaultModuleLocation() ) );
144
145        assertNull( this.getModelProvider().findModules(
146            context, ModelObject.MODEL_PUBLIC_ID, this.getModelProvider().getModuleLocation() ) );
147
148        DefaultModelProvider.setDefaultModuleLocation( null );
149        this.getModelProvider().setModuleLocation( null );
150    }
151
152    @Test
153    public final void testFindModel() throws Exception
154    {
155        final ModelContext context = ModelContextFactory.newInstance().newModelContext();
156        final Model model = new Model();
157        model.setIdentifier( ModelObject.MODEL_PUBLIC_ID );
158
159        try
160        {
161            this.getModelProvider().findModel( null, model );
162            fail( "Expected NullPointerException not thrown." );
163        }
164        catch ( final NullPointerException e )
165        {
166            assertNotNull( e.getMessage() );
167            System.out.println( e.toString() );
168        }
169
170        try
171        {
172            this.getModelProvider().findModel( context, null );
173            fail( "Expected NullPointerException not thrown." );
174        }
175        catch ( final NullPointerException e )
176        {
177            assertNotNull( e.getMessage() );
178            System.out.println( e.toString() );
179        }
180
181        assertNotNull( this.getModelProvider().findModel( context, model ) );
182    }
183
184    @Test
185    public final void testDefaultEnabled() throws Exception
186    {
187        System.clearProperty( "org.jomc.model.DefaultModelProvider.defaultEnabled" );
188        System.clearProperty( "org.jomc.model.modlet.DefaultModelProvider.defaultEnabled" );
189        DefaultModelProvider.setDefaultEnabled( null );
190        assertTrue( DefaultModelProvider.isDefaultEnabled() );
191
192        System.setProperty( "org.jomc.model.DefaultModelProvider.defaultEnabled", Boolean.toString( false ) );
193        DefaultModelProvider.setDefaultEnabled( null );
194        assertFalse( DefaultModelProvider.isDefaultEnabled() );
195        System.clearProperty( "org.jomc.model.DefaultModelProvider.defaultEnabled" );
196        DefaultModelProvider.setDefaultEnabled( null );
197        assertTrue( DefaultModelProvider.isDefaultEnabled() );
198
199        System.setProperty( "org.jomc.model.modlet.DefaultModelProvider.defaultEnabled", Boolean.toString( false ) );
200        DefaultModelProvider.setDefaultEnabled( null );
201        assertFalse( DefaultModelProvider.isDefaultEnabled() );
202        System.clearProperty( "org.jomc.model.modlet.DefaultModelProvider.defaultEnabled" );
203        DefaultModelProvider.setDefaultEnabled( null );
204        assertTrue( DefaultModelProvider.isDefaultEnabled() );
205
206        System.setProperty( "org.jomc.model.DefaultModelProvider.defaultEnabled", Boolean.toString( true ) );
207        System.setProperty( "org.jomc.model.modlet.DefaultModelProvider.defaultEnabled", Boolean.toString( false ) );
208        DefaultModelProvider.setDefaultEnabled( null );
209        assertFalse( DefaultModelProvider.isDefaultEnabled() );
210        System.clearProperty( "org.jomc.model.modlet.DefaultModelProvider.defaultEnabled" );
211        DefaultModelProvider.setDefaultEnabled( null );
212        assertTrue( DefaultModelProvider.isDefaultEnabled() );
213        System.clearProperty( "org.jomc.model.DefaultModelProvider.defaultEnabled" );
214        DefaultModelProvider.setDefaultEnabled( null );
215        assertTrue( DefaultModelProvider.isDefaultEnabled() );
216    }
217
218    @Test
219    public final void testEnabled() throws Exception
220    {
221        final Model model = new Model();
222        model.setIdentifier( ModelObject.MODEL_PUBLIC_ID );
223
224        DefaultModelProvider.setDefaultEnabled( null );
225        this.getModelProvider().setEnabled( null );
226        assertTrue( this.getModelProvider().isEnabled() );
227
228        this.getModelProvider().findModel( ModelContextFactory.newInstance().newModelContext(), model );
229        DefaultModelProvider.setDefaultEnabled( false );
230        this.getModelProvider().setEnabled( null );
231        assertFalse( this.getModelProvider().isEnabled() );
232
233        this.getModelProvider().findModel( ModelContextFactory.newInstance().newModelContext(), model );
234        DefaultModelProvider.setDefaultEnabled( null );
235        this.getModelProvider().setEnabled( null );
236    }
237
238    @Test
239    public final void testDefaultModuleLocation() throws Exception
240    {
241        System.clearProperty( "org.jomc.model.DefaultModelProvider.defaultModuleLocation" );
242        System.clearProperty( "org.jomc.model.modlet.DefaultModelProvider.defaultModuleLocation" );
243        DefaultModelProvider.setDefaultModuleLocation( null );
244        assertEquals( "META-INF/jomc.xml", DefaultModelProvider.getDefaultModuleLocation() );
245
246        System.setProperty( "org.jomc.model.DefaultModelProvider.defaultModuleLocation", "TEST" );
247        DefaultModelProvider.setDefaultModuleLocation( null );
248        assertEquals( "TEST", DefaultModelProvider.getDefaultModuleLocation() );
249        System.clearProperty( "org.jomc.model.DefaultModelProvider.defaultModuleLocation" );
250        DefaultModelProvider.setDefaultModuleLocation( null );
251        assertEquals( "META-INF/jomc.xml", DefaultModelProvider.getDefaultModuleLocation() );
252
253        System.setProperty( "org.jomc.model.modlet.DefaultModelProvider.defaultModuleLocation", "TEST" );
254        DefaultModelProvider.setDefaultModuleLocation( null );
255        assertEquals( "TEST", DefaultModelProvider.getDefaultModuleLocation() );
256        System.clearProperty( "org.jomc.model.modlet.DefaultModelProvider.defaultModuleLocation" );
257        DefaultModelProvider.setDefaultModuleLocation( null );
258        assertEquals( "META-INF/jomc.xml", DefaultModelProvider.getDefaultModuleLocation() );
259
260        System.setProperty( "org.jomc.model.DefaultModelProvider.defaultModuleLocation", "DEPRECATED" );
261        System.setProperty( "org.jomc.model.modlet.DefaultModelProvider.defaultModuleLocation", "TEST" );
262        DefaultModelProvider.setDefaultModuleLocation( null );
263        assertEquals( "TEST", DefaultModelProvider.getDefaultModuleLocation() );
264        System.clearProperty( "org.jomc.model.modlet.DefaultModelProvider.defaultModuleLocation" );
265        DefaultModelProvider.setDefaultModuleLocation( null );
266        assertEquals( "DEPRECATED", DefaultModelProvider.getDefaultModuleLocation() );
267        System.clearProperty( "org.jomc.model.DefaultModelProvider.defaultModuleLocation" );
268        DefaultModelProvider.setDefaultModuleLocation( null );
269        assertEquals( "META-INF/jomc.xml", DefaultModelProvider.getDefaultModuleLocation() );
270    }
271
272    @Test
273    public final void testModuleLocation() throws Exception
274    {
275        DefaultModelProvider.setDefaultModuleLocation( null );
276        this.getModelProvider().setModuleLocation( null );
277        assertNotNull( this.getModelProvider().getModuleLocation() );
278
279        DefaultModelProvider.setDefaultModuleLocation( "TEST" );
280        this.getModelProvider().setModuleLocation( null );
281        assertEquals( "TEST", this.getModelProvider().getModuleLocation() );
282
283        DefaultModelProvider.setDefaultModuleLocation( null );
284        this.getModelProvider().setModuleLocation( null );
285    }
286
287    @Test
288    public final void testDefaultValidating() throws Exception
289    {
290        System.clearProperty( "org.jomc.model.modlet.DefaultModelProvider.defaultValidating" );
291        DefaultModelProvider.setDefaultValidating( null );
292        assertTrue( DefaultModelProvider.isDefaultValidating() );
293        DefaultModelProvider.setDefaultValidating( null );
294        System.setProperty( "org.jomc.model.modlet.DefaultModelProvider.defaultValidating", "false" );
295        assertFalse( DefaultModelProvider.isDefaultValidating() );
296        System.clearProperty( "org.jomc.model.modlet.DefaultModelProvider.defaultValidating" );
297        DefaultModelProvider.setDefaultValidating( null );
298        assertTrue( DefaultModelProvider.isDefaultValidating() );
299    }
300
301    @Test
302    public final void testValidating() throws Exception
303    {
304        DefaultModelProvider.setDefaultValidating( null );
305        this.getModelProvider().setValidating( null );
306        assertTrue( this.getModelProvider().isValidating() );
307
308        DefaultModelProvider.setDefaultValidating( false );
309        this.getModelProvider().setValidating( null );
310        assertFalse( this.getModelProvider().isValidating() );
311
312        DefaultModelProvider.setDefaultValidating( null );
313        this.getModelProvider().setValidating( null );
314    }
315
316}