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.issues.issue73; 17 18 import java.util.HashSet; 19 import java.util.LinkedHashSet; 20 import java.util.Set; 21 import java.util.TreeSet; 22 23 import junit.framework.TestCase; 24 25 import org.yaml.snakeyaml.DumperOptions; 26 import org.yaml.snakeyaml.Util; 27 import org.yaml.snakeyaml.Yaml; 28 import org.yaml.snakeyaml.introspector.BeanAccess; 29 30 public class SetAsSequenceTest extends TestCase { 31 32 public void testDump() { 33 Blog blog = new Blog("Test Me!"); 34 blog.addPost(new Post("Title1", "text 1")); 35 blog.addPost(new Post("Title2", "text text 2")); 36 blog.numbers.add(19); 37 blog.numbers.add(17); 38 TreeSet<String> labels = new TreeSet<String>(); 39 labels.add("Java"); 40 labels.add("YAML"); 41 labels.add("SnakeYAML"); 42 blog.setLabels(labels); 43 DumperOptions options = new DumperOptions(); 44 options.setAllowReadOnlyProperties(true); 45 Yaml yaml = new Yaml(options); 46 String output = yaml.dump(blog); 47 // System.out.println(output); 48 assertEquals(Util.getLocalResource("issues/issue73-1.txt"), output); 49 } 50 51 public void testLoad() { 52 Yaml yaml = new Yaml(); 53 yaml.setBeanAccess(BeanAccess.FIELD); 54 String doc = Util.getLocalResource("issues/issue73-1.txt"); 55 Blog blog = (Blog) yaml.load(doc); 56 // System.out.println(blog); 57 assertEquals("Test Me!", blog.getName()); 58 assertEquals(2, blog.numbers.size()); 59 assertEquals(2, blog.getPosts().size()); 60 for (Post post : blog.getPosts()) { 61 assertEquals(Post.class, post.getClass()); 62 } 63 } 64 65 public void testYaml() { 66 String serialized = Util.getLocalResource("issues/issue73-2.txt"); 67 // System.out.println(serialized); 68 Yaml beanLoader = new Yaml(); 69 beanLoader.setBeanAccess(BeanAccess.FIELD); 70 Blog rehydrated = beanLoader.loadAs(serialized, Blog.class); 71 checkTestBlog(rehydrated); 72 } 73 74 protected void checkTestBlog(Blog blog) { 75 Set<Post> posts = blog.getPosts(); 76 assertEquals("Blog contains 2 posts", 2, posts.size()); 77 assertTrue(posts.contains(new Post("Test", "Dummy"))); 78 assertTrue(posts.contains(new Post("Highly", "Creative"))); 79 assertEquals("No tags!", blog.getName()); 80 assertEquals(0, blog.numbers.size()); 81 } 82 83 @SuppressWarnings("unchecked") 84 public void testLoadRootSet() { 85 Yaml yaml = new Yaml(); 86 String doc = Util.getLocalResource("issues/issue73-3.txt"); 87 Set<String> strings = (Set<String>) yaml.load(doc); 88 // System.out.println(strings); 89 assertEquals(3, strings.size()); 90 assertEquals(HashSet.class, strings.getClass()); 91 assertTrue(strings.contains("aaa")); 92 assertTrue(strings.contains("bbb")); 93 assertTrue(strings.contains("ccc")); 94 } 95 96 @SuppressWarnings("unchecked") 97 public void testLoadRootSet2() { 98 Yaml yaml = new Yaml(); 99 String doc = "!!java.util.HashSet {aaa: null, bbb: null, ccc: null}"; 100 Set<String> strings = (Set<String>) yaml.load(doc); 101 // System.out.println(strings); 102 assertEquals(3, strings.size()); 103 assertEquals(LinkedHashSet.class, strings.getClass()); 104 assertTrue(strings.contains("aaa")); 105 assertTrue(strings.contains("bbb")); 106 assertTrue(strings.contains("ccc")); 107 } 108 109 @SuppressWarnings("unchecked") 110 public void testLoadRootSet3() { 111 Yaml yaml = new Yaml(); 112 String doc = "!!java.util.TreeSet {aaa: null, bbb: null, ccc: null}"; 113 Set<String> strings = (Set<String>) yaml.load(doc); 114 // System.out.println(strings); 115 assertEquals(3, strings.size()); 116 assertEquals(TreeSet.class, strings.getClass()); 117 assertTrue(strings.contains("aaa")); 118 assertTrue(strings.contains("bbb")); 119 assertTrue(strings.contains("ccc")); 120 } 121 122 @SuppressWarnings("unchecked") 123 public void testLoadRootSet6() { 124 Yaml yaml = new Yaml(); 125 String doc = Util.getLocalResource("issues/issue73-6.txt"); 126 Set<String> strings = (Set<String>) yaml.load(doc); 127 // System.out.println(strings); 128 assertEquals(3, strings.size()); 129 assertEquals(TreeSet.class, strings.getClass()); 130 assertTrue(strings.contains("aaa")); 131 assertTrue(strings.contains("bbb")); 132 assertTrue(strings.contains("ccc")); 133 } 134 } 135