001    package org.picocontainer.script.xml;
002    
003    import static org.junit.Assert.assertEquals;
004    import static org.junit.Assert.assertNotNull;
005    
006    import java.io.File;
007    import java.io.FileWriter;
008    import java.io.IOException;
009    import java.io.Reader;
010    import java.io.StringReader;
011    import java.net.URL;
012    
013    import org.junit.Test;
014    import org.picocontainer.script.ScriptedContainerBuilder;
015    import org.picocontainer.script.ScriptedContainerBuilderFactory;
016    
017    public class XMLScriptedContainerBuilderFactoryTestCase {
018    
019        private static final String TEST_SCRIPT_PATH = "/org/picocontainer/script/xml/picocontainer.xml";
020    
021        @Test public void testScriptedContainerBuilderFactoryWithUrl() throws ClassNotFoundException {
022            URL resource = getClass().getResource(TEST_SCRIPT_PATH);
023            assertNotNull("Could not find script resource '+ TEST_SCRIPT_PATH + '.", resource);
024    
025            ScriptedContainerBuilderFactory result = new ScriptedContainerBuilderFactory(resource);
026            ScriptedContainerBuilder builder = result.getContainerBuilder();
027            assertNotNull(builder);
028            assertEquals(XMLContainerBuilder.class.getName(), builder.getClass().getName());
029        }
030    
031        @Test public void testBuildWithReader() throws ClassNotFoundException {
032            Reader script = new StringReader("" +
033                "<?xml version='1.0'?>"+
034                "<container>"+
035                " <container> " +
036                "  <component class='java.util.ArrayList' />"+
037                " </container> "+
038                "</container>" +
039                "");
040    
041            ScriptedContainerBuilderFactory result = new ScriptedContainerBuilderFactory(script,
042                    XMLContainerBuilder.class.getName());
043            ScriptedContainerBuilder builder = result.getContainerBuilder();
044            assertNotNull(builder);
045            assertEquals(XMLContainerBuilder.class.getName(), builder.getClass().getName());
046        }
047    
048        @Test
049        public void testBuildWithFile() throws IOException {
050            File resource = File.createTempFile("picocontainer", ".xml");
051            FileWriter writer = new FileWriter(resource);
052            writer.write("<?xml version='1.0'?>\n"+
053                         "<container/>");
054            writer.close();
055            assertNotNull("Could not find script resource '+ TEST_SCRIPT_PATH + '.", resource);
056    
057            ScriptedContainerBuilderFactory result = new ScriptedContainerBuilderFactory(resource);
058            ScriptedContainerBuilder builder = result.getContainerBuilder();
059            assertNotNull(builder);
060            assertEquals(XMLContainerBuilder.class.getName(), builder.getClass().getName());
061    
062        }
063    
064    
065    }