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: ModelObjectTest.java 3851 2011-10-10 16:25:09Z schulte2005 $
029     *
030     */
031    package org.jomc.model.test;
032    
033    import java.util.ArrayList;
034    import java.util.List;
035    import javax.xml.bind.JAXBElement;
036    import javax.xml.namespace.QName;
037    import org.jomc.model.ModelObject;
038    import org.junit.Test;
039    import static org.junit.Assert.assertNotNull;
040    import static org.junit.Assert.fail;
041    
042    /**
043     * Test cases for class {@code org.jomc.model.ModelObject}.
044     *
045     * @author <a href="mailto:schulte2005@users.sourceforge.net">Christian Schulte</a> 1.0
046     * @version $JOMC: ModelObjectTest.java 3851 2011-10-10 16:25:09Z schulte2005 $
047     */
048    public class ModelObjectTest
049    {
050    
051        /** Creates a new {@code ModelObjectTest} instance. */
052        public ModelObjectTest()
053        {
054            super();
055        }
056    
057        /** Test {@code ModelObject}. */
058        public static class TestModelObject extends ModelObject
059        {
060    
061            @Override
062            @SuppressWarnings( "deprecation" )
063            public JAXBElement getAnyElement( final List<Object> any, final String namespaceURI, final String localPart )
064            {
065                return super.getAnyElement( any, namespaceURI, localPart );
066            }
067    
068            @Override
069            public <T> JAXBElement<T> getAnyElement( final List<Object> any, final String namespaceURI,
070                                                     final String localPart, final Class<T> type )
071            {
072                return super.getAnyElement( any, namespaceURI, localPart, type );
073            }
074    
075            @Override
076            public <T> T getAnyObject( final List<Object> any, final Class<T> clazz )
077            {
078                return super.getAnyObject( any, clazz );
079            }
080    
081        }
082    
083        @Test
084        public final void testGetAnyElement() throws Exception
085        {
086            final TestModelObject modelObject = new TestModelObject();
087            final List<Object> any = new ArrayList<Object>( 10 );
088            final QName name = new QName( "http://jomc.org/model", "test" );
089            final JAXBElement<Object> element = new JAXBElement<Object>( name, Object.class, null, null );
090            any.add( element );
091            any.add( element );
092    
093            try
094            {
095                modelObject.getAnyElement( any, "http://jomc.org/model", "test" );
096                fail( "Expected 'IllegalStateException' not thrown." );
097            }
098            catch ( final IllegalStateException e )
099            {
100                assertNotNull( e.getMessage() );
101                System.out.println( e );
102            }
103    
104            try
105            {
106                modelObject.getAnyElement( any, "http://jomc.org/model", "test", Object.class );
107                fail( "Expected 'IllegalStateException' not thrown." );
108            }
109            catch ( final IllegalStateException e )
110            {
111                assertNotNull( e.getMessage() );
112                System.out.println( e );
113            }
114        }
115    
116        @Test
117        public final void testGetAnyObject() throws Exception
118        {
119            final TestModelObject modelObject = new TestModelObject();
120            final List<Object> any = new ArrayList<Object>( 10 );
121            any.add( "TEST" );
122            any.add( "TEST" );
123    
124            try
125            {
126                modelObject.getAnyObject( any, String.class );
127                fail( "Expected 'IllegalStateException' not thrown." );
128            }
129            catch ( final IllegalStateException e )
130            {
131                assertNotNull( e.getMessage() );
132                System.out.println( e );
133            }
134        }
135    
136    }