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