xref: /aosp_15_r20/external/snakeyaml/src/test/java/org/yaml/snakeyaml/issues/issue103/MergingTest.java (revision ac2a7c1bf4e14d82f3bd566dcc2d76d5b42faf34)
1 /**
2  * Copyright (c) 2008, SnakeYAML
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
5  * in compliance with the License. You may obtain a copy of the License at
6  *
7  * http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software distributed under the License
10  * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
11  * or implied. See the License for the specific language governing permissions and limitations under
12  * the License.
13  */
14 package org.yaml.snakeyaml.issues.issue103;
15 
16 import java.util.List;
17 import java.util.Map;
18 import junit.framework.TestCase;
19 import org.yaml.snakeyaml.Util;
20 import org.yaml.snakeyaml.Yaml;
21 import org.yaml.snakeyaml.constructor.Constructor;
22 
23 public class MergingTest extends TestCase {
24 
25   @SuppressWarnings({"rawtypes", "unchecked"})
testMergeWithDefaultMap()26   public void testMergeWithDefaultMap() {
27     String input = Util.getLocalResource("issues/issue103.yaml");
28     // System.out.println(input);
29     Yaml yaml = new Yaml();
30 
31     check((Map) yaml.load(input));
32   }
33 
34   @SuppressWarnings({"unchecked", "rawtypes"})
testMergeWithFakeMap()35   public void testMergeWithFakeMap() {
36     String input = Util.getLocalResource("issues/issue103.yaml");
37     // System.out.println(input);
38     Constructor c = new Constructor() {
39       protected java.util.Map<Object, Object> createDefaultMap(int size) {
40         return new FakeMap<Object, Object>();
41       }
42     };
43 
44     Yaml yaml = new Yaml(c);
45 
46     check((FakeMap) yaml.load(input));
47   }
48 
check(Map<String, List<Map<Object, Object>>> map)49   private void check(Map<String, List<Map<Object, Object>>> map) {
50 
51     assertEquals(2, map.size());
52     assertTrue(map.containsKey("input"));
53     assertTrue(map.containsKey("result"));
54 
55     // input: ...
56     List<Map<Object, Object>> inputList = map.get("input");
57     assertEquals(4, inputList.size());
58 
59     Map<Object, Object> center = inputList.get(0);
60     assertEquals(2, center.size());
61     assertEquals(Integer.valueOf(1), center.get("x"));
62     assertEquals(Integer.valueOf(2), center.get("y"));
63 
64     Map<Object, Object> left = inputList.get(1);
65     assertEquals(2, left.size());
66     assertEquals(Integer.valueOf(0), left.get("x"));
67     assertEquals(Integer.valueOf(2), left.get("y"));
68 
69     Map<Object, Object> big = inputList.get(2);
70     assertEquals(1, big.size());
71     assertEquals(Integer.valueOf(10), big.get("r"));
72 
73     Map<Object, Object> small = inputList.get(3);
74     assertEquals(1, small.size());
75     assertEquals(Integer.valueOf(1), small.get("r"));
76 
77     // result : ...
78     List<Map<Object, Object>> resultList = map.get("result");
79     assertEquals(5, resultList.size());
80 
81     Map<Object, Object> explicitKeys = resultList.get(0);
82     assertEquals(4, explicitKeys.size());
83     assertEquals(Integer.valueOf(1), explicitKeys.get("x"));
84     assertEquals(Integer.valueOf(2), explicitKeys.get("y"));
85     assertEquals(Integer.valueOf(10), explicitKeys.get("r"));
86     assertEquals("center/big", explicitKeys.get("label"));
87 
88     Map<?, ?> merge_center = resultList.get(1);
89     assertEquals(4, merge_center.size());
90     assertEquals(Integer.valueOf(1), merge_center.get("x"));
91     assertEquals(Integer.valueOf(2), merge_center.get("y"));
92     assertEquals(Integer.valueOf(10), merge_center.get("r"));
93     assertEquals("center/big", merge_center.get("label"));
94 
95     Map<?, ?> merge_left_override = resultList.get(2);
96     assertEquals(4, merge_left_override.size());
97     assertEquals(Integer.valueOf(0), merge_left_override.get("x"));
98     assertEquals(Integer.valueOf(5), merge_left_override.get("y"));
99     assertEquals(Integer.valueOf(10), merge_left_override.get("r"));
100     assertEquals("center/big", merge_left_override.get("label"));
101 
102     Map<?, ?> merge_center_big = resultList.get(3);
103     assertEquals(4, merge_center_big.size());
104     assertEquals(Integer.valueOf(1), merge_center_big.get("x"));
105     assertEquals(Integer.valueOf(2), merge_center_big.get("y"));
106     assertEquals(Integer.valueOf(10), merge_center_big.get("r"));
107     assertEquals("center/big", merge_center_big.get("label"));
108 
109     Map<?, ?> merge_big_left_small_override = resultList.get(4);
110     assertEquals(4, merge_big_left_small_override.size());
111     assertEquals(Integer.valueOf(1), merge_big_left_small_override.get("x"));
112     assertEquals(Integer.valueOf(2), merge_big_left_small_override.get("y"));
113     assertEquals(Integer.valueOf(10), merge_big_left_small_override.get("r"));
114     assertEquals("center/big", merge_big_left_small_override.get("label"));
115   }
116 }
117