/******************************************************************************* * * Copyright (c) 2004-2010 Oracle Corporation. * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * * Kohsuke Kawaguchi * * *******************************************************************************/ package hudson.util; import junit.framework.TestCase; import java.util.ArrayList; import java.util.List; /** * @author Kohsuke Kawaguchi, Alan Harder */ public class CopyOnWriteListTest extends TestCase { public static final class TestData { CopyOnWriteList list1 = new CopyOnWriteList(); List list2 = new ArrayList(); } /** * Verify that the serialization form of List and CopyOnWriteList are the same. */ public void testSerialization() throws Exception { XStream2 xs = new XStream2(); TestData td = new TestData(); String out = xs.toXML(td); assertEquals("empty lists", "<hudson.util.CopyOnWriteListTest_-TestData>" + "<list1/><list2/></hudson.util.CopyOnWriteListTest_-TestData>", out.replaceAll("\\s+", "")); TestData td2 = (TestData)xs.fromXML(out.toString()); assertTrue(td2.list1.isEmpty()); assertTrue(td2.list2.isEmpty()); td.list1.add("foobar1"); td.list2.add("foobar2"); out = xs.toXML(td); assertEquals("lists", "<hudson.util.CopyOnWriteListTest_-TestData>" + "<list1><string>foobar1</string></list1><list2><string>foobar2" + "</string></list2></hudson.util.CopyOnWriteListTest_-TestData>", out.replaceAll("\\s+", "")); td2 = (TestData)xs.fromXML(out.toString()); assertEquals("foobar1", td2.list1.getView().get(0)); assertEquals("foobar2", td2.list2.get(0)); } }