1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package examples.collections;
17
18 import java.util.LinkedHashMap;
19 import java.util.Map;
20
21 import junit.framework.TestCase;
22
23 import org.yaml.snakeyaml.Util;
24 import org.yaml.snakeyaml.Yaml;
25
26
27
28
29
30 public class TypeSafeMapTest extends TestCase {
31 public void testDumpMap() {
32 MapBean bean = new MapBean();
33 Map<String, Integer> data = new LinkedHashMap<String, Integer>();
34 data.put("aaa", 1);
35 data.put("bbb", 2);
36 data.put("zzz", 3);
37 bean.setData(data);
38 Map<String, Developer2> developers = new LinkedHashMap<String, Developer2>();
39 developers.put("team1", new Developer2("Fred", "creator"));
40 developers.put("team2", new Developer2("John", "committer"));
41 bean.setDevelopers(developers);
42 Yaml yaml = new Yaml();
43 String output = yaml.dumpAsMap(bean);
44
45 String etalon = Util.getLocalResource("examples/map-bean-10.yaml");
46 assertEquals(etalon, output);
47 }
48
49 public void testDumpMap2() {
50 MapBean bean = new MapBean();
51 Map<String, Integer> data = new LinkedHashMap<String, Integer>();
52 data.put("aaa", 1);
53 data.put("bbb", 2);
54 bean.setData(data);
55 Map<String, Developer2> developers = new LinkedHashMap<String, Developer2>();
56 developers.put("team1", new Developer2("Fred", "creator"));
57 developers.put("team2", new Developer2("John", "committer"));
58 developers.put("team3", new Developer222("Bill", "head"));
59 bean.setDevelopers(developers);
60 Yaml yaml = new Yaml();
61 String output = yaml.dumpAsMap(bean);
62
63 String etalon = Util.getLocalResource("examples/map-bean-11.yaml");
64 assertEquals(etalon, output);
65 }
66
67 public void testLoadMap() {
68 String output = Util.getLocalResource("examples/map-bean-10.yaml");
69
70 Yaml beanLoader = new Yaml();
71 MapBean parsed = beanLoader.loadAs(output, MapBean.class);
72 assertNotNull(parsed);
73 Map<String, Integer> data = parsed.getData();
74 assertEquals(3, data.size());
75 assertEquals(new Integer(1), data.get("aaa"));
76 assertEquals(new Integer(2), data.get("bbb"));
77 assertEquals(new Integer(3), data.get("zzz"));
78 Map<String, Developer2> developers = parsed.getDevelopers();
79 assertEquals(2, developers.size());
80 assertEquals("Developer must be recognised.", Developer2.class, developers.get("team1")
81 .getClass());
82 Developer2 fred = developers.get("team1");
83 assertEquals("Fred", fred.getName());
84 assertEquals("creator", fred.getRole());
85 }
86
87 public static class MapBean {
88 private Map<String, Integer> data;
89 private String name;
90 private Map<String, Developer2> developers;
91
92 public MapBean() {
93 name = "Bean123";
94 }
95
96 public Map<String, Integer> getData() {
97 return data;
98 }
99
100 public void setData(Map<String, Integer> data) {
101 this.data = data;
102 }
103
104 public String getName() {
105 return name;
106 }
107
108 public void setName(String name) {
109 this.name = name;
110 }
111
112 public Map<String, Developer2> getDevelopers() {
113 return developers;
114 }
115
116 public void setDevelopers(Map<String, Developer2> developers) {
117 this.developers = developers;
118 }
119 }
120
121 public static class Developer2 {
122 private String name;
123 private String role;
124
125 public Developer2() {
126 }
127
128 public Developer2(String name, String role) {
129 this.name = name;
130 this.role = role;
131 }
132
133 public String getName() {
134 return name;
135 }
136
137 public void setName(String name) {
138 this.name = name;
139 }
140
141 public String getRole() {
142 return role;
143 }
144
145 public void setRole(String role) {
146 this.role = role;
147 }
148 }
149
150 public static class Developer222 extends Developer2 {
151 public Developer222() {
152 super();
153 }
154
155 public Developer222(String name, String role) {
156 super(name, role);
157 }
158 }
159
160
161
162
163 @SuppressWarnings({ "unchecked", "rawtypes" })
164 public void testLoadMapWithObject() {
165 String output = Util.getLocalResource("examples/map-bean-10.yaml");
166
167 Yaml beanLoader = new Yaml();
168 MapBeanNoGenerics parsed = beanLoader.loadAs(output, MapBeanNoGenerics.class);
169 assertNotNull(parsed);
170 Map<String, Integer> data = parsed.getData();
171 assertEquals(3, data.size());
172 assertEquals(new Integer(1), data.get("aaa"));
173 assertEquals(new Integer(2), data.get("bbb"));
174 assertEquals(new Integer(3), data.get("zzz"));
175 Map developers = parsed.getDevelopers();
176 assertNotNull(developers);
177 assertEquals(2, developers.size());
178 Object o1 = developers.get("team1");
179
180 Map<String, String> developer = (Map<String, String>) o1;
181 assertEquals("Fred", developer.get("name"));
182 assertEquals("creator", developer.get("role"));
183 }
184
185 @SuppressWarnings("rawtypes")
186 public static class MapBeanNoGenerics {
187 private Map data;
188 private String name;
189 private Map developers;
190
191 public MapBeanNoGenerics() {
192 name = "Bean123";
193 }
194
195 public Map getData() {
196 return data;
197 }
198
199 public void setData(Map data) {
200 this.data = data;
201 }
202
203 public String getName() {
204 return name;
205 }
206
207 public void setName(String name) {
208 this.name = name;
209 }
210
211 public Map getDevelopers() {
212 return developers;
213 }
214
215 public void setDevelopers(Map developers) {
216 this.developers = developers;
217 }
218 }
219 }