View Javadoc

1   package org.codehaus.modello.core;
2   
3   /*
4    * Copyright (c) 2004, Jason van Zyl
5    *
6    * Permission is hereby granted, free of charge, to any person obtaining a copy of
7    * this software and associated documentation files (the "Software"), to deal in
8    * the Software without restriction, including without limitation the rights to
9    * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
10   * of the Software, and to permit persons to whom the Software is furnished to do
11   * so, subject to the following conditions:
12   *
13   * The above copyright notice and this permission notice shall be included in all
14   * copies or substantial portions of the Software.
15   *
16   * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17   * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18   * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19   * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20   * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21   * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22   * SOFTWARE.
23   */
24  
25  import org.codehaus.modello.ModelloRuntimeException;
26  import org.codehaus.plexus.PlexusTestCase;
27  
28  /**
29   * @author <a href="mailto:trygvis@inamo.no">Trygve Laugst&oslash;l</a>
30   */
31  public class DefaultModelloCoreTest
32      extends PlexusTestCase
33  {
34      public void testModelWithDuplicateClasses()
35          throws Exception
36      {
37          ModelloCore modello = (ModelloCore) lookup( ModelloCore.ROLE );
38  
39          try
40          {
41              modello.loadModel( getTestFile( "src/test/resources/models/duplicate-classes.mdo" ) );
42  
43              fail( "Expected ModelloRuntimeException." );
44          }
45          catch( ModelloRuntimeException ex )
46          {
47              assertEquals( "Duplicate class: MyClass.", ex.getMessage() );
48          }
49      }
50  
51      public void testModelWithDuplicateFields()
52          throws Exception
53      {
54          ModelloCore modello = (ModelloCore) lookup( ModelloCore.ROLE );
55  
56          try
57          {
58              modello.loadModel( getTestFile( "src/test/resources/models/duplicate-fields.mdo" ) );
59  
60              fail( "Expected ModelloRuntimeException." );
61          }
62          catch( ModelloRuntimeException ex )
63          {
64              assertEquals( "Duplicate field in MyClass: MyField.", ex.getMessage() );
65          }
66      }
67  
68      public void testModelWithDuplicateAssociations()
69          throws Exception
70      {
71          ModelloCore modello = (ModelloCore) lookup( ModelloCore.ROLE );
72  
73          try
74          {
75              modello.loadModel( getTestFile( "src/test/resources/models/duplicate-associations.mdo" ) );
76  
77              fail( "Expected ModelloRuntimeException." );
78          }
79          catch( ModelloRuntimeException ex )
80          {
81              assertEquals( "Duplicate field in MyClass: MyAssociation.", ex.getMessage() );
82          }
83      }
84      
85      public void testRecursion() throws Exception
86      {
87          ModelloCore modello = (ModelloCore) lookup( ModelloCore.ROLE );
88          
89          modello.loadModel( getTestFile( "src/test/resources/models/recursion.mdo" ) ); 
90      }
91  }