1b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov/** 211a89b445f3bde56bf07e6a0d04f0b0256dcb215Andrey Somov * Copyright (c) 2008, http://www.snakeyaml.org 3b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov * 4b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov * Licensed under the Apache License, Version 2.0 (the "License"); 5b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov * you may not use this file except in compliance with the License. 6b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov * You may obtain a copy of the License at 7b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov * 8b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov * http://www.apache.org/licenses/LICENSE-2.0 9b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov * 10b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov * Unless required by applicable law or agreed to in writing, software 11b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov * distributed under the License is distributed on an "AS IS" BASIS, 12b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov * See the License for the specific language governing permissions and 14b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov * limitations under the License. 15b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov */ 16b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somovpackage examples.collections; 17b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov 18b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somovimport java.util.ArrayList; 19b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somovimport java.util.List; 20b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somovimport java.util.Map; 21b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somovimport java.util.Properties; 22b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somovimport java.util.SortedMap; 23b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somovimport java.util.TreeMap; 24b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov 25b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somovimport junit.framework.TestCase; 26b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov 27b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somovimport org.yaml.snakeyaml.Util; 28b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somovimport org.yaml.snakeyaml.Yaml; 29b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov 30b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov/** 31b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov * Test different Map implementations as JavaBean properties 32b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov */ 33b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somovpublic class TypeSafeMapImplementationsTest extends TestCase { 34b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov public void testDumpMap() { 35b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov MapBean bean = new MapBean(); 36b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov SortedMap<String, String> sortedMap = new TreeMap<String, String>(); 37b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov sortedMap.put("2", "two"); 38b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov sortedMap.put("1", "one"); 39b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov bean.setSorted(sortedMap); 40b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov Properties props = new Properties(); 41b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov props.setProperty("key1", "value1"); 42b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov props.setProperty("key2", "value2"); 43b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov bean.setProperties(props); 44b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov Yaml yaml = new Yaml(); 45b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov String output = yaml.dumpAsMap(bean); 46b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov // System.out.println(output); 47b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov String etalon = Util.getLocalResource("examples/map-bean-1.yaml"); 48b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov assertEquals(etalon, output); 49b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov } 50b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov 51b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov public void testLoadMap() { 52b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov String output = Util.getLocalResource("examples/map-bean-1.yaml"); 53b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov // System.out.println(output); 54b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov Yaml beanLoader = new Yaml(); 55b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov MapBean parsed = beanLoader.loadAs(output, MapBean.class); 56b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov assertNotNull(parsed); 57b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov SortedMap<String, String> sortedMap = parsed.getSorted(); 58b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov assertEquals(2, sortedMap.size()); 59b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov assertEquals("one", sortedMap.get("1")); 60b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov assertEquals("two", sortedMap.get("2")); 61b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov String first = sortedMap.keySet().iterator().next(); 62b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov assertEquals("1", first); 63b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov // 64b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov Properties props = parsed.getProperties(); 65b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov assertEquals(2, props.size()); 66b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov assertEquals("value1", props.getProperty("key1")); 67b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov assertEquals("value2", props.getProperty("key2")); 68b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov } 69b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov 70b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov public static class MapBean { 71b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov private SortedMap<String, String> sorted; 72b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov private Properties properties; 73b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov private String name; 74b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov 75b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov public MapBean() { 76b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov name = "Bean123"; 77b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov } 78b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov 79b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov public SortedMap<String, String> getSorted() { 80b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov return sorted; 81b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov } 82b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov 83b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov public void setSorted(SortedMap<String, String> sorted) { 84b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov this.sorted = sorted; 85b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov } 86b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov 87b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov public Properties getProperties() { 88b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov return properties; 89b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov } 90b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov 91b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov public void setProperties(Properties properties) { 92b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov this.properties = properties; 93b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov } 94b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov 95b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov public String getName() { 96b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov return name; 97b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov } 98b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov 99b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov public void setName(String name) { 100b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov this.name = name; 101b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov } 102b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov } 103b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov 104b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov @SuppressWarnings("unchecked") 105b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov public void testNoJavaBeanMap() { 106b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov List<Object> list = new ArrayList<Object>(3); 107b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov SortedMap<String, String> sortedMap = new TreeMap<String, String>(); 108b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov sortedMap.put("2", "two"); 109b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov sortedMap.put("1", "one"); 110b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov list.add(sortedMap); 111b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov Properties props = new Properties(); 112b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov props.setProperty("key1", "value1"); 113b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov props.setProperty("key2", "value2"); 114b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov list.add(props); 115b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov list.add("aaa"); 116b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov Yaml yaml = new Yaml(); 117b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov String output = yaml.dump(list); 118b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov // System.out.println(output); 119b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov String etalon = Util.getLocalResource("examples/map-bean-2.yaml"); 120b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov assertEquals(etalon, output); 121b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov // load 122b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov List<Object> list2 = (List<Object>) yaml.load(output); 123b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov assertEquals(3, list2.size()); 124b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov Map<Object, Object> map1 = (Map<Object, Object>) list.get(0);// it was 125b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov // SortedMap 126b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov assertEquals(2, map1.size()); 127b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov assertEquals("one", map1.get("1")); 128b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov assertEquals("two", map1.get("2")); 129b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov Map<Object, Object> map2 = (Map<Object, Object>) list.get(1);// it was 130b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov // Properties 131b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov assertEquals(2, map2.size()); 132b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov assertEquals("value1", map2.get("key1")); 133b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov assertEquals("value2", map2.get("key2")); 134b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov assertEquals("aaa", list.get(2)); 135b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov } 136b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov 137b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov public void testRecursiveNoJavaBeanMap1() { 138b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov SortedMap<String, Object> sortedMap = new TreeMap<String, Object>(); 139b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov sortedMap.put("2", "two"); 140b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov sortedMap.put("1", "one"); 141b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov sortedMap.put("3", sortedMap); 142b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov Yaml yaml = new Yaml(); 143b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov String output = yaml.dump(sortedMap); 144b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov // System.out.println(output); 145b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov String etalon = Util.getLocalResource("examples/map-recursive-1.yaml"); 146b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov assertEquals(etalon, output); 147b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov // load with different order 148b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov @SuppressWarnings("unchecked") 149b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov Map<Object, Object> map1 = (Map<Object, Object>) yaml.load(Util 150b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov .getLocalResource("examples/map-recursive-1_1.yaml")); 151b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov assertEquals(3, map1.size()); 152b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov assertEquals("one", map1.get("1")); 153b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov assertEquals("two", map1.get("2")); 154b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov // test that the order is taken from YAML instead of sorting 155b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov String first = (String) map1.keySet().iterator().next(); 156b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov assertEquals("2", first); 157b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov } 158b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov 159b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov @SuppressWarnings("unchecked") 160b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov public void testRecursiveNoJavaBeanProperties2() { 161b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov Properties props = new Properties(); 162b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov props.setProperty("key1", "value1"); 163b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov props.setProperty("key2", "value2"); 164b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov Map<Object, Object> map = props; 165b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov map.put("key3", props); 166b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov Yaml yaml = new Yaml(); 167b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov String output = yaml.dump(props); 168b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov // System.out.println(output); 169b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov String etalon = Util.getLocalResource("examples/map-recursive-2.yaml"); 170b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov assertEquals(etalon, output); 171b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov // load 172b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov Map<Object, Object> map2 = (Map<Object, Object>) yaml.load(output); 173b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov assertEquals(3, map2.size()); 174b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov assertEquals("value1", map2.get("key1")); 175b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov assertEquals("value2", map2.get("key2")); 176b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov } 177b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov 178b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov public void testRecursiveNoJavaBeanMap3() { 179b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov Yaml yaml = new Yaml(); 180b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov String output = Util.getLocalResource("examples/map-recursive-3.yaml"); 181b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov // System.out.println(output); 182b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov @SuppressWarnings("unchecked") 183b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov SortedMap<Object, Object> map1 = (SortedMap<Object, Object>) yaml.load(output); 184b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov assertEquals(3, map1.size()); 185b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov assertEquals("one", map1.get("1")); 186b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov assertEquals("two", map1.get("2")); 187b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov // test that the order is NOT taken from YAML but sorted 188b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov String first = (String) map1.keySet().iterator().next(); 189b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov assertEquals("1", first); 190b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov } 191b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov 192b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov public void testRecursiveNoJavaBeanProperties4() { 193b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov Yaml yaml = new Yaml(); 194b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov String output = Util.getLocalResource("examples/map-recursive-4.yaml"); 195b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov // System.out.println(output); 196b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov try { 197b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov yaml.load(output); 198b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov fail("Recursive Properties are not supported."); 199b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov } catch (Exception e) { 200b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov assertTrue(e.getMessage(), e.getMessage().contains("Properties must not be recursive.")); 201b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov } 202b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov } 203b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov} 204