/*
* 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 16. February 2005 by Joe Walnes
*/
package com.thoughtworks.xstream.converters.extended;
import com.thoughtworks.acceptance.AbstractAcceptanceTest;
public class JavaClassConverterTest extends AbstractAcceptanceTest {
public void testHandlesPrimitivesAndWrappers() {
assertBothWays(int.class, "<java-class>int</java-class>");
assertBothWays(Integer.class, "<java-class>java.lang.Integer</java-class>");
assertBothWays(boolean.class, "<java-class>boolean</java-class>");
assertBothWays(Boolean.class, "<java-class>java.lang.Boolean</java-class>");
assertBothWays(void.class, "<java-class>void</java-class>");
assertBothWays(Void.class, "<java-class>java.lang.Void</java-class>");
}
public static class A {}
public void testHandlesArrays() {
assertBothWays(A[].class,
"<java-class>[Lcom.thoughtworks.xstream.converters.extended.JavaClassConverterTest$A;</java-class>");
assertBothWays(int[].class,
"<java-class>[I</java-class>");
}
public void testHandlesMultidimensioanlArrays() {
assertBothWays(A[][].class,
"<java-class>[[Lcom.thoughtworks.xstream.converters.extended.JavaClassConverterTest$A;</java-class>");
assertBothWays(A[][][][].class,
"<java-class>[[[[Lcom.thoughtworks.xstream.converters.extended.JavaClassConverterTest$A;</java-class>");
assertBothWays(int[][].class,
"<java-class>[[I</java-class>");
assertBothWays(int[][][][].class,
"<java-class>[[[[I</java-class>");
}
public static class B {}
public void testResolvesUnloadedClassThatIsAnArray() {
// subtleties in classloaders make this an awkward one
String input = "<java-class>[Lcom.thoughtworks.xstream.converters.extended.JavaClassConverterTest$B;</java-class>";
Class result = (Class) xstream.fromXML(input);
assertEquals("[Lcom.thoughtworks.xstream.converters.extended.JavaClassConverterTest$B;", result.getName());
assertTrue("Should be an array", result.isArray());
assertEquals("com.thoughtworks.xstream.converters.extended.JavaClassConverterTest$B", result.getComponentType().getName());
}
}