blob: e55c0a9259043fd0a118afe3b6bb833115841307 [file] [log] [blame]
/**
* Copyright (c) 2008-2011, http://www.snakeyaml.org
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.yaml.snakeyaml.issues.issue103;
import java.util.List;
import java.util.Map;
import java.util.Set;
import junit.framework.TestCase;
import org.yaml.snakeyaml.Util;
import org.yaml.snakeyaml.Yaml;
import org.yaml.snakeyaml.constructor.Constructor;
public class MergingTest extends TestCase {
public void testMergeWithDefaultMap() {
String input = Util.getLocalResource("issues/issue103.yaml");
// System.out.println(input);
Yaml yaml = new Yaml();
Map map = (Map) yaml.load(input);
check(map);
}
public void testMergeWithFakeMap() {
String input = Util.getLocalResource("issues/issue103.yaml");
// System.out.println(input);
Constructor c = new Constructor() {
protected java.util.Map<Object, Object> createDefaultMap() {
return new FakeMap<Object, Object>();
};
};
Yaml yaml = new Yaml(c);
FakeMap map = (FakeMap) yaml.load(input);
check(map);
}
private void check(Map map) {
assertEquals(2, map.size());
assertTrue(map.containsKey("input"));
assertTrue(map.containsKey("result"));
// input: ...
List<Map<?, ?>> inputList = (List<Map<?, ?>>) map.get("input");
assertEquals(4, inputList.size());
Map<?, ?> center = inputList.get(0);
assertEquals(2, center.size());
assertEquals(Integer.valueOf(1), center.get("x"));
assertEquals(Integer.valueOf(2), center.get("y"));
Map<?, ?> left = inputList.get(1);
assertEquals(2, left.size());
assertEquals(Integer.valueOf(0), left.get("x"));
assertEquals(Integer.valueOf(2), left.get("y"));
Map<?, ?> big = inputList.get(2);
assertEquals(1, big.size());
assertEquals(Integer.valueOf(10), big.get("r"));
Map<?, ?> small = inputList.get(3);
assertEquals(1, small.size());
assertEquals(Integer.valueOf(1), small.get("r"));
// result : ...
List<Map<?, ?>> resultList = (List<Map<?, ?>>) map.get("result");
assertEquals(5, resultList.size());
Map<?, ?> explicitKeys = resultList.get(0);
assertEquals(4, explicitKeys.size());
assertEquals(Integer.valueOf(1), explicitKeys.get("x"));
assertEquals(Integer.valueOf(2), explicitKeys.get("y"));
assertEquals(Integer.valueOf(10), explicitKeys.get("r"));
assertEquals("center/big", explicitKeys.get("label"));
Map<?, ?> merge_center = resultList.get(1);
assertEquals(4, merge_center.size());
assertEquals(Integer.valueOf(1), merge_center.get("x"));
assertEquals(Integer.valueOf(2), merge_center.get("y"));
assertEquals(Integer.valueOf(10), merge_center.get("r"));
assertEquals("center/big", merge_center.get("label"));
Map<?, ?> merge_left_override = resultList.get(2);
assertEquals(4, merge_left_override.size());
assertEquals(Integer.valueOf(0), merge_left_override.get("x"));
assertEquals(Integer.valueOf(5), merge_left_override.get("y"));
assertEquals(Integer.valueOf(10), merge_left_override.get("r"));
assertEquals("center/big", merge_left_override.get("label"));
Map<?, ?> merge_center_big = resultList.get(3);
assertEquals(4, merge_center_big.size());
assertEquals(Integer.valueOf(1), merge_center_big.get("x"));
assertEquals(Integer.valueOf(2), merge_center_big.get("y"));
assertEquals(Integer.valueOf(10), merge_center_big.get("r"));
assertEquals("center/big", merge_center_big.get("label"));
Map<?, ?> merge_big_left_small_override = resultList.get(4);
assertEquals(4, merge_big_left_small_override.size());
assertEquals(Integer.valueOf(1), merge_big_left_small_override.get("x"));
assertEquals(Integer.valueOf(2), merge_big_left_small_override.get("y"));
assertEquals(Integer.valueOf(10), merge_big_left_small_override.get("r"));
assertEquals("center/big", merge_big_left_small_override.get("label"));
}
}