View Javadoc

1   /**
2    * Copyright (c) 2008-2012, http://www.snakeyaml.org
3    *
4    * Licensed under the Apache License, Version 2.0 (the "License");
5    * you may not use this file except in compliance with the License.
6    * You may obtain a copy of the License at
7    *
8    *     http://www.apache.org/licenses/LICENSE-2.0
9    *
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS,
12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   * See the License for the specific language governing permissions and
14   * limitations under the License.
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          // System.out.println(input);
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          // System.out.println(input);
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          // input: ...
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          // result : ...
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 }