1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.yaml.snakeyaml.issues.issue55;
18
19 import java.util.Collection;
20 import java.util.Map;
21
22 import junit.framework.TestCase;
23
24 import org.yaml.snakeyaml.Util;
25 import org.yaml.snakeyaml.Yaml;
26 import org.yaml.snakeyaml.introspector.BeanAccess;
27 import org.yaml.snakeyaml.representer.Representer;
28
29 public class YamlFieldAccessCollectionTest extends TestCase {
30
31 public void testYaml() {
32 Blog original = createTestBlog();
33 Yaml yamlDumper = constructYamlDumper();
34 String serialized = yamlDumper.dumpAsMap(original);
35
36 assertEquals(Util.getLocalResource("issues/issue55_1.txt"), serialized);
37 Yaml blogLoader = new Yaml();
38 blogLoader.setBeanAccess(BeanAccess.FIELD);
39 Blog rehydrated = blogLoader.loadAs(serialized, Blog.class);
40 checkTestBlog(rehydrated);
41 }
42
43 @SuppressWarnings("unchecked")
44 public void testYamlWithoutConfiguration() {
45 Yaml yaml = new Yaml();
46 Map<String, Object> map = (Map<String, Object>) yaml.load(Util
47 .getLocalResource("issues/issue55_1.txt"));
48 assertEquals(1, map.size());
49 }
50
51 public void testYamlFailure() {
52 Yaml beanLoader = new Yaml();
53 try {
54 beanLoader.loadAs(Util.getLocalResource("issues/issue55_1.txt"), Blog.class);
55 fail("BeanAccess.FIELD is required.");
56 } catch (Exception e) {
57 assertTrue(e.getMessage(), e.getMessage().contains("Unable to find property 'posts'"));
58 }
59 }
60
61 public void testYamlDefaultWithFeildAccess() {
62 Yaml yaml = new Yaml();
63 yaml.setBeanAccess(BeanAccess.FIELD);
64 Blog original = createTestBlog();
65 String serialized = yaml.dump(original);
66 assertEquals(Util.getLocalResource("issues/issue55_1_rootTag.txt"), serialized);
67 Blog rehydrated = (Blog) yaml.load(serialized);
68 checkTestBlog(rehydrated);
69 }
70
71 protected Yaml constructYamlDumper() {
72 Representer representer = new Representer();
73 representer.getPropertyUtils().setBeanAccess(BeanAccess.FIELD);
74 Yaml yaml = new Yaml(representer);
75 return yaml;
76 }
77
78 protected Yaml constructYamlParser() {
79 Yaml yaml = new Yaml();
80 yaml.setBeanAccess(BeanAccess.FIELD);
81 return yaml;
82 }
83
84 protected Blog createTestBlog() {
85 Post post1 = new Post("Test", "Dummy");
86 Post post2 = new Post("Highly", "Creative");
87 Blog blog = new Blog();
88 blog.addPost(post1);
89 blog.addPost(post2);
90 return blog;
91 }
92
93 protected void checkTestBlog(Blog blog) {
94 Collection<Post> posts = blog.getPosts();
95 assertEquals("Blog contains 2 posts", 2, posts.size());
96 }
97 }