001 package org.picocontainer.script; 002 003 import static org.junit.Assert.assertEquals; 004 import static org.junit.Assert.assertNotNull; 005 import static org.junit.Assert.assertTrue; 006 import static org.picocontainer.script.ScriptedBuilderNameResolver.DEFAULT_XML_BUILDER; 007 008 import java.io.File; 009 import java.net.URL; 010 import java.util.Arrays; 011 import java.util.List; 012 import java.util.Set; 013 import java.util.TreeSet; 014 015 import org.junit.Test; 016 017 /** 018 * @author Michael Rimov 019 * @author Mauro Talevi 020 */ 021 public class ScriptedBuilderNameResolverTestCase { 022 private ScriptedBuilderNameResolver scriptBuilderResolver = new ScriptedBuilderNameResolver(); 023 024 @Test 025 public void testGetAllSupportedExtensions() { 026 Set<String> allExtensions = new TreeSet<String>(); 027 028 allExtensions.add(ScriptedBuilderNameResolver.XML); 029 030 String[] actualReturn = scriptBuilderResolver.getAllSupportedExtensions(); 031 assertNotNull(actualReturn); 032 033 List<String> returnAsList = Arrays.asList(actualReturn); 034 boolean someMerged = allExtensions.removeAll(returnAsList); 035 assertTrue(someMerged); 036 assertTrue(allExtensions.size() == 0); 037 } 038 039 @Test 040 public void testGetBuilderClassNameForFile() { 041 File compositionFile = new File("test.xml"); 042 assertEquals("return value", ScriptedBuilderNameResolver.DEFAULT_XML_BUILDER, scriptBuilderResolver.getBuilderClassName(compositionFile)); 043 } 044 045 @Test 046 public void testGetBuilderClassNameForResource() { 047 final String resourceName = "/org/picocontainer/script/xml/picocontainer.xml"; 048 URL compositionURL = this.getClass().getResource(resourceName); 049 assertEquals("return value", DEFAULT_XML_BUILDER, scriptBuilderResolver.getBuilderClassName(compositionURL)); 050 } 051 052 @Test 053 public void canGetBuilderClassNameForExtension() throws UnsupportedScriptTypeException { 054 assertEquals("return value", DEFAULT_XML_BUILDER, scriptBuilderResolver.getBuilderClassName(".xml")); 055 } 056 057 @Test(expected = UnsupportedScriptTypeException.class) 058 public void cannotGetBuilderClassNameForUnknownExtension() { 059 scriptBuilderResolver.getBuilderClassName(".foo"); 060 } 061 062 @Test 063 public void canRegisterBuilder() { 064 scriptBuilderResolver.registerBuilder(".foo", "org.example.FooBar"); 065 assertEquals("org.example.FooBar", scriptBuilderResolver.getBuilderClassName(".foo")); 066 } 067 068 @Test(expected = UnsupportedScriptTypeException.class) 069 public void cannotGetBuilderClassNameAfterReset() { 070 scriptBuilderResolver.registerBuilder(".foo", "org.example.FooBar"); 071 scriptBuilderResolver.resetBuilders(); 072 scriptBuilderResolver.getBuilderClassName(".foo"); 073 } 074 075 }