Home | History | Annotate | Download | only in issue73
      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