1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.yaml.snakeyaml.constructor;
18
19 import java.io.IOException;
20
21 import junit.framework.TestCase;
22
23 import org.yaml.snakeyaml.DumperOptions;
24 import org.yaml.snakeyaml.Yaml;
25 import org.yaml.snakeyaml.error.YAMLException;
26
27 public class IncompleteBeanConstructorTest extends TestCase {
28
29 public void testRepresentor() throws IOException {
30 IncompleteJavaBean bean = new IncompleteJavaBean();
31 DumperOptions options = new DumperOptions();
32 options.setAllowReadOnlyProperties(true);
33 Yaml yaml = new Yaml(options);
34 String output = yaml.dump(bean);
35 String className = this.getClass().getPackage().getName();
36 assertEquals("!!" + className + ".IncompleteJavaBean {name: No name}\n", output);
37 }
38
39 public void testConstructor() throws IOException {
40 String className = "!!" + this.getClass().getPackage().getName()
41 + ".IncompleteJavaBean {number: 2}";
42 Yaml yaml = new Yaml();
43 IncompleteJavaBean bean = (IncompleteJavaBean) yaml.load(className);
44 assertNotNull(bean);
45 assertEquals("No name", bean.getName());
46 assertEquals(2, bean.obtainNumber());
47 }
48
49 public void testConstructor2() throws IOException {
50 String className = "!!" + this.getClass().getPackage().getName()
51 + ".IncompleteJavaBean {number: 2, name: Bill}";
52 Yaml yaml = new Yaml();
53 try {
54 yaml.load(className);
55 fail("'name' property does not have setter.");
56 } catch (YAMLException e) {
57 assertEquals(
58 "Cannot create property=name for JavaBean=<IncompleteJavaBean name=No name>; Unable to find property 'name' on class: org.yaml.snakeyaml.constructor.IncompleteJavaBean",
59 e.getCause().getMessage());
60 }
61 }
62 }