1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.yaml.snakeyaml.javabeans;
17
18 import junit.framework.TestCase;
19
20 import org.yaml.snakeyaml.Yaml;
21
22 public class TriangleBeanTest extends TestCase {
23
24 public void testGetTriangle() {
25 Triangle triangle = new Triangle();
26 triangle.setName("Triangle25");
27 TriangleBean bean = new TriangleBean();
28 bean.setShape(triangle);
29 bean.setName("Bean25");
30 Yaml beanDumper = new Yaml();
31 String output = beanDumper.dumpAsMap(bean);
32 assertEquals(
33 "name: Bean25\nshape: !!org.yaml.snakeyaml.javabeans.Triangle\n name: Triangle25\n",
34 output);
35 Yaml beanLoader = new Yaml();
36 TriangleBean loadedBean = beanLoader.loadAs(output, TriangleBean.class);
37 assertNotNull(loadedBean);
38 assertEquals("Bean25", loadedBean.getName());
39 assertEquals(7, loadedBean.getShape().process());
40 }
41
42 public void testClassNotFound() {
43 String output = "name: Bean25\nshape: !!org.yaml.snakeyaml.javabeans.Triangle777\n name: Triangle25\n";
44 Yaml beanLoader = new Yaml();
45 try {
46 beanLoader.loadAs(output, TriangleBean.class);
47 fail("Class not found expected.");
48 } catch (Exception e) {
49 assertEquals(
50 "null; Can't construct a java object for tag:yaml.org,2002:org.yaml.snakeyaml.javabeans.TriangleBean; exception=Cannot create property=shape for JavaBean=TriangleBean name=Bean25; null; Can't construct a java object for tag:yaml.org,2002:org.yaml.snakeyaml.javabeans.Triangle777; exception=Class not found: org.yaml.snakeyaml.javabeans.Triangle777; in 'string', line 2, column 8:\n shape: !!org.yaml.snakeyaml.javabeans.T ... \n ^; in 'string', line 1, column 1:\n name: Bean25\n ^",
51 e.getMessage());
52 }
53 }
54
55
56
57
58 public void testClassAndTag() {
59 String output = "name: !!whatever Bean25\nshape: !!org.yaml.snakeyaml.javabeans.Triangle\n name: Triangle25\n";
60 Yaml beanLoader = new Yaml();
61 try {
62 beanLoader.loadAs(output, TriangleBean.class);
63 fail("Runtime class has less priority then an explicit tag");
64 } catch (Exception e) {
65 assertTrue(e
66 .getMessage()
67 .startsWith(
68 "null; Can't construct a java object for tag:yaml.org,2002:org.yaml.snakeyaml.javabeans.TriangleBean; exception=Cannot create property=name for JavaBean=TriangleBean name=null; null; Can't construct a java object for tag:yaml.org,2002:whatever; exception=Class not found: whatever"));
69 }
70 }
71 }