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.ContainerConfiguration;
27  import org.codehaus.plexus.PlexusConstants;
28  import org.codehaus.plexus.PlexusTestCase;
29  
30  /**
31   * @author <a href="mailto:trygvis@inamo.no">Trygve Laugst&oslash;l</a>
32   */
33  public class DefaultModelloCoreTest extends PlexusTestCase {
34      public void testModelWithDuplicateClasses() throws Exception {
35          ModelloCore modello = (ModelloCore) lookup(ModelloCore.ROLE);
36  
37          try {
38              modello.loadModel(getTestFile("src/test/resources/models/duplicate-classes.mdo"));
39  
40              fail("Expected ModelloRuntimeException.");
41          } catch (ModelloRuntimeException ex) {
42              assertEquals("Duplicate class: MyClass.", ex.getMessage());
43          }
44      }
45  
46      public void testModelWithDuplicateFields() throws Exception {
47          ModelloCore modello = (ModelloCore) lookup(ModelloCore.ROLE);
48  
49          try {
50              modello.loadModel(getTestFile("src/test/resources/models/duplicate-fields.mdo"));
51  
52              fail("Expected ModelloRuntimeException.");
53          } catch (ModelloRuntimeException ex) {
54              assertEquals("Duplicate field in MyClass: MyField.", ex.getMessage());
55          }
56      }
57  
58      public void testModelWithDuplicateAssociations() throws Exception {
59          ModelloCore modello = (ModelloCore) lookup(ModelloCore.ROLE);
60  
61          try {
62              modello.loadModel(getTestFile("src/test/resources/models/duplicate-associations.mdo"));
63  
64              fail("Expected ModelloRuntimeException.");
65          } catch (ModelloRuntimeException ex) {
66              assertEquals("Duplicate field in MyClass: MyAssociation.", ex.getMessage());
67          }
68      }
69  
70      public void testRecursion() throws Exception {
71          ModelloCore modello = (ModelloCore) lookup(ModelloCore.ROLE);
72  
73          modello.loadModel(getTestFile("src/test/resources/models/recursion.mdo"));
74      }
75  
76      @Override
77      protected void customizeContainerConfiguration(ContainerConfiguration configuration) {
78          configuration.setAutoWiring(true);
79          configuration.setClassPathScanning(PlexusConstants.SCANNING_INDEX);
80      }
81  }