/*
* Copyright (C) 2003, 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 26. September 2003 by Joe Walnes
*/
package com.thoughtworks.acceptance;
import java.math.BigDecimal;
import java.math.BigInteger;
public class BasicTypesTest extends AbstractAcceptanceTest {
public void testPrimitiveNumbers() {
assertBothWays(new Integer(99), "<int>99</int>");
assertBothWays(new Integer(-99), "<int>-99</int>");
assertBothWays(new Integer(0), "<int>0</int>");
assertBothWays(new Float(-123.45f), "<float>-123.45</float>");
assertBothWays(new Double(-1234567890.12345), "<double>-1.23456789012345E9</double>");
assertBothWays(new Long(123456789123456L), "<long>123456789123456</long>");
assertBothWays(new Short((short) 123), "<short>123</short>");
}
public void testDifferentBaseIntegers() {
assertEquals(new Integer(255), xstream.fromXML("<int>0xFF</int>"));
assertEquals(new Integer(8), xstream.fromXML("<int>010</int>"));
}
public void testNegativeIntegersInHex() {
assertEquals(new Byte((byte)-1), xstream.fromXML("<byte>0xFF</byte>"));
assertEquals(new Short((short)-1), xstream.fromXML("<short>0xFFFF</short>"));
assertEquals(new Integer(-1), xstream.fromXML("<int>0xFFFFFFFF</int>"));
assertEquals(new Long(Long.MAX_VALUE), xstream.fromXML("<long>0x7FFFFFFFFFFFFFFF</long>"));
}
public void testNegativeIntegersInOctal() {
assertEquals(new Byte((byte)-1), xstream.fromXML("<byte>0377</byte>"));
assertEquals(new Short((short)-1), xstream.fromXML("<short>0177777</short>"));
assertEquals(new Integer(-1), xstream.fromXML("<int>037777777777</int>"));
assertEquals(new Long(Long.MAX_VALUE), xstream.fromXML("<long>0777777777777777777777</long>"));
}
public void testOtherPrimitives() {
assertBothWays(new Character('z'), "<char>z</char>");
assertBothWays(Boolean.TRUE, "<boolean>true</boolean>");
assertBothWays(Boolean.FALSE, "<boolean>false</boolean>");
assertBothWays(new Byte((byte) 44), "<byte>44</byte>");
}
public void testNullCharacter() {
assertEquals(new Character('\0'), xstream.fromXML("<char null=\"true\"/>")); // pre XStream 1.3
assertBothWays(new Character('\0'), "<char></char>");
}
public void testNonUnicodeCharacter() {
assertBothWays(new Character('\uffff'), "<char></char>");
}
public void testStrings() {
assertBothWays("hello world", "<string>hello world</string>");
}
public void testStringsWithISOControlCharacter() {
assertBothWays("hello\u0004world", "<string>helloworld</string>");
assertBothWays("hello\u0096world", "<string>helloworld</string>");
}
public void testStringBuffer() {
StringBuffer buffer = new StringBuffer();
buffer.append("woo");
String xml = xstream.toXML(buffer);
assertEquals(xml, "<string-buffer>woo</string-buffer>");
StringBuffer out = (StringBuffer) xstream.fromXML(xml);
assertEquals("woo", out.toString());
}
public void testBigInteger() {
BigInteger bigInteger = new BigInteger("1234567890123456");
assertBothWays(bigInteger, "<big-int>1234567890123456</big-int>");
}
public void testBigDecimal() {
BigDecimal bigDecimal = new BigDecimal("1234567890123456.987654321");
assertBothWays(bigDecimal, "<big-decimal>1234567890123456.987654321</big-decimal>");
}
public void testNull() {
assertBothWays(null, "<null/>");
}
public void testNumberFormats() {
assertEquals(1.0, ((Double)xstream.fromXML("<double>1</double>")).doubleValue(), 0.001);
assertEquals(1.0f, ((Float)xstream.fromXML("<float>1</float>")).floatValue(), 0.001);
}
}