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 }