package org.simpleframework.xml.transform; import java.io.StringWriter; import java.util.ArrayList; import java.util.Date; import java.util.List; import org.simpleframework.xml.Attribute; import org.simpleframework.xml.Element; import org.simpleframework.xml.ElementArray; import org.simpleframework.xml.ElementList; import org.simpleframework.xml.Root; import org.simpleframework.xml.ValidationTestCase; import org.simpleframework.xml.core.Persister; import org.simpleframework.xml.strategy.CycleStrategy; import org.simpleframework.xml.transform.DateTransform; public class DateTransformTest extends ValidationTestCase { @Root public static class DateExample { @ElementArray private Date[] array; @Element private Date element; @Attribute private Date attribute; @ElementList private List<Date> list; public DateExample() { super(); } public DateExample(Date date) { this.attribute = date; this.element = date; this.list = new ArrayList<Date>(); this.list.add(date); this.list.add(date); this.array = new Date[1]; this.array[0] = date; } } public void testDate() throws Exception { Date date = new Date(); DateTransform format = new DateTransform(Date.class); String value = format.write(date); Date copy = format.read(value); assertEquals(date, copy); } public void testPersistence() throws Exception { long now = System.currentTimeMillis(); Date date = new Date(now); Persister persister = new Persister(); DateExample example = new DateExample(date); StringWriter out = new StringWriter(); assertEquals(example.attribute, date); assertEquals(example.element, date); assertEquals(example.array[0], date); assertEquals(example.list.get(0), date); assertEquals(example.list.get(1), date); persister.write(example, out); String text = out.toString(); example = persister.read(DateExample.class, text); assertEquals(example.attribute, date); assertEquals(example.element, date); assertEquals(example.array[0], date); assertEquals(example.list.get(0), date); assertEquals(example.list.get(1), date); validate(example, persister); } public void testCyclicPersistence() throws Exception { long now = System.currentTimeMillis(); Date date = new Date(now); CycleStrategy strategy = new CycleStrategy(); Persister persister = new Persister(strategy); DateExample example = new DateExample(date); StringWriter out = new StringWriter(); assertEquals(example.attribute, date); assertEquals(example.element, date); assertEquals(example.array[0], date); assertEquals(example.list.get(0), date); assertEquals(example.list.get(1), date); persister.write(example, out); String text = out.toString(); assertElementHasAttribute(text, "/dateExample", "id", "0"); assertElementHasAttribute(text, "/dateExample/array", "id", "1"); assertElementHasAttribute(text, "/dateExample/array/date", "id", "2"); assertElementHasAttribute(text, "/dateExample/element", "reference", "2"); assertElementHasAttribute(text, "/dateExample/list", "id", "3"); example = persister.read(DateExample.class, text); assertEquals(example.attribute, date); assertEquals(example.element, date); assertEquals(example.array[0], date); assertEquals(example.list.get(0), date); assertEquals(example.list.get(1), date); validate(example, persister); } }