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