/* * Copyright (C) 2004, 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. March 2004 by Joe Walnes */ package com.thoughtworks.xstream.converters.extended; import com.thoughtworks.acceptance.AbstractAcceptanceTest; import com.thoughtworks.acceptance.objects.StandardObject; public class EncodedByteArrayConverterTest extends AbstractAcceptanceTest { public void testMarshallsCharArrayAsSingleString() { byte[] input = {0, 120, -124, 22, 33, 0, 5}; String expected = "<byte-array>AHiEFiEABQ==</byte-array>"; assertBothWays(input, expected); } public void testUnmarshallsOldByteArraysThatHaveNotBeenEncoding() { // for backwards compatability String input = "" + "<byte-array>\n" + " <byte>0</byte>\n" + " <byte>120</byte>\n" + " <byte>-124</byte>\n" + " <byte>22</byte>\n" + " <byte>33</byte>\n" + " <byte>0</byte>\n" + " <byte>5</byte>\n" + "</byte-array>"; byte[] expected = {0, 120, -124, 22, 33, 0, 5}; assertByteArrayEquals(expected, (byte[])xstream.fromXML(input)); } public void testUnmarshallsEmptyByteArrays() { byte[] input = {}; String expected = "<byte-array></byte-array>"; assertBothWays(input, expected); } public static class TestObject extends StandardObject { private byte[] data; private boolean something; } public void testUnmarshallsEmptyByteArrayAsFieldOfAnotherObject() { // exposes a weird bug that was in the XML pull readers. TestObject in = new TestObject(); in.data = new byte[0]; xstream.alias("TestObject", TestObject.class); String expectedXml = "" + "<TestObject>\n" + " <data></data>\n" + " <something>false</something>\n" + "</TestObject>"; assertBothWays(in, expectedXml); } }