public void testKnownTypes() throws Exception {
Map<String, XmlType> knownTypes = new EnunciateFreemarkerModel().loadKnownTypes();
//JAXB 2.0 Spec, section 8.5.1:
XmlType knownType = knownTypes.get(Boolean.TYPE.getName());
assertNotNull("The primitive boolean type should be a known type.", knownType);
assertEquals("http://www.w3.org/2001/XMLSchema", knownType.getNamespace());
assertEquals("boolean", knownType.getName());
knownType = knownTypes.get(Byte.TYPE.getName());
assertNotNull("The primitive byte type should be a known type.", knownType);
assertEquals("http://www.w3.org/2001/XMLSchema", knownType.getNamespace());
assertEquals("byte", knownType.getName());
knownType = knownTypes.get(Short.TYPE.getName());
assertNotNull("The primitive short type should be a known type.", knownType);
assertEquals("http://www.w3.org/2001/XMLSchema", knownType.getNamespace());
assertEquals("short", knownType.getName());
knownType = knownTypes.get(Integer.TYPE.getName());
assertNotNull("The primitive int type should be a known type.", knownType);
assertEquals("http://www.w3.org/2001/XMLSchema", knownType.getNamespace());
assertEquals("int", knownType.getName());
knownType = knownTypes.get(Long.TYPE.getName());
assertNotNull("The primitive long type should be a known type.", knownType);
assertEquals("http://www.w3.org/2001/XMLSchema", knownType.getNamespace());
assertEquals("long", knownType.getName());
knownType = knownTypes.get(Float.TYPE.getName());
assertNotNull("The primitive float type should be a known type.", knownType);
assertEquals("http://www.w3.org/2001/XMLSchema", knownType.getNamespace());
assertEquals("float", knownType.getName());
knownType = knownTypes.get(Double.TYPE.getName());
assertNotNull("The primitive double type should be a known type.", knownType);
assertEquals("http://www.w3.org/2001/XMLSchema", knownType.getNamespace());
assertEquals("double", knownType.getName());
knownType = knownTypes.get(Boolean.class.getName());
assertNotNull("The boolean wrapper class should be a known type.", knownType);
assertEquals("http://www.w3.org/2001/XMLSchema", knownType.getNamespace());
assertEquals("boolean", knownType.getName());
knownType = knownTypes.get(Byte.class.getName());
assertNotNull("The byte wrapper class should be a known type.", knownType);
assertEquals("http://www.w3.org/2001/XMLSchema", knownType.getNamespace());
assertEquals("byte", knownType.getName());
knownType = knownTypes.get(Short.class.getName());
assertNotNull("The short wrapper class should be a known type.", knownType);
assertEquals("http://www.w3.org/2001/XMLSchema", knownType.getNamespace());
assertEquals("short", knownType.getName());
knownType = knownTypes.get(Integer.class.getName());
assertNotNull("The integer wrapper class should be a known type.", knownType);
assertEquals("http://www.w3.org/2001/XMLSchema", knownType.getNamespace());
assertEquals("int", knownType.getName());
knownType = knownTypes.get(Long.class.getName());
assertNotNull("The long wrapper class should be a known type.", knownType);
assertEquals("http://www.w3.org/2001/XMLSchema", knownType.getNamespace());
assertEquals("long", knownType.getName());
knownType = knownTypes.get(Float.class.getName());
assertNotNull("The float wrapper class should be a known type.", knownType);
assertEquals("http://www.w3.org/2001/XMLSchema", knownType.getNamespace());
assertEquals("float", knownType.getName());
knownType = knownTypes.get(Double.class.getName());
assertNotNull("The double wrapper class should be a known type.", knownType);
assertEquals("http://www.w3.org/2001/XMLSchema", knownType.getNamespace());
assertEquals("double", knownType.getName());
//JAXB 2.0 Spec, section 8.5.2:
knownType = knownTypes.get(String.class.getName());
assertNotNull("java.lang.String should have a known type.", knownType);
assertEquals("http://www.w3.org/2001/XMLSchema", knownType.getNamespace());
assertEquals("string", knownType.getName());
knownType = knownTypes.get(java.math.BigInteger.class.getName());
assertNotNull("java.math.BigInteger should have a known type.", knownType);
assertEquals("http://www.w3.org/2001/XMLSchema", knownType.getNamespace());
assertEquals("integer", knownType.getName());
knownType = knownTypes.get(java.math.BigDecimal.class.getName());
assertNotNull("java.math.BigDecimal should have a known type.", knownType);
assertEquals("http://www.w3.org/2001/XMLSchema", knownType.getNamespace());
assertEquals("decimal", knownType.getName());
knownType = knownTypes.get(java.util.Calendar.class.getName());
assertNotNull("java.util.Calendar should have a known type.", knownType);
assertEquals("http://www.w3.org/2001/XMLSchema", knownType.getNamespace());
assertEquals("dateTime", knownType.getName());
knownType = knownTypes.get(java.util.Date.class.getName());
assertNotNull("java.util.Date should have a known type.", knownType);
assertEquals("http://www.w3.org/2001/XMLSchema", knownType.getNamespace());
assertEquals("dateTime", knownType.getName());
knownType = knownTypes.get(javax.xml.namespace.QName.class.getName());
assertNotNull("javax.xml.namespace.QName should have a known type.", knownType);
assertEquals("http://www.w3.org/2001/XMLSchema", knownType.getNamespace());
assertEquals("QName", knownType.getName());
knownType = knownTypes.get(java.net.URI.class.getName());
assertNotNull("java.net.URI should have a known type.", knownType);
assertEquals("http://www.w3.org/2001/XMLSchema", knownType.getNamespace());
assertEquals("string", knownType.getName());
knownType = knownTypes.get(javax.xml.datatype.XMLGregorianCalendar.class.getName());
assertNotNull("javax.xml.datatype.XMLGregorianCalendar should have a known type.", knownType);
assertEquals("http://www.w3.org/2001/XMLSchema", knownType.getNamespace());
assertEquals("dateTime", knownType.getName());
knownType = knownTypes.get(javax.xml.datatype.Duration.class.getName());
assertNotNull("javax.xml.datatype.Duration should have a known type.", knownType);
assertEquals("http://www.w3.org/2001/XMLSchema", knownType.getNamespace());
assertEquals("duration", knownType.getName());
knownType = knownTypes.get(java.lang.Object.class.getName());
assertNotNull("java.lang.Object should have a known type.", knownType);
assertEquals("http://www.w3.org/2001/XMLSchema", knownType.getNamespace());
assertEquals("anyType", knownType.getName());
knownType = knownTypes.get(java.awt.Image.class.getName());
assertNotNull("java.awt.Image should have a known type.", knownType);
assertEquals("http://www.w3.org/2001/XMLSchema", knownType.getNamespace());
assertEquals("base64Binary", knownType.getName());
knownType = knownTypes.get(javax.xml.transform.Source.class.getName());
assertNotNull("javax.xml.transform.Source should have a known type.", knownType);
assertEquals("http://www.w3.org/2001/XMLSchema", knownType.getNamespace());
assertEquals("base64Binary", knownType.getName());
knownType = knownTypes.get(java.util.UUID.class.getName());
assertNotNull("java.util.UUID should have a known type.", knownType);
assertEquals("http://www.w3.org/2001/XMLSchema", knownType.getNamespace());
assertEquals("string", knownType.getName());
knownType = knownTypes.get("javax.activation.DataHandler");
assertNotNull("javax.activation.DataHandler should have a known type.", knownType);
assertEquals("http://www.w3.org/2001/XMLSchema", knownType.getNamespace());
assertEquals("base64Binary", knownType.getName());
knownType = knownTypes.get(byte[].class.getName());
assertNotNull("byte[] should have a known type.", knownType);
assertEquals("http://www.w3.org/2001/XMLSchema", knownType.getNamespace());
assertEquals("base64Binary", knownType.getName());
}