1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.yaml.snakeyaml.issues.issue103;
18
19 import java.util.List;
20 import java.util.Map;
21
22 import junit.framework.TestCase;
23
24 import org.yaml.snakeyaml.Util;
25 import org.yaml.snakeyaml.Yaml;
26 import org.yaml.snakeyaml.constructor.Constructor;
27
28 public class MergingTest extends TestCase {
29
30 @SuppressWarnings({ "rawtypes", "unchecked" })
31 public void testMergeWithDefaultMap() {
32 String input = Util.getLocalResource("issues/issue103.yaml");
33
34 Yaml yaml = new Yaml();
35
36 check((Map) yaml.load(input));
37 }
38
39 @SuppressWarnings({ "unchecked", "rawtypes" })
40 public void testMergeWithFakeMap() {
41 String input = Util.getLocalResource("issues/issue103.yaml");
42
43 Constructor c = new Constructor() {
44 protected java.util.Map<Object, Object> createDefaultMap() {
45 return new FakeMap<Object, Object>();
46 }
47 };
48
49 Yaml yaml = new Yaml(c);
50
51 check((FakeMap) yaml.load(input));
52 }
53
54 private void check(Map<String, List<Map<Object, Object>>> map) {
55
56 assertEquals(2, map.size());
57 assertTrue(map.containsKey("input"));
58 assertTrue(map.containsKey("result"));
59
60
61 List<Map<Object, Object>> inputList = map.get("input");
62 assertEquals(4, inputList.size());
63
64 Map<Object, Object> center = inputList.get(0);
65 assertEquals(2, center.size());
66 assertEquals(Integer.valueOf(1), center.get("x"));
67 assertEquals(Integer.valueOf(2), center.get("y"));
68
69 Map<Object, Object> left = inputList.get(1);
70 assertEquals(2, left.size());
71 assertEquals(Integer.valueOf(0), left.get("x"));
72 assertEquals(Integer.valueOf(2), left.get("y"));
73
74 Map<Object, Object> big = inputList.get(2);
75 assertEquals(1, big.size());
76 assertEquals(Integer.valueOf(10), big.get("r"));
77
78 Map<Object, Object> small = inputList.get(3);
79 assertEquals(1, small.size());
80 assertEquals(Integer.valueOf(1), small.get("r"));
81
82
83 List<Map<Object, Object>> resultList = map.get("result");
84 assertEquals(5, resultList.size());
85
86 Map<Object, Object> explicitKeys = resultList.get(0);
87 assertEquals(4, explicitKeys.size());
88 assertEquals(Integer.valueOf(1), explicitKeys.get("x"));
89 assertEquals(Integer.valueOf(2), explicitKeys.get("y"));
90 assertEquals(Integer.valueOf(10), explicitKeys.get("r"));
91 assertEquals("center/big", explicitKeys.get("label"));
92
93 Map<?, ?> merge_center = resultList.get(1);
94 assertEquals(4, merge_center.size());
95 assertEquals(Integer.valueOf(1), merge_center.get("x"));
96 assertEquals(Integer.valueOf(2), merge_center.get("y"));
97 assertEquals(Integer.valueOf(10), merge_center.get("r"));
98 assertEquals("center/big", merge_center.get("label"));
99
100 Map<?, ?> merge_left_override = resultList.get(2);
101 assertEquals(4, merge_left_override.size());
102 assertEquals(Integer.valueOf(0), merge_left_override.get("x"));
103 assertEquals(Integer.valueOf(5), merge_left_override.get("y"));
104 assertEquals(Integer.valueOf(10), merge_left_override.get("r"));
105 assertEquals("center/big", merge_left_override.get("label"));
106
107 Map<?, ?> merge_center_big = resultList.get(3);
108 assertEquals(4, merge_center_big.size());
109 assertEquals(Integer.valueOf(1), merge_center_big.get("x"));
110 assertEquals(Integer.valueOf(2), merge_center_big.get("y"));
111 assertEquals(Integer.valueOf(10), merge_center_big.get("r"));
112 assertEquals("center/big", merge_center_big.get("label"));
113
114 Map<?, ?> merge_big_left_small_override = resultList.get(4);
115 assertEquals(4, merge_big_left_small_override.size());
116 assertEquals(Integer.valueOf(1), merge_big_left_small_override.get("x"));
117 assertEquals(Integer.valueOf(2), merge_big_left_small_override.get("y"));
118 assertEquals(Integer.valueOf(10), merge_big_left_small_override.get("r"));
119 assertEquals("center/big", merge_big_left_small_override.get("label"));
120 }
121 }