/** | |
* Copyright (c) 2008-2010, http://www.snakeyaml.org | |
* | |
* Licensed under the Apache License, Version 2.0 (the "License"); | |
* you may not use this file except in compliance with the License. | |
* You may obtain a copy of the License at | |
* | |
* http://www.apache.org/licenses/LICENSE-2.0 | |
* | |
* Unless required by applicable law or agreed to in writing, software | |
* distributed under the License is distributed on an "AS IS" BASIS, | |
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
* See the License for the specific language governing permissions and | |
* limitations under the License. | |
*/ | |
package org.yaml.snakeyaml.issues.issue74; | |
import java.util.ArrayList; | |
import java.util.List; | |
import junit.framework.TestCase; | |
import org.yaml.snakeyaml.JavaBeanDumper; | |
import org.yaml.snakeyaml.JavaBeanLoader; | |
import org.yaml.snakeyaml.Util; | |
public class ArrayBeanTest extends TestCase { | |
public void testArrayProperty() { | |
ArrayMember[] members = new ArrayMember[3]; | |
members[0] = new ArrayMember("Foo", 21); | |
members[1] = new ArrayMember("Bar", 23); | |
members[2] = new ArrayMember("Hue Long Hair", 25); | |
ArrayBean bean = new ArrayBean(); | |
bean.setId("ID123"); | |
bean.setNumber(7); | |
bean.setMembers(members); | |
bean.openMembers = new ArrayMember[] { new ArrayMember("OpenFoo", 1000), | |
new ArrayMember("OpenBar", 2000) }; | |
List<ArrayMember> list = new ArrayList<ArrayMember>(2); | |
list.add(new ArrayMember("John", 111)); | |
list.add(new ArrayMember("Tony", 222)); | |
bean.setList(list); | |
JavaBeanDumper beanDumper = new JavaBeanDumper(); | |
String output = beanDumper.dump(bean); | |
// System.out.println(output); | |
assertEquals(Util.getLocalResource("issues/issue74-array1.txt"), output); | |
JavaBeanLoader<ArrayBean> beanLoader = new JavaBeanLoader<ArrayBean>(ArrayBean.class); | |
ArrayBean parsed = beanLoader.load(output); | |
// System.out.println(parsed); | |
assertEquals(3, parsed.getMembers().length); | |
assertEquals(2, parsed.openMembers.length); | |
assertEquals(2, parsed.getList().size()); | |
assertEquals("ID123", parsed.getId()); | |
assertEquals(7, parsed.getNumber()); | |
for (ArrayMember member : parsed.getMembers()) { | |
assertTrue((member.getAge() >= 21) && (member.getAge() <= 25)); | |
} | |
} | |
public static class ArrayBean { | |
private String id; | |
private int number; | |
private ArrayMember[] members; | |
public ArrayMember[] openMembers; | |
private List<ArrayMember> list; | |
public String getId() { | |
return id; | |
} | |
public void setId(String id) { | |
this.id = id; | |
} | |
public int getNumber() { | |
return number; | |
} | |
public void setNumber(int number) { | |
this.number = number; | |
} | |
public ArrayMember[] getMembers() { | |
return members; | |
} | |
public void setMembers(ArrayMember[] members) { | |
this.members = members; | |
} | |
public List<ArrayMember> getList() { | |
return list; | |
} | |
public void setList(List<ArrayMember> list) { | |
this.list = list; | |
} | |
} | |
public static class ArrayMember { | |
private String name; | |
private int age; | |
public ArrayMember(String name, int age) { | |
this.name = name; | |
this.age = age; | |
} | |
public ArrayMember() { | |
this.name = "NoName"; | |
this.age = 0; | |
} | |
public String getName() { | |
return name; | |
} | |
public void setName(String name) { | |
this.name = name; | |
} | |
public int getAge() { | |
return age; | |
} | |
public void setAge(int age) { | |
this.age = age; | |
} | |
@Override | |
public boolean equals(Object obj) { | |
if (obj instanceof ArrayMember) { | |
ArrayMember m = (ArrayMember) obj; | |
return age == m.age; | |
} else { | |
return false; | |
} | |
} | |
@Override | |
public int hashCode() { | |
return age; | |
} | |
@Override | |
public String toString() { | |
return "ArrayMember age=" + age; | |
} | |
} | |
} |