001    // Copyright 2008 by Basil Vandegriend.  All rights reserved.
002    
003    package com.basilv.examples.jaxb;
004    
005    import static org.junit.Assert.assertEquals;
006    import static org.junit.Assert.assertNotNull;
007    import static org.junit.Assert.fail;
008    
009    import java.io.*;
010    
011    import javax.xml.bind.JAXBException;
012    import javax.xml.bind.annotation.*;
013    
014    import org.junit.Test;
015    
016    public class XmlBindingToolsTest
017    {
018      @XmlRootElement(name = "xmltest")
019      static class XmlTest
020      {
021        private String id;
022    
023        @XmlAttribute
024        public String getId() {
025          return id;
026        }
027    
028        public void setId(String id) {
029          this.id = id;
030        }
031    
032      }
033    
034      @Test
035      public void parseXml() throws Exception {
036    
037        String xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
038          + "<xmltest id=\"test\"/>";
039    
040        StringReader reader = new StringReader(xml);
041        XmlTest xmlTest = XmlBindingTools.parseXML(reader,
042          XmlTest.class);
043        assertNotNull(xmlTest);
044        assertEquals("test", xmlTest.getId());
045      }
046    
047      @Test
048      public void generateXml() throws Exception {
049        XmlTest xmlTest = new XmlTest();
050        xmlTest.setId("test");
051        StringWriter writer = new StringWriter();
052        XmlBindingTools.generateXML(xmlTest, writer);
053        assertEquals(
054          "<?xml version=\"1.0\" encoding=\"UTF-8\" "
055            + "standalone=\"yes\"?>\n<xmltest id=\"test\"/>\n",
056          writer.getBuffer().toString());
057      }
058    
059      @Test
060      public void parseInvalidXml() throws Exception {
061    
062        String xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
063          + "<xmltest id=\"test\"><fake/></xmltest>";
064    
065        StringReader reader = new StringReader(xml);
066        try {
067          XmlBindingTools.parseXML(reader, XmlTest.class);
068          fail("Expected Exception");
069        } catch (JAXBException e) {
070          // Expected case.
071        }
072      }
073    
074    }