001    /*****************************************************************************
002     * Copyright (C) PicoContainer Organization. All rights reserved.            *
003     * ------------------------------------------------------------------------- *
004     * The software in this package is published under the terms of the BSD      *
005     * style license a copy of which has been included with this distribution in *
006     * the LICENSE.txt file.                                                     *
007     *                                                                           *
008     * Original code by                                                          *
009     *****************************************************************************/
010    package org.picocontainer.defaults;
011    
012    import static org.junit.Assert.assertEquals;
013    
014    import org.junit.Test;
015    import org.picocontainer.DefaultPicoContainer;
016    import org.picocontainer.MutablePicoContainer;
017    import org.picocontainer.PicoContainer;
018    import org.picocontainer.testmodel.DependsOnTouchable;
019    import org.picocontainer.testmodel.SimpleTouchable;
020    
021    import com.thoughtworks.xstream.XStream;
022    import com.thoughtworks.xstream.core.JVM;
023    import com.thoughtworks.xstream.io.xml.XppDriver;
024    
025    /**
026     * @author Aslak Hellesøy
027     */
028    public final class XStreamSerialisationTestCase {
029        private final XStream xStream = new XStream(new XppDriver());
030    
031        @Test public void testShouldBeAbleToSerialiseEmptyPico() {
032            if (JVM.is14()) {
033                MutablePicoContainer pico = new DefaultPicoContainer();
034                String picoXml = xStream.toXML(pico);
035                PicoContainer serializedPico = (PicoContainer) xStream.fromXML(picoXml);
036    
037                assertEquals(0, serializedPico.getComponents().size());
038            }
039        }
040    
041        @Test public void testShouldBeAbleToSerialisePicoWithUninstantiatedComponents() {
042            if (JVM.is14()) {
043                MutablePicoContainer pico = new DefaultPicoContainer();
044                pico.addComponent(SimpleTouchable.class);
045                pico.addComponent(DependsOnTouchable.class);
046                String picoXml = xStream.toXML(pico);
047                PicoContainer serializedPico = (PicoContainer) xStream.fromXML(picoXml);
048    
049                assertEquals(2, serializedPico.getComponents().size());
050            }
051        }
052    
053        @Test public void testShouldBeAbleToSerialisePicoWithInstantiatedComponents() {
054            if (JVM.is14()) {
055                MutablePicoContainer pico = new DefaultPicoContainer();
056                pico.addComponent(SimpleTouchable.class);
057                pico.addComponent(DependsOnTouchable.class);
058                pico.getComponents();
059                String picoXml = xStream.toXML(pico);
060                PicoContainer serializedPico = (PicoContainer) xStream.fromXML(picoXml);
061    
062                assertEquals(2, serializedPico.getComponents().size());
063            }
064        }
065    }