/* * Copyright (C) 2005 Joe Walnes. * Copyright (C) 2006, 2007, 2008 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 18. March 2005 by Joe Walnes */ package com.thoughtworks.xstream.converters.enums; import com.thoughtworks.xstream.XStream; import junit.framework.TestCase; // ***** READ THIS ***** // This class will only compile with JDK 1.5.0 or above as it test Java enums. // If you are using an earlier version of Java, just don't try to build this class. XStream should work fine without it. /** * @author Joe Walnes * @author Bryan Coleman */ public class EnumConverterTest extends TestCase { private XStream xstream; protected void setUp() throws Exception { super.setUp(); xstream = new XStream(); xstream.alias("simple", SimpleEnum.class); xstream.alias("polymorphic", PolymorphicEnum.class); } public void testRepresentsEnumAsSingleStringValue() { String expectedXml = "<simple>GREEN</simple>"; SimpleEnum in = SimpleEnum.GREEN; assertEquals(expectedXml, xstream.toXML(in)); assertEquals(in, xstream.fromXML(expectedXml)); } public void testRepresentsPolymorphicEnumAsSingleStringValue() { String expectedXml = "<polymorphic>B</polymorphic>"; PolymorphicEnum in = PolymorphicEnum.B; assertEquals(expectedXml, xstream.toXML(in)); assertEquals(in, xstream.fromXML(expectedXml)); } public void testDeserializedEnumIsTheSameNotJustEqual() { assertSame(SimpleEnum.GREEN, xstream.fromXML(xstream.toXML(SimpleEnum.GREEN))); assertSame(PolymorphicEnum.B, xstream.fromXML(xstream.toXML(PolymorphicEnum.B))); } public void testResolvesSpecializedPolymorphicEnum() { PolymorphicEnum in; PolymorphicEnum out; in = PolymorphicEnum.A; out = (PolymorphicEnum) xstream.fromXML(xstream.toXML(in)); assertEquals("apple", ((Fruit)out).fruit()); // see Bug ID: 6522780 in = PolymorphicEnum.B; out = (PolymorphicEnum) xstream.fromXML(xstream.toXML(in)); assertEquals("banana", ((Fruit)out).fruit()); // see Bug ID: 6522780 } }