View Javadoc

1   /**
2    * Copyright (c) 2008-2012, 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.issue74;
17  
18  import java.util.ArrayList;
19  import java.util.List;
20  
21  import junit.framework.TestCase;
22  
23  import org.yaml.snakeyaml.Util;
24  import org.yaml.snakeyaml.Yaml;
25  
26  public class ArrayBeanTest extends TestCase {
27  
28      public void testArrayProperty() {
29          ArrayMember[] members = new ArrayMember[3];
30          members[0] = new ArrayMember("Foo", 21);
31          members[1] = new ArrayMember("Bar", 23);
32          members[2] = new ArrayMember("Hue Long Hair", 25);
33          ArrayBean bean = new ArrayBean();
34          bean.setId("ID123");
35          bean.setNumber(7);
36          bean.setMembers(members);
37          bean.openMembers = new ArrayMember[] { new ArrayMember("OpenFoo", 1000),
38                  new ArrayMember("OpenBar", 2000) };
39          List<ArrayMember> list = new ArrayList<ArrayMember>(2);
40          list.add(new ArrayMember("John", 111));
41          list.add(new ArrayMember("Tony", 222));
42          bean.setList(list);
43          Yaml yaml = new Yaml();
44          String output = yaml.dumpAsMap(bean);
45          // System.out.println(output);
46          assertEquals(Util.getLocalResource("issues/issue74-array1.txt"), output);
47          Yaml beanLoader = new Yaml();
48          ArrayBean parsed = beanLoader.loadAs(output, ArrayBean.class);
49          // System.out.println(parsed);
50          assertEquals(3, parsed.getMembers().length);
51          assertEquals(2, parsed.openMembers.length);
52          assertEquals(2, parsed.getList().size());
53          assertEquals("ID123", parsed.getId());
54          assertEquals(7, parsed.getNumber());
55          for (ArrayMember member : parsed.getMembers()) {
56              assertTrue((member.getAge() >= 21) && (member.getAge() <= 25));
57          }
58      }
59  
60      public static class ArrayBean {
61          private String id;
62          private int number;
63          private ArrayMember[] members;
64          public ArrayMember[] openMembers;
65          private List<ArrayMember> list;
66  
67          public String getId() {
68              return id;
69          }
70  
71          public void setId(String id) {
72              this.id = id;
73          }
74  
75          public int getNumber() {
76              return number;
77          }
78  
79          public void setNumber(int number) {
80              this.number = number;
81          }
82  
83          public ArrayMember[] getMembers() {
84              return members;
85          }
86  
87          public void setMembers(ArrayMember[] members) {
88              this.members = members;
89          }
90  
91          public List<ArrayMember> getList() {
92              return list;
93          }
94  
95          public void setList(List<ArrayMember> list) {
96              this.list = list;
97          }
98      }
99  
100     public static class ArrayMember {
101         private String name;
102         private int age;
103 
104         public ArrayMember(String name, int age) {
105             this.name = name;
106             this.age = age;
107         }
108 
109         public ArrayMember() {
110             this.name = "NoName";
111             this.age = 0;
112         }
113 
114         public String getName() {
115             return name;
116         }
117 
118         public void setName(String name) {
119             this.name = name;
120         }
121 
122         public int getAge() {
123             return age;
124         }
125 
126         public void setAge(int age) {
127             this.age = age;
128         }
129 
130         @Override
131         public boolean equals(Object obj) {
132             if (obj instanceof ArrayMember) {
133                 ArrayMember m = (ArrayMember) obj;
134                 return age == m.age;
135             } else {
136                 return false;
137             }
138         }
139 
140         @Override
141         public int hashCode() {
142             return age;
143         }
144 
145         @Override
146         public String toString() {
147             return "ArrayMember age=" + age;
148         }
149     }
150 }