abstractcircularreferencetest.java

来自「xstream是一个把java object序列化成xml文件的开源库,轻便好用」· Java 代码 · 共 90 行

JAVA
90
字号
package com.thoughtworks.acceptance;public abstract class AbstractCircularReferenceTest extends AbstractAcceptanceTest {    protected void setUp() throws Exception {        super.setUp();        xstream.alias("person", Person.class);    }    public static class Person {        public String firstname;        public Person likes;        public Person loathes;        public Person() {        }        public Person(String name) {            this.firstname = name;        }    }    public void testCircularReference() {        Person bob = new Person("bob");        Person jane = new Person("jane");        bob.likes = jane;        jane.likes = bob;        String xml = xstream.toXML(bob);        Person bobOut = (Person) xstream.fromXML(xml);        assertEquals("bob", bobOut.firstname);        Person janeOut = bobOut.likes;        assertEquals("jane", janeOut.firstname);        assertSame(bobOut.likes, janeOut);        assertSame(bobOut, janeOut.likes);    }    public void testCircularReferenceToSelf() {        Person bob = new Person("bob");        bob.likes = bob;        String xml = xstream.toXML(bob);        Person bobOut = (Person) xstream.fromXML(xml);        assertEquals("bob", bobOut.firstname);        assertSame(bobOut, bobOut.likes);    }    public void testDeepCircularReferences() {        Person bob = new Person("bob");        Person jane = new Person("jane");        Person ann = new Person("ann");        Person poo = new Person("poo");        bob.likes = jane;        bob.loathes = ann;        ann.likes = jane;        ann.loathes = poo;        poo.likes = jane;        poo.loathes = ann;        jane.likes = jane;        jane.loathes = bob;        String xml = xstream.toXML(bob);        Person bobOut = (Person) xstream.fromXML(xml);        Person janeOut = bobOut.likes;        Person annOut = bobOut.loathes;        Person pooOut = annOut.loathes;        assertEquals("bob", bobOut.firstname);        assertEquals("jane", janeOut.firstname);        assertEquals("ann", annOut.firstname);        assertEquals("poo", pooOut.firstname);        assertSame(janeOut, bobOut.likes);        assertSame(annOut, bobOut.loathes);        assertSame(janeOut, annOut.likes);        assertSame(pooOut, annOut.loathes);        assertSame(janeOut, pooOut.likes);        assertSame(annOut, pooOut.loathes);        assertSame(janeOut, janeOut.likes);        assertSame(bobOut, janeOut.loathes);    }}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?