/*
* Copyright (C) 2005 Joe Walnes.
* Copyright (C) 2006, 2007 XStream Committers.
* All rights reserved.
*
* The software in this package is published under the terms of the BSD
* style license a copy of which has been included with this distribution in
* the LICENSE.txt file.
*
* Created on 12. April 2005 by Joe Walnes
*/
package com.thoughtworks.xstream.converters.javabean;
import junit.framework.TestCase;
import java.util.Iterator;
public class PropertyDictionaryTest extends TestCase {
private PropertyDictionary propertyDictionary;
protected void setUp() throws Exception {
super.setUp();
propertyDictionary = new PropertyDictionary();
}
/**
* Test class: three serializable properties, one with a all capital name,
* two others non serializable, one readable, one writable, and another and
* a lonely field
*/
class SomeClass {
private String a;
private String URL;
private String c;
private String d;
private String e;
private String f;
public String getA() {
return a;
}
public void setA(String a) {
this.a = a;
}
public String getURL() {
return URL;
}
public void setURL(String url) {
this.URL = url;
}
public String getC() {
return c;
}
public void setC(String c) {
this.c = c;
}
public String getD() {
return d;
}
public void setE(String e) {
this.e = e;
}
}
public void testListsFieldsInClassInDefinitionOrder() {
Iterator properties = propertyDictionary.serializablePropertiesFor(SomeClass.class);
assertEquals("URL", ((BeanProperty) properties.next()).getName());
assertEquals("a", ((BeanProperty) properties.next()).getName());
assertEquals("c", ((BeanProperty) properties.next()).getName());
assertFalse("No more fields should be present", properties.hasNext());
}
/**
* Test subclassing and private properties
*/
class SpecialClass extends SomeClass {
private String brilliant;
public String getBrilliant() {
return brilliant;
}
public void setBrilliant(String brilliant) {
this.brilliant = brilliant;
}
public String getPrivate() {
return null;
}
private void setPrivate(String string) {
}
}
public void testIncludesFieldsInSuperClasses() {
Iterator properties = propertyDictionary.serializablePropertiesFor(SpecialClass.class);
assertEquals("URL", ((BeanProperty) properties.next()).getName());
assertEquals("a", ((BeanProperty) properties.next()).getName());
assertEquals("brilliant", ((BeanProperty) properties.next()).getName());
assertEquals("c", ((BeanProperty) properties.next()).getName());
assertFalse("No more fields should be present", properties.hasNext());
}
}