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 org.yaml.snakeyaml.extensions.compactnotation; 17b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov 18b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somovimport java.util.Iterator; 19b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somovimport java.util.List; 20b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somovimport java.util.Map; 21b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov 22b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somovimport junit.framework.TestCase; 23b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov 24b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somovimport org.yaml.snakeyaml.Util; 25b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somovimport org.yaml.snakeyaml.Yaml; 26b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somovimport org.yaml.snakeyaml.constructor.Constructor; 27b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov 28b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somovpublic class CompactConstructorExampleTest extends TestCase { 29b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov 30b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov private Object load(String fileName) { 31b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov CompactConstructor compact = new CompactConstructor(); 32b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov Yaml yaml = new Yaml(compact); 33b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov String doc = Util.getLocalResource("compactnotation/" + fileName); 34b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov Object obj = yaml.load(doc); 35b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov assertNotNull(obj); 36b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov return obj; 37b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov } 38b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov 39b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov public void test1() { 40b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov Object obj = load("example1.yaml"); 41b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov assertEquals(new Container(), obj); 42b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov } 43b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov 44b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov public void test2() { 45b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov Object obj = load("example2.yaml"); 46b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov assertEquals(new Container("title"), obj); 47b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov } 48b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov 49b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov public void test3() { 50b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov Container obj = (Container) load("example3.yaml"); 51b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov assertEquals(new Container("title3"), obj); 52b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov assertEquals("title3", obj.getTitle()); 53b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov assertEquals("parent", obj.getName()); 54b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov assertEquals("123", obj.getId()); 55b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov } 56b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov 57b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov public void test4() { 58b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov Object obj = load("example4.yaml"); 59b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov // System.out.println(obj); 60b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov Container container = (Container) obj; 61b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov assertNotNull(obj); 62b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov assertEquals(new Container("title4"), obj); 63b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov assertEquals("title4", container.getTitle()); 64b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov assertEquals("child4", container.getName()); 65b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov assertEquals("444", container.getId()); 66b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov } 67b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov 68b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov public void test5() { 69b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov Object obj = load("example5.yaml"); 70b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov // System.out.println(obj); 71b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov Container container = (Container) obj; 72b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov assertNotNull(obj); 73b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov assertEquals(new Container("title4"), obj); 74b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov assertEquals("title4", container.getTitle()); 75b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov assertEquals("child5", container.getName()); 76b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov assertEquals("ID555", container.getId()); 77b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov } 78b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov 79b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov public void test6() { 80b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov Object obj = load("example6.yaml"); 81b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov // System.out.println(obj); 82b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov Container container = (Container) obj; 83b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov assertNotNull(obj); 84b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov assertEquals(new Container("title4"), obj); 85b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov assertEquals("title4", container.getTitle()); 86b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov assertEquals("child6", container.getName()); 87b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov assertEquals("ID6", container.getId()); 88b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov } 89b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov 90b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov public void test7() { 91b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov Object obj = load("example7.yaml"); 92b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov // System.out.println(obj); 93b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov Container container = (Container) obj; 94b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov assertNotNull(obj); 95b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov assertEquals(new Container("The title"), obj); 96b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov assertEquals("The title", container.getTitle()); 97b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov assertEquals("child7", container.getName()); 98b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov assertEquals("id7", container.getId()); 99b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov } 100b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov 101b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov @SuppressWarnings("unchecked") 102b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov // TODO it is unclear how the result should look like for CON 103b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov public void test9() { 104b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov Map<String, Object> map = (Map<String, Object>) load("example9.yaml"); 105b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov assertEquals(1, map.size()); 106b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov Map<Container, Map<String, String>> containers = (Map<Container, Map<String, String>>) map 107b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov .get("something"); 108b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov // System.out.println(obj); 109b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov assertEquals(2, containers.size()); 110b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov for (Container c : containers.keySet()) { 111b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov assertTrue(c.getId().matches("id\\d")); 112b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov assertEquals(1, containers.get(c).size()); 113b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov } 114b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov } 115b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov 116b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov @SuppressWarnings("unchecked") 117b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov public void test10() { 118b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov Map<String, Object> map = (Map<String, Object>) load("example10.yaml"); 119b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov assertEquals(1, map.size()); 120b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov List<Container> containers = (List<Container>) map.get("something"); 121b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov // System.out.println(obj); 122b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov assertEquals(3, containers.size()); 123b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov for (Container c : containers) { 124b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov assertTrue(c.toString(), c.getId().matches("id\\d+")); 125b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov assertTrue(c.toString(), c.getName().matches("child\\d+")); 126b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov // System.out.println(c); 127b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov } 128b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov } 129b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov 130b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov public void test11withoutPackageNames() { 131b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov Constructor compact = new PackageCompactConstructor( 132b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov "org.yaml.snakeyaml.extensions.compactnotation"); 133b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov Yaml yaml = new Yaml(compact); 134b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov String doc = Util.getLocalResource("compactnotation/example11.yaml"); 135b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov Box box = (Box) yaml.load(doc); 136b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov assertNotNull(box); 137b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov assertEquals("id11", box.getId()); 138b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov assertEquals("Main box", box.getName()); 139b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov Item top = box.getTop(); 140b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov assertEquals("id003", top.getId()); 141b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov assertEquals("25.0", top.getPrice()); 142b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov assertEquals("parrot", top.getName()); 143b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov Item bottom = box.getBottom(); 144b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov assertEquals("id004", bottom.getId()); 145b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov assertEquals("3.5", bottom.getPrice()); 146b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov assertEquals("sweet", bottom.getName()); 147b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov } 148b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov 149b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov public void test12withList() { 150b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov Constructor compact = new TableCompactConstructor( 151b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov "org.yaml.snakeyaml.extensions.compactnotation"); 152b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov Yaml yaml = new Yaml(compact); 153b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov String doc = Util.getLocalResource("compactnotation/example12.yaml"); 154b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov Table table = (Table) yaml.load(doc); 155b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov assertNotNull(table); 156b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov assertEquals("id12", table.getId()); 157b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov assertEquals("A table", table.getName()); 158b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov List<Row> rows = table.getRows(); 159b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov assertEquals(3, rows.size()); 160b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov Iterator<Row> iter = rows.iterator(); 161b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov Row first = iter.next(); 162b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov assertEquals("id111", first.getId()); 163b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov assertEquals("I think; therefore I am.", first.getDescription()); 164b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov assertEquals(0.125, first.getRatio(), 0.000000001); 165b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov assertEquals(15, first.getSize()); 166b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov Row second = iter.next(); 167b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov assertEquals("id222", second.getId()); 168b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov assertEquals("We do not need new lines here, just replace them all with spaces\n", 169b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov second.getDescription()); 170b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov assertEquals(0.333, second.getRatio(), 0.000000001); 171b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov assertEquals(17, second.getSize()); 172b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov Row third = iter.next(); 173b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov assertEquals("id333", third.getId()); 174b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov assertEquals( 175b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov "Please preserve all\nthe lines because they may be\nimportant, but do not include the last one !!!", 176b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov third.getDescription()); 177b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov assertEquals(0.88, third.getRatio(), 0.000000001); 178b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov assertEquals(52, third.getSize()); 179b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov } 180b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov} 181