001 package org.picocontainer.defaults; 002 003 import com.thoughtworks.xstream.XStream; 004 import com.thoughtworks.xstream.core.JVM; 005 import com.thoughtworks.xstream.io.xml.XppDriver; 006 import junit.framework.TestCase; 007 import org.picocontainer.MutablePicoContainer; 008 import org.picocontainer.PicoContainer; 009 import org.picocontainer.testmodel.DependsOnTouchable; 010 import org.picocontainer.testmodel.SimpleTouchable; 011 012 /** 013 * @author Aslak Hellesøy 014 * @version $Revision: 1697 $ 015 */ 016 public class XStreamSerialisationTestCase extends TestCase { 017 private XStream xStream = new XStream(new XppDriver()); 018 019 public void testShouldBeAbleToSerialiseEmptyPico() { 020 if (JVM.is14()) { 021 MutablePicoContainer pico = new DefaultPicoContainer(); 022 String picoXml = xStream.toXML(pico); 023 PicoContainer serializedPico = (PicoContainer) xStream.fromXML(picoXml); 024 025 assertEquals(0, serializedPico.getComponentInstances().size()); 026 } 027 } 028 029 public void testShouldBeAbleToSerialisePicoWithUninstantiatedComponents() { 030 if (JVM.is14()) { 031 MutablePicoContainer pico = new DefaultPicoContainer(); 032 pico.registerComponentImplementation(SimpleTouchable.class); 033 pico.registerComponentImplementation(DependsOnTouchable.class); 034 String picoXml = xStream.toXML(pico); 035 PicoContainer serializedPico = (PicoContainer) xStream.fromXML(picoXml); 036 037 assertEquals(2, serializedPico.getComponentInstances().size()); 038 } 039 } 040 041 public void testShouldBeAbleToSerialisePicoWithInstantiatedComponents() { 042 if (JVM.is14()) { 043 MutablePicoContainer pico = new DefaultPicoContainer(); 044 pico.registerComponentImplementation(SimpleTouchable.class); 045 pico.registerComponentImplementation(DependsOnTouchable.class); 046 pico.getComponentInstances(); 047 String picoXml = xStream.toXML(pico); 048 PicoContainer serializedPico = (PicoContainer) xStream.fromXML(picoXml); 049 050 assertEquals(2, serializedPico.getComponentInstances().size()); 051 } 052 } 053 }