/* * Copyright (C) 2004 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 08. July 2004 by Joe Walnes */ package com.thoughtworks.acceptance; import com.thoughtworks.acceptance.objects.StandardObject; import com.thoughtworks.xstream.testutil.TimeZoneChanger; import java.util.ArrayList; import java.util.Calendar; import java.util.List; import java.util.TimeZone; public class DefaultImplementationTest extends AbstractAcceptanceTest { public static class Farm extends StandardObject { int size; List animals = new ArrayList(); String name; public Farm(int size, String name) { this.size = size; this.name = name; } public void add(Animal animal) { animals.add(animal); } } public static class Animal extends StandardObject { String name; public Animal(String name) { this.name = name; } } protected void setUp() throws Exception { super.setUp(); TimeZoneChanger.change("GMT"); xstream.alias("farm", Farm.class); xstream.alias("animal", Animal.class); xstream.alias("age", Age.class); } /** * @see junit.framework.TestCase#tearDown() */ protected void tearDown() throws Exception { TimeZoneChanger.reset(); super.tearDown(); } public void testArrayList() { Farm farm = new Farm(100, "Old McDonald's"); farm.add(new Animal("Cow")); farm.add(new Animal("Sheep")); String expected = "" + "<farm>\n" + " <size>100</size>\n" + " <animals>\n" + " <animal>\n" + " <name>Cow</name>\n" + " </animal>\n" + " <animal>\n" + " <name>Sheep</name>\n" + " </animal>\n" + " </animals>\n" + " <name>Old McDonald's</name>\n" + "</farm>"; assertBothWays(farm, expected); } public static class Age extends StandardObject { java.util.Date date; public Age(java.util.Date age) { this.date = age; } } public void testCustomDate() { Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("UTC")); cal.clear(); cal.set(2007, Calendar.DECEMBER, 18); Age age = new Age(new java.sql.Date(cal.getTime().getTime())); xstream.addDefaultImplementation(java.sql.Date.class, java.util.Date.class); String expected = "" + "<age>\n" + " <date>2007-12-18</date>\n" + "</age>"; assertBothWays(age, expected); } }