001 package org.nanocontainer.script;
002
003 import java.io.File;
004 import java.net.URL;
005 import java.util.Arrays;
006 import java.util.List;
007 import java.util.Set;
008 import java.util.TreeSet;
009 import junit.framework.TestCase;
010
011 /**
012 * Name/Builder Resolution Test Cases.
013 * @author Michael Rimov
014 */
015 public class ScriptBuilderResolverTestCase extends TestCase {
016 private ScriptBuilderResolver scriptBuilderResolver = null;
017
018 protected void setUp() throws Exception {
019 super.setUp();
020 scriptBuilderResolver = new ScriptBuilderResolver();
021 }
022
023 protected void tearDown() throws Exception {
024 scriptBuilderResolver = null;
025 super.tearDown();
026 }
027
028
029 public void testGetAllSupportedExtensions() {
030 Set allExtensions = new TreeSet();
031
032 allExtensions.add(ScriptBuilderResolver.XML);
033
034 String[] actualReturn = scriptBuilderResolver.getAllSupportedExtensions();
035 assertNotNull(actualReturn);
036
037 List returnAsList = Arrays.asList(actualReturn);
038 boolean someMerged = allExtensions.removeAll(returnAsList);
039 assertTrue(someMerged);
040 assertTrue(allExtensions.size() == 0);
041 }
042
043 public void testGetBuilderClassNameForFile() {
044 File compositionFile = new File("test.xml");
045 String expected = ScriptBuilderResolver.DEFAULT_XML_BUILDER;
046 String actual = scriptBuilderResolver.getBuilderClassName(compositionFile);
047 assertEquals("return value", expected, actual);
048 }
049
050 public void testGetBuilderClassNameForResource() {
051 final String resourceName = "/org/nanocontainer/nanocontainer.xml";
052 URL compositionURL = this.getClass().getResource(resourceName);
053 if (compositionURL == null) {
054 fail("This test depended on resource '"+ resourceName + "' which appears to have been moved");
055 }
056 String expected = ScriptBuilderResolver.DEFAULT_XML_BUILDER;
057 String actual = scriptBuilderResolver.getBuilderClassName(compositionURL);
058 assertEquals("return value", expected, actual);
059 }
060
061 public void testGetBuilderClassNameForExtension() throws UnsupportedScriptTypeException {
062 String expectedReturn = ScriptBuilderResolver.DEFAULT_XML_BUILDER;
063 String actualReturn = scriptBuilderResolver.getBuilderClassName(".xml");
064 assertEquals("return value", expectedReturn, actualReturn);
065 }
066
067 public void testGetBuilderForExtensionThrowsExceptionForUnknownBuilderType() {
068 try {
069 scriptBuilderResolver.getBuilderClassName(".foo");
070 fail("Retrieving extension of type .foo should have thrown exception");
071 } catch (UnsupportedScriptTypeException ex) {
072 assertEquals(".foo",ex.getRequestedExtension());
073 }
074 }
075
076 public void testRegisterBuilder() {
077 scriptBuilderResolver.registerBuilder(".foo","org.example.FooBar");
078 assertEquals("org.example.FooBar", scriptBuilderResolver.getBuilderClassName(".foo"));
079 }
080
081 public void testResetBuilders() {
082 scriptBuilderResolver.registerBuilder(".foo","org.example.FooBar");
083 scriptBuilderResolver.resetBuilders();
084 try {
085 scriptBuilderResolver.getBuilderClassName(".foo");
086 fail("Retrieving extension of type .foo should have thrown exception");
087 } catch (UnsupportedScriptTypeException ex) {
088 assertEquals(".foo",ex.getRequestedExtension());
089 }
090 }
091
092 }