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.HashSet; 19b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somovimport java.util.Iterator; 20b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somovimport java.util.Set; 21b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somovimport java.util.SortedSet; 22b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somovimport java.util.TreeSet; 23b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov 24b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somovimport junit.framework.TestCase; 25b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov 26b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somovimport org.yaml.snakeyaml.Util; 27b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somovimport org.yaml.snakeyaml.Yaml; 28b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov 29b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov/** 30b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov * Test different Map implementations as JavaBean properties 31b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov */ 32b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somovpublic class TypeSafeSetImplementationsTest extends TestCase { 33b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov public void testDumpSet() { 34b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov SetBean bean = new SetBean(); 35b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov SortedSet<String> sortedSet = new TreeSet<String>(); 36b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov sortedSet.add("two"); 37b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov sortedSet.add("one"); 38b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov sortedSet.add("three"); 39b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov bean.setSorted(sortedSet); 40b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov SortedSet<Developer> developers = new TreeSet<Developer>(); 41b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov developers.add(new Developer("John", "founder")); 42b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov developers.add(new Developer("Karl", "user")); 43b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov bean.setDevelopers(developers); 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/set-bean-1.yaml"); 48b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov assertEquals(etalon, output); 49b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov } 50b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov 51b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov public void testDumpSet2() { 52b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov SetBean bean = new SetBean(); 53b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov SortedSet<String> sortedSet = new TreeSet<String>(); 54b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov sortedSet.add("two"); 55b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov sortedSet.add("one"); 56b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov sortedSet.add("three"); 57b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov bean.setSorted(sortedSet); 58b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov SortedSet<Developer> developers = new TreeSet<Developer>(); 59b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov developers.add(new Developer("John", "founder")); 60b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov developers.add(new Developer("Karl", "user")); 61b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov developers.add(new SuperDeveloper("Bill", "super")); 62b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov bean.setDevelopers(developers); 63b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov Yaml yaml = new Yaml(); 64b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov String output = yaml.dumpAsMap(bean); 65b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov // System.out.println(output); 66b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov String etalon = Util.getLocalResource("examples/set-bean-6.yaml"); 67b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov assertEquals(etalon, output); 68b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov } 69b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov 70b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov public void testLoadSet() { 71b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov String output = Util.getLocalResource("examples/set-bean-1.yaml"); 72b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov // System.out.println(output); 73b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov Yaml beanLoader = new Yaml(); 74b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov SetBean parsed = beanLoader.loadAs(output, SetBean.class); 75b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov assertNotNull(parsed); 76b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov SortedSet<String> sortedMap = parsed.getSorted(); 77b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov assertEquals(3, sortedMap.size()); 78b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov assertTrue(sortedMap.contains("one")); 79b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov assertTrue(sortedMap.contains("two")); 80b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov assertTrue(sortedMap.contains("three")); 81b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov String first = sortedMap.iterator().next(); 82b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov assertEquals("one", first); 83b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov // 84b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov SortedSet<Developer> developers = parsed.getDevelopers(); 85b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov assertEquals(2, developers.size()); 86b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov assertEquals("John", developers.first().getName()); 87b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov assertEquals("Karl", developers.last().getName()); 88b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov } 89b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov 90b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov public void testLoadSetReversed() { 91b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov String output = Util.getLocalResource("examples/set-bean-2.yaml"); 92b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov // System.out.println(output); 93b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov Yaml beanLoader = new Yaml(); 94b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov SetBean parsed = beanLoader.loadAs(output, SetBean.class); 95b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov assertNotNull(parsed); 96b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov SortedSet<String> sortedMap = parsed.getSorted(); 97b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov assertEquals(3, sortedMap.size()); 98b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov assertTrue(sortedMap.contains("one")); 99b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov assertTrue(sortedMap.contains("two")); 100b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov assertTrue(sortedMap.contains("three")); 101b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov // alphabetically: one, three, two 102b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov assertEquals("one", sortedMap.first()); 103b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov assertEquals("two", sortedMap.last()); 104b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov // the order is not from YAML (must be sorted) 105b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov SortedSet<Developer> developers = parsed.getDevelopers(); 106b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov assertEquals(2, developers.size()); 107b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov assertEquals("John", developers.first().getName()); 108b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov assertEquals("Karl", developers.last().getName()); 109b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov } 110b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov 111b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov public static class SetBean { 112b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov private SortedSet<String> sorted; 113b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov private SortedSet<Developer> developers; 114b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov private String name; 115b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov 116b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov public SetBean() { 117b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov name = "Bean123"; 118b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov } 119b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov 120b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov public SortedSet<String> getSorted() { 121b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov return sorted; 122b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov } 123b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov 124b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov public void setSorted(SortedSet<String> sorted) { 125b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov this.sorted = sorted; 126b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov } 127b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov 128b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov public String getName() { 129b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov return name; 130b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov } 131b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov 132b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov public void setName(String name) { 133b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov this.name = name; 134b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov } 135b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov 136b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov public SortedSet<Developer> getDevelopers() { 137b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov return developers; 138b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov } 139b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov 140b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov public void setDevelopers(SortedSet<Developer> developers) { 141b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov this.developers = developers; 142b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov } 143b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov } 144b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov 145b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov public static class Developer implements Comparable<Developer> { 146b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov private String name; 147b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov private String role; 148b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov 149b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov public Developer() { 150b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov } 151b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov 152b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov public Developer(String name, String role) { 153b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov this.name = name; 154b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov this.role = role; 155b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov } 156b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov 157b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov public String getName() { 158b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov return name; 159b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov } 160b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov 161b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov public void setName(String name) { 162b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov this.name = name; 163b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov } 164b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov 165b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov public String getRole() { 166b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov return role; 167b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov } 168b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov 169b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov public void setRole(String role) { 170b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov this.role = role; 171b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov } 172b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov 173b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov public int compareTo(Developer o) { 174b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov return name.compareTo(o.name); 175b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov } 176b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov } 177b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov 178b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov public static class SuperDeveloper extends Developer { 179b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov 180b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov public SuperDeveloper() { 181b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov super(); 182b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov } 183b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov 184b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov public SuperDeveloper(String string, String string2) { 185b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov super(string, string2); 186b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov } 187b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov 188b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov } 189b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov 190b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov @SuppressWarnings("unchecked") 191b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov public void testNoJavaBeanSetRecursive() { 192b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov Set<Object> set = new HashSet<Object>(3); 193b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov set.add("aaa"); 194b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov set.add(111); 195b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov Box box = new Box(); 196b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov box.setId("id123"); 197b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov box.setSet(set); 198b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov set.add(box); 199b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov Yaml yaml = new Yaml(); 200b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov String output = yaml.dump(set); 201b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov // System.out.println(output); 202b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov // the order may differ on different JVMs 203b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov // String etalon = Util.getLocalResource("examples/set-bean-3.yaml"); 204b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov // assertEquals(etalon, output); 205b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov assertTrue(output.contains("&id001 !!set")); 206b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov assertTrue(output.contains("? !!examples.collections.TypeSafeSetImplementationsTest$Box")); 207b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov assertTrue(output.contains("set: *id001")); 208b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov assertTrue(output.contains("111: null")); 209b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov // load 210b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov Set<Object> list2 = (Set<Object>) yaml.load(output); 211b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov assertEquals(3, list2.size()); 212b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov assertTrue(list2.contains("aaa")); 213b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov assertTrue(list2.contains(111)); 214b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov } 215b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov 216b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov public static class Box { 217b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov private String id; 218b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov private Set<Object> set; 219b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov 220b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov public String getId() { 221b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov return id; 222b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov } 223b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov 224b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov public void setId(String id) { 225b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov this.id = id; 226b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov } 227b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov 228b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov public Set<Object> getSet() { 229b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov return set; 230b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov } 231b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov 232b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov public void setSet(Set<Object> set) { 233b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov this.set = set; 234b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov } 235b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov } 236b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov 237b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov @SuppressWarnings("unchecked") 238b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov public void testNoJavaBeanSet() { 239b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov Yaml yaml = new Yaml(); 240b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov String output = Util.getLocalResource("examples/set-bean-4.yaml"); 241b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov // System.out.println(output); 242b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov // load 243b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov Set<String> set = (Set<String>) yaml.load(output); 244b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov assertEquals(3, set.size()); 245b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov assertTrue(set.contains("aaa")); 246b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov assertTrue(set.contains("bbb")); 247b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov assertTrue(set.contains("zzz")); 248b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov Iterator<String> iter = set.iterator(); 249b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov assertEquals("bbb", iter.next()); 250b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov assertEquals("aaa", iter.next()); 251b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov assertEquals("zzz", iter.next()); 252b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov } 253b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov 254b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov @SuppressWarnings("unchecked") 255b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov public void testNoJavaBeanSet2() { 256b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov Yaml yaml = new Yaml(); 257b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov String output = Util.getLocalResource("examples/set-bean-5.yaml"); 258b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov // System.out.println(output); 259b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov // load and sort 260b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov Set<String> set = (Set<String>) yaml.load(output); 261b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov assertEquals(3, set.size()); 262b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov assertTrue(set.contains("aaa")); 263b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov assertTrue(set.contains("bbb")); 264b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov assertTrue(set.contains("zzz")); 265b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov Iterator<String> iter = set.iterator(); 266b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov assertEquals("aaa", iter.next()); 267b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov assertEquals("bbb", iter.next()); 268b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov assertEquals("zzz", iter.next()); 269b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov } 270b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov} 271