package net.ayld.facade.model; import java.util.Set; import junit.framework.Assert; import net.ayld.facade.bundle.impl.ManualJarExploder; import org.junit.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.google.common.collect.ImmutableSet; public class TestClassName { private static final Logger LOG = LoggerFactory.getLogger(ManualJarExploder.class); private final static Set<Character> INVALID_CLASSNAME_CHARS = ImmutableSet.of( '!', '@', '#', '%', '^', '&', '*', '(', ')', '-', '+', '{', '}', '[', ']', '"', '\'', '\\', '/', '?', ' ', ',', '|' ); @Test public void testInvalid() { blowUp(".this.should.blow.up"); blowUp("come.on.baby.light.my.fire."); blowUp("you..light.me.up.like.a.dynamite"); blowUp("the.meaning.is.42"); for (char invalid : INVALID_CLASSNAME_CHARS) { blowUp("fire.works" + invalid); } } @Test public void testValid() { dontBlowUp("as.valid.as.it.gets.yo"); dontBlowUp("ThisIsStillValidIfITsInTheDefaultPackage"); dontBlowUp("also.valid.as_hell"); dontBlowUp("the.meaning.is42"); } public void dontBlowUp(String validClassName) { // no need for try/catch here, but I really want to add the 'funny' comments so... try { new ClassName(validClassName); } catch (Exception e) { // awwwww LOG.error("awwwww",e); Assert.fail(); } // yay ! } private static void blowUp(String invalidClassName) { try { new ClassName(invalidClassName); } catch (IllegalArgumentException e) { // yay ! return; } // awwwww LOG.error(invalidClassName + ", is valid, but should not be !"); Assert.fail(); } }