package com.google.sitebricks.client.transport; import com.thoughtworks.xstream.XStream; import org.testng.annotations.DataProvider; import org.testng.annotations.Test; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.Date; /** * Unit test for the xml transport supported out of the box. */ public class XmlTransportTest { private static final String ROBOTS = "robots"; @DataProvider(name = ROBOTS) Object[][] objects() { return new Object[][] { { new Robot("megatron", new Date(), 333, 12887L, null) }, { new Robot("meg aoskdoaks", new Date(192839), 3, 12887L, new Robot("egatron", new Date(), 2193833, 12312887L, null)) }, { new Robot("iaisdja aijsd", new Date(1293891283), 333, 12887L, null) }, }; } @Test(dataProvider = ROBOTS) public final void xmlTransport(Robot robot) throws IOException { ByteArrayOutputStream out = new ByteArrayOutputStream(); new XStreamXmlTransport(new XStream()).out(out, Robot.class, robot); Robot in = new XStreamXmlTransport(new XStream()).in(new ByteArrayInputStream(out.toByteArray()), Robot.class); assert robot.equals(in) : "Xml transport was not balanced"; } public static class Robot { public Robot() { } public Robot(String name, Date time, int age, long looong, Robot pet) { this.name = name; this.time = time; this.age = age; this.looong = looong; this.pet = pet; } private String name; private Date time; private int age; private long looong = 123L; private Robot pet; @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; Robot that = (Robot) o; if (age != that.age) return false; if (looong != that.looong) return false; if (name != null ? !name.equals(that.name) : that.name != null) return false; if (pet != null ? !pet.equals(that.pet) : that.pet != null) return false; if (time != null ? !time.equals(that.time) : that.time != null) return false; return true; } @Override public int hashCode() { int result = name != null ? name.hashCode() : 0; result = 31 * result + (time != null ? time.hashCode() : 0); result = 31 * result + age; result = 31 * result + (int) (looong ^ (looong >>> 32)); result = 31 * result + (pet != null ? pet.hashCode() : 0); return result; } } }