1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.yaml.snakeyaml.constructor;
17
18 import java.util.Iterator;
19 import java.util.LinkedHashMap;
20 import java.util.Map;
21 import java.util.TimeZone;
22
23 import junit.framework.TestCase;
24
25 import org.yaml.snakeyaml.Yaml;
26
27 public class ConstructorTest extends TestCase {
28
29 @SuppressWarnings("unchecked")
30 public void testMapOrder() {
31 String data = "one: zzz\ntwo: ccc\nthree: bbb\nfour: aaa";
32 Object map = construct(data);
33 assertNotNull(map);
34 assertTrue(map.getClass().toString(), map instanceof LinkedHashMap);
35 Map<String, String> m = (Map<String, String>) map;
36 assertEquals(4, m.keySet().size());
37 Iterator<String> iter = m.keySet().iterator();
38 assertEquals("one", iter.next());
39 assertEquals("two", iter.next());
40 assertEquals("three", iter.next());
41 assertEquals("four", iter.next());
42 }
43
44
45
46
47 public void testGetBeanAssumeClass() {
48 String data = "--- !!org.yaml.snakeyaml.constructor.Person\nfirstName: Andrey\nage: 99";
49 Object obj = construct(data);
50 assertNotNull(obj);
51 assertTrue("Unexpected: " + obj.getClass().toString(), obj instanceof Person);
52 Person person = (Person) obj;
53 assertEquals("Andrey", person.getFirstName());
54 assertNull(person.getLastName());
55 assertEquals(99, person.getAge().intValue());
56 }
57
58
59
60
61 public void testGetConstructorBean() {
62 String data = "--- !!org.yaml.snakeyaml.constructor.Person [ Andrey, Somov, 99 ]";
63 Object obj = construct(data);
64 assertNotNull(obj);
65 assertTrue(obj.getClass().toString(), obj instanceof Person);
66 Person person = (Person) obj;
67 assertEquals("Andrey", person.getFirstName());
68 assertEquals("Somov", person.getLastName());
69 assertEquals(99, person.getAge().intValue());
70 }
71
72
73
74
75 public void testGetConstructorFromScalar() {
76 String data = "--- !!org.yaml.snakeyaml.constructor.Person 'Somov'";
77 Object obj = construct(data);
78 assertNotNull(obj);
79 assertTrue(obj.getClass().toString(), obj instanceof Person);
80 Person person = (Person) obj;
81 assertNull("Andrey", person.getFirstName());
82 assertEquals("Somov", person.getLastName());
83 assertNull(person.getAge());
84 }
85
86 public void testJavaBeanLoad() {
87 java.util.Calendar cal = java.util.Calendar.getInstance(TimeZone.getTimeZone("UTC"));
88 cal.clear();
89 cal.set(1982, 5 - 1, 3);
90
91 TestBean expected = new TestBean("Ola Bini", 24, cal.getTime());
92 assertEquals(
93 expected,
94 construct("--- !!org.yaml.snakeyaml.constructor.TestBean\nname: Ola Bini\nage: 24\nborn: 1982-05-03\n"));
95 }
96
97 public void testWrongName() {
98 try {
99 construct("--- !!org.yaml.snakeyaml.constructor.TestBean\nwrongName: No one\nage: 24\nborn: 1982-05-03\n");
100 fail("IntrospectionException expected.");
101 } catch (Exception e) {
102 assertEquals(
103 "null; Can't construct a java object for tag:yaml.org,2002:org.yaml.snakeyaml.constructor.TestBean; exception=Cannot create property=wrongName for JavaBean=#<org.jvyaml.TestBean name=\"null\" age=0 born=\"null\">; Unable to find property 'wrongName' on class: org.yaml.snakeyaml.constructor.TestBean; in 'string', line 1, column 5:\n --- !!org.yaml.snakeyaml.constructor ... \n ^",
104 e.getMessage());
105 }
106 }
107
108 private Object construct(String data) {
109 Yaml yaml = new Yaml();
110 return yaml.load(data);
111 }
112 }