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