blob: 32ae6d6aad701488e773216405626745a9a4d647 [file] [log] [blame]
package org.yaml.snakeyaml.constructor;
/*
* See LICENSE file in distribution for copyright and licensing information.
*/
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.TimeZone;
import junit.framework.TestCase;
import org.yaml.snakeyaml.Yaml;
public class ConstructorTest extends TestCase {
@SuppressWarnings("unchecked")
public void testMapOrder() {
String data = "one: zzz\ntwo: ccc\nthree: bbb\nfour: aaa";
Object map = construct(data);
assertNotNull(map);
assertTrue(map.getClass().toString(), map instanceof LinkedHashMap);
Map<String, String> m = (Map<String, String>) map;
assertEquals(4, m.keySet().size());
Iterator<String> iter = m.keySet().iterator();
assertEquals("one", iter.next());
assertEquals("two", iter.next());
assertEquals("three", iter.next());
assertEquals("four", iter.next());
}
/**
* create JavaBean
*/
public void testGetBeanAssumeClass() {
String data = "--- !!org.yaml.snakeyaml.constructor.Person\nfirstName: Andrey\nage: 99";
Object obj = construct(data);
assertNotNull(obj);
assertTrue("Unexpected: " + obj.getClass().toString(), obj instanceof Person);
Person person = (Person) obj;
assertEquals("Andrey", person.getFirstName());
assertNull(person.getLastName());
assertEquals(99, person.getAge().intValue());
}
/**
* create instance using constructor arguments
*/
public void testGetConstructorBean() {
String data = "--- !!org.yaml.snakeyaml.constructor.Person [ Andrey, Somov, 99 ]";
Object obj = construct(data);
assertNotNull(obj);
assertTrue(obj.getClass().toString(), obj instanceof Person);
Person person = (Person) obj;
assertEquals("Andrey", person.getFirstName());
assertEquals("Somov", person.getLastName());
assertEquals(99, person.getAge().intValue());
}
/**
* create instance using scalar argument
*/
public void testGetConstructorFromScalar() {
String data = "--- !!org.yaml.snakeyaml.constructor.Person 'Somov'";
Object obj = construct(data);
assertNotNull(obj);
assertTrue(obj.getClass().toString(), obj instanceof Person);
Person person = (Person) obj;
assertNull("Andrey", person.getFirstName());
assertEquals("Somov", person.getLastName());
assertNull(person.getAge());
}
public void testJavaBeanLoad() {
java.util.Calendar cal = java.util.Calendar.getInstance(TimeZone.getTimeZone("UTC"));
cal.clear();
cal.set(1982, 5 - 1, 3); // Java's months are zero-based...
TestBean expected = new TestBean("Ola Bini", 24, cal.getTime());
assertEquals(
expected,
construct("--- !!org.yaml.snakeyaml.constructor.TestBean\nname: Ola Bini\nage: 24\nborn: 1982-05-03\n"));
}
public void testWrongName() {
try {
construct("--- !!org.yaml.snakeyaml.constructor.TestBean\nwrongName: No one\nage: 24\nborn: 1982-05-03\n");
fail("IntrospectionException expected.");
} catch (Exception e) {
assertEquals(
"null; Can't construct a java object for tag:yaml.org,2002:org.yaml.snakeyaml.constructor.TestBean; exception=org.yaml.snakeyaml.error.YAMLException: Unable to find property 'wrongName' on class: org.yaml.snakeyaml.constructor.TestBean",
e.getMessage());
}
}
private Object construct(String data) {
Yaml yaml = new Yaml();
return yaml.load(data);
}
}