/*
* Copyright (C) 2004, 2006 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 25. March 2004 by Joe Walnes
*/
package com.thoughtworks.acceptance;
import com.thoughtworks.acceptance.objects.SampleDynamicProxy;
public class DynamicProxyTest extends AbstractAcceptanceTest {
public static class ClassWithProxyMember {
SampleDynamicProxy.InterfaceOne one;
SampleDynamicProxy.InterfaceTwo two;
};
public void testCanBeMarshaled() {
assertBothWays(
SampleDynamicProxy.newInstance(),
""
+ "<dynamic-proxy>\n"
+ " <interface>com.thoughtworks.acceptance.objects.SampleDynamicProxy$InterfaceOne</interface>\n"
+ " <interface>com.thoughtworks.acceptance.objects.SampleDynamicProxy$InterfaceTwo</interface>\n"
+ " <handler class=\"com.thoughtworks.acceptance.objects.SampleDynamicProxy\">\n"
+ " <aField>hello</aField>\n"
+ " </handler>\n"
+ "</dynamic-proxy>");
}
public void testAsFieldMember() {
ClassWithProxyMember expected = new ClassWithProxyMember();
expected.one = (SampleDynamicProxy.InterfaceOne)SampleDynamicProxy.newInstance();
expected.two = (SampleDynamicProxy.InterfaceTwo)expected.one;
xstream.alias("with-proxy", ClassWithProxyMember.class);
assertBothWays(
expected,
""
+ "<with-proxy>\n"
+ " <one class=\"dynamic-proxy\">\n"
+ " <interface>com.thoughtworks.acceptance.objects.SampleDynamicProxy$InterfaceOne</interface>\n"
+ " <interface>com.thoughtworks.acceptance.objects.SampleDynamicProxy$InterfaceTwo</interface>\n"
+ " <handler class=\"com.thoughtworks.acceptance.objects.SampleDynamicProxy\">\n"
+ " <aField>hello</aField>\n"
+ " </handler>\n"
+ " </one>\n"
+ " <two class=\"dynamic-proxy\" reference=\"../one\"/>\n"
+ "</with-proxy>");
}
public void testTypeCanBeAliased() {
xstream.aliasType("one", SampleDynamicProxy.InterfaceOne.class);
xstream.alias("two", SampleDynamicProxy.InterfaceTwo.class);
xstream.alias("handler", SampleDynamicProxy.class);
String expected = ""
+ "<one>\n"
+ " <interface>one</interface>\n"
+ " <interface>two</interface>\n"
+ " <handler class=\"handler\">\n"
+ " <aField>hello</aField>\n"
+ " </handler>\n"
+ "</one>";
assertEquals(expected, xstream.toXML(SampleDynamicProxy.newInstance()));
}
}