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.types; 15 16 import java.util.List; 17 import java.util.Map; 18 import org.yaml.snakeyaml.YamlDocument; 19 20 /** 21 * @see <a href="http://yaml.org/type/merge.html">merge</a> 22 */ 23 public class MergeTagTest extends AbstractTest { 24 25 @SuppressWarnings("unchecked") testMerge()26 public void testMerge() { 27 YamlDocument document = new YamlDocument("types/merge.yaml"); 28 List<Object> list = (List<Object>) document.getNativeData(); 29 assertEquals(8, list.size()); 30 Map<Object, Object> center = (Map<Object, Object>) list.get(0); 31 assertEquals(2, center.size()); 32 assertEquals(Integer.valueOf(1), center.get("x")); 33 assertEquals(Integer.valueOf(2), center.get("y")); 34 // 35 Map<Object, Object> left = (Map<Object, Object>) list.get(1); 36 assertEquals(2, left.size()); 37 assertEquals(left.get("x").getClass().toString(), Integer.valueOf(0), left.get("x")); 38 assertEquals(Integer.valueOf(2), left.get("y")); 39 // 40 Map<Object, Object> big = (Map<Object, Object>) list.get(2); 41 assertEquals(1, big.size()); 42 assertEquals(Integer.valueOf(10), big.get("r")); 43 // 44 Map<Object, Object> small = (Map<Object, Object>) list.get(3); 45 assertEquals(1, small.size()); 46 assertEquals(Integer.valueOf(1), small.get("r")); 47 // Explicit keys 48 Map<Object, Object> explicit = (Map<Object, Object>) list.get(4); 49 assertEquals(4, explicit.size()); 50 assertEquals(Integer.valueOf(1), explicit.get("x")); 51 assertEquals(Integer.valueOf(2), explicit.get("y")); 52 assertEquals(Integer.valueOf(10), explicit.get("r")); 53 assertEquals("center/big", explicit.get("label")); 54 // Merge one map 55 Map<Object, Object> merged1 = (Map<Object, Object>) list.get(5); 56 assertEquals(explicit, merged1); 57 assertNotSame(explicit, merged1); 58 // Merge multiple maps 59 Map<Object, Object> merged2 = (Map<Object, Object>) list.get(6); 60 assertEquals(explicit, merged2); 61 assertNotSame(explicit, merged2); 62 // Override 63 Map<Object, Object> merged3 = (Map<Object, Object>) list.get(7); 64 assertEquals(explicit, merged3); 65 assertNotSame(explicit, merged3); 66 } 67 } 68