/*
* 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 06. April 2005 by Joe Walnes
*/
package com.thoughtworks.xstream.converters.enums;
import com.thoughtworks.xstream.XStream;
import junit.framework.TestCase;
import java.util.EnumSet;
public class EnumSetConverterTest extends TestCase {
private XStream xstream;
protected void setUp() throws Exception {
super.setUp();
xstream = new XStream();
}
public void testPutsEnumsInCompactCommaSeparatedString() {
xstream.alias("simple", SimpleEnum.class);
EnumSet<SimpleEnum> set = EnumSet.of(SimpleEnum.GREEN, SimpleEnum.BLUE);
String expectedXml = "<enum-set enum-type=\"simple\">GREEN,BLUE</enum-set>";
assertEquals(expectedXml, xstream.toXML(set));
assertEquals(set, xstream.fromXML(expectedXml));
}
public void testSupportsJumboEnumSetsForMoreThan64Elements() {
xstream.alias("big", BigEnum.class);
EnumSet<BigEnum> jumboSet = EnumSet.allOf(BigEnum.class);
String expectedXml = "<enum-set enum-type=\"big\">" +
"A1,B1,C1,D1,E1,F1,G1,H1,I1,J1,K1,L1,M1,N1,O1,P1,Q1,R1,S1,T1,U1,V1,W1,X1,Y1,Z1," +
"A2,B2,C2,D2,E2,F2,G2,H2,I2,J2,K2,L2,M2,N2,O2,P2,Q2,R2,S2,T2,U2,V2,W2,X2,Y2,Z2," +
"A3,B3,C3,D3,E3,F3,G3,H3,I3,J3,K3,L3,M3,N3,O3,P3,Q3,R3,S3,T3,U3,V3,W3,X3,Y3,Z3" +
"</enum-set>";
assertEquals(expectedXml, xstream.toXML(jumboSet));
assertEquals(jumboSet, xstream.fromXML(expectedXml));
}
public void testSupportsPolymorphicEnums() {
xstream.alias("poly", PolymorphicEnum.class);
EnumSet<PolymorphicEnum> set = EnumSet.allOf(PolymorphicEnum.class);
String expectedXml = "<enum-set enum-type=\"poly\">A,B</enum-set>";
assertEquals(expectedXml, xstream.toXML(set));
assertEquals(set, xstream.fromXML(expectedXml));
}
public void testEmptyEnumSet() {
xstream.alias("simple", SimpleEnum.class);
EnumSet<SimpleEnum> set = EnumSet.noneOf(SimpleEnum.class);
String expectedXml = "<enum-set enum-type=\"simple\"></enum-set>";
assertEquals(expectedXml, xstream.toXML(set));
assertEquals(set, xstream.fromXML(expectedXml));
}
}