1 package com.thoughtworks.acceptance;
2
3 import com.thoughtworks.someobjects.WithList;
4
5 import java.util.ArrayList;
6 import java.util.LinkedList;
7
8 public class ConcreteClassesTest extends AbstractAcceptanceTest {
9
10 public void testDefaultImplementationOfInterface() {
11
12 xstream.alias("with-list", WithList.class);
13
14 WithList withList = new WithList();
15 withList.things = new ArrayList();
16
17 String expected =
18 "<with-list>\n" +
19 " <things/>\n" +
20 "</with-list>";
21
22 assertBothWays(withList, expected);
23
24 }
25
26 public void testAlternativeImplementationOfInterface() {
27
28 xstream.alias("with-list", WithList.class);
29 xstream.alias("linked-list", LinkedList.class);
30
31 WithList withList = new WithList();
32 withList.things = new LinkedList();
33
34 String expected =
35 "<with-list>\n" +
36 " <things class=\"linked-list\"/>\n" +
37 "</with-list>";
38
39 assertBothWays(withList, expected);
40
41 }
42
43 interface MyInterface {
44 }
45
46 class MyImp1 implements MyInterface {
47 int x = 1;
48 }
49
50 class MyImp2 implements MyInterface {
51 int y = 2;
52 }
53
54 class MyHolder {
55 MyInterface field1;
56 MyInterface field2;
57 }
58
59 public void testCustomInterfaceCanHaveMultipleImplementations() {
60 xstream.alias("intf", MyInterface.class);
61 xstream.alias("imp1", MyImp1.class);
62 xstream.alias("imp2", MyImp2.class);
63 xstream.alias("h", MyHolder.class);
64
65 MyHolder in = new MyHolder();
66 in.field1 = new MyImp1();
67 in.field2 = new MyImp2();
68
69 String expected = "" +
70 "<h>\n" +
71 " <field1 class=\"imp1\">\n" +
72 " <x>1</x>\n" +
73 " </field1>\n" +
74 " <field2 class=\"imp2\">\n" +
75 " <y>2</y>\n" +
76 " </field2>\n" +
77 "</h>";
78
79 String xml = xstream.toXML(in);
80 assertEquals(expected, xml);
81
82 MyHolder out = (MyHolder) xstream.fromXML(xml);
83 assertEquals(MyImp1.class, out.field1.getClass());
84 assertEquals(MyImp2.class, out.field2.getClass());
85 assertEquals(2, ((MyImp2) out.field2).y);
86 }
87 }
This page was automatically generated by Maven