/*
* Copyright (C) 2004, 2005, 2006 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 22. July 2004 by Joe Walnes
*/
package com.thoughtworks.acceptance;
import com.thoughtworks.acceptance.objects.StandardObject;
import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.io.xml.XStream11XmlFriendlyReplacer;
import com.thoughtworks.xstream.io.xml.XppDriver;
public class XStream11XmlFriendlyTest extends AbstractAcceptanceTest {
protected XStream createXStream() {
return new XStream(new XppDriver(new XStream11XmlFriendlyReplacer())) {
protected boolean useXStream11XmlFriendlyMapper() {
return true;
}
};
}
public static class WithDollarCharField extends StandardObject {
String $field;
String field$;
String fi$eld;
String fi$$eld;
}
public void testSupportsFieldsWithDollarChar() {
xstream.alias("dollar", WithDollarCharField.class);
WithDollarCharField in = new WithDollarCharField();
in.$field = "a";
in.field$ = "b";
in.fi$eld = "c";
in.fi$$eld = "d";
String expected11 = "" +
"<dollar>\n" +
" <_DOLLAR_field>a</_DOLLAR_field>\n" +
" <field_DOLLAR_>b</field_DOLLAR_>\n" +
" <fi_DOLLAR_eld>c</fi_DOLLAR_eld>\n" +
" <fi_DOLLAR__DOLLAR_eld>d</fi_DOLLAR__DOLLAR_eld>\n" +
"</dollar>";
String expected12 = "" +
"<dollar>\n"
+ " <_-field>a</_-field>\n"
+ " <field_->b</field_->\n"
+ " <fi_-eld>c</fi_-eld>\n"
+ " <fi_-_-eld>d</fi_-_-eld>\n"
+ "</dollar>";
assertWithAsymmetricalXml(in, expected11, expected12);
}
public static class WithUnderscoreCharField extends StandardObject {
String _field;
String field_;
String fi_eld;
String fi__eld;
}
public void testSupportsFieldsWithUnderscoreChar() {
xstream.alias("underscore", WithUnderscoreCharField.class);
WithUnderscoreCharField in = new WithUnderscoreCharField();
in._field = "a";
in.field_ = "b";
in.fi_eld = "c";
in.fi__eld = "d";
String expected11 = "" +
"<underscore>\n" +
" <__field>a</__field>\n" +
" <field__>b</field__>\n" +
" <fi__eld>c</fi__eld>\n" +
" <fi____eld>d</fi____eld>\n" +
"</underscore>";
assertWithAsymmetricalXml(in, expected11, expected11);
}
public void testSupportsAliasWithDashChar() {
xstream.alias("under-score", WithUnderscoreCharField.class);
WithUnderscoreCharField in = new WithUnderscoreCharField();
in._field = "a";
in.field_ = "b";
in.fi_eld = "c";
in.fi__eld = "d";
String expected11 = "" +
"<under-score>\n" +
" <__field>a</__field>\n" +
" <field__>b</field__>\n" +
" <fi__eld>c</fi__eld>\n" +
" <fi____eld>d</fi____eld>\n" +
"</under-score>";
assertWithAsymmetricalXml(in, expected11, expected11);
}
public static class A_B extends StandardObject {
private int x;
public A_B(int x) {
this.x = x;
}
}
public void testSupportsUnderscoreInShortClassName() {
String expected11 = ""
+ "<com.thoughtworks.acceptance.XStream11XmlFriendlyTest-A_B>\n"
+ " <x>3</x>\n"
+ "</com.thoughtworks.acceptance.XStream11XmlFriendlyTest-A_B>";
String expected12 = ""
+ "<com.thoughtworks.acceptance.XStream11XmlFriendlyTest_-A__B>\n"
+ " <x>3</x>\n"
+ "</com.thoughtworks.acceptance.XStream11XmlFriendlyTest_-A__B>";
assertWithAsymmetricalXml(new A_B(3), expected11, expected12);
}
}