001// Copyright 2008 by Basil Vandegriend.  All rights reserved.
002
003package com.basilv.examples.jaxb;
004
005import static org.junit.Assert.assertEquals;
006import static org.junit.Assert.assertNotNull;
007import static org.junit.Assert.fail;
008
009import java.io.*;
010
011import javax.xml.bind.JAXBException;
012import javax.xml.bind.annotation.*;
013
014import org.junit.Test;
015
016public 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}