View Javadoc
1   package org.codehaus.mojo.jaxb2.schemageneration.postprocessing.javadoc.enums;
2   
3   import org.codehaus.mojo.jaxb2.schemageneration.postprocessing.javadoc.AbstractSourceCodeAwareNodeProcessingTest;
4   import org.codehaus.mojo.jaxb2.schemageneration.postprocessing.javadoc.JavaDocRenderer;
5   import org.codehaus.mojo.jaxb2.schemageneration.postprocessing.javadoc.NoAuthorJavaDocRenderer;
6   import org.codehaus.mojo.jaxb2.schemageneration.postprocessing.javadoc.SomewhatNamedPerson;
7   import org.codehaus.mojo.jaxb2.schemageneration.postprocessing.javadoc.XsdAnnotationProcessor;
8   import org.junit.Assert;
9   import org.junit.Test;
10  import org.w3c.dom.Document;
11  import org.w3c.dom.Node;
12  import org.xmlunit.builder.DiffBuilder;
13  import org.xmlunit.diff.Diff;
14  import se.jguru.shared.algorithms.api.resources.PropertyResources;
15  
16  import javax.xml.bind.JAXBContext;
17  import javax.xml.bind.Marshaller;
18  import java.io.StringWriter;
19  import java.util.ArrayList;
20  import java.util.Arrays;
21  import java.util.List;
22  
23  /**
24   * @author <a href="mailto:lj@jguru.se">Lennart J&ouml;relid</a>, jGuru Europe AB
25   */
26  public class XsdAnnotationProcessorAndEnumsTest extends AbstractSourceCodeAwareNodeProcessingTest
27  {
28  
29      // Shared state
30      private JavaDocRenderer renderer = new NoAuthorJavaDocRenderer();
31  
32      @Test
33      public void validateGeneratedXmlForEnums() throws Exception
34      {
35  
36          // Assemble
37          final String expected = PropertyResources.readFully(
38                  "testdata/schemageneration/javadoc/expectedRawExampleEnumHolder.xml" );
39          final ExampleEnumHolder exampleEnumHolder = new ExampleEnumHolder();
40          exampleEnumHolder.getCoins().addAll( Arrays.asList( AmericanCoin.values() ) );
41          exampleEnumHolder.getFoodPreferences().addAll( Arrays.asList( FoodPreference.values() ) );
42  
43          final StringWriter out = new StringWriter();
44  
45          // Act
46          final JAXBContext context = JAXBContext.newInstance( FoodPreference.class, ExampleEnumHolder.class );
47          final Marshaller marshaller = context.createMarshaller();
48          marshaller.setProperty( Marshaller.JAXB_FORMATTED_OUTPUT, true );
49          marshaller.setProperty( Marshaller.JAXB_ENCODING, "UTF-8" );
50          marshaller.marshal( exampleEnumHolder, out );
51          out.close();
52  
53          // Assert
54          final Diff diff = DiffBuilder.compare( expected ).withTest(
55                  out.toString() ).ignoreWhitespace().ignoreComments().build();
56          Assert.assertFalse( diff.hasDifferences() );
57          // XmlTestUtils.compareXmlIgnoringWhitespace( expected, out.toString() );
58      }
59  
60      @Test
61      public void validateHandlingXmlElementWrapperDocumentation() throws Exception
62      {
63  
64          // Assmeble
65          final Document document = namespace2DocumentMap.get( SomewhatNamedPerson.NAMESPACE );
66          final Node rootNode = document.getFirstChild();
67  
68          final XsdAnnotationProcessor unitUnderTest = new XsdAnnotationProcessor( docs, renderer );
69  
70          // Act
71          process( rootNode, true, unitUnderTest );
72  
73          // Assert
74          final String processed = printDocument( document );
75          System.out.println( "Got: " + processed );
76  
77  
78          // Act
79  
80          // Assert
81      }
82  
83      /**
84       * {@inheritDoc}
85       */
86      @SuppressWarnings( "unchecked" )
87      @Override
88      protected List<Class<?>> getJaxbAnnotatedClassesForJaxbContext()
89      {
90  
91          final List<Class<?>> toReturn = new ArrayList<Class<?>>();
92          for ( Class<?> current : Arrays.asList( FoodPreference.class, ExampleEnumHolder.class, AmericanCoin.class ) )
93          {
94              toReturn.add( current );
95          }
96  
97          return toReturn;
98      }
99  }