package org.drools.compiler.integrationtests;
import org.junit.After;
import org.junit.Assert;
import org.junit.Assume;
import org.junit.Test;
import org.kie.api.io.ResourceType;
import org.kie.internal.builder.KnowledgeBuilder;
import org.kie.internal.builder.KnowledgeBuilderFactory;
import org.kie.internal.io.ResourceFactory;
public class SwitchOverStringTest {
private static final String FUNCTION_WITH_SWITCH_OVER_STRING = "function void theTest(String input) {\n" +
" switch(input) {\n" +
" case \"Hello World\" :" +
" System.out.println(\"yep\");\n" +
" break;\n" +
" default :\n" +
" System.out.println(\"uh\");\n" +
" break;\n" +
" }\n" +
"}";
@After
public void cleanUp() {
System.clearProperty("drools.dialect.java.compiler.lnglevel");
}
@Test
public void testCompileSwitchOverStringWithLngLevel17() {
double javaVersion = Double.valueOf(System.getProperty("java.specification.version"));
Assume.assumeTrue("Test only makes sense on Java 7+.", javaVersion >= 1.7);
System.setProperty("drools.dialect.java.compiler.lnglevel", "1.7");
KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
kbuilder.add(ResourceFactory.newByteArrayResource(FUNCTION_WITH_SWITCH_OVER_STRING.getBytes()), ResourceType.DRL);
Assert.assertFalse("Compilation error(s) occurred!", kbuilder.hasErrors());
}
@Test
public void testShouldFailToCompileSwitchOverStringWithLngLevel16() {
System.setProperty("drools.dialect.java.compiler.lnglevel", "1.6");
KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
kbuilder.add(ResourceFactory.newByteArrayResource(FUNCTION_WITH_SWITCH_OVER_STRING.getBytes()), ResourceType.DRL);
Assert.assertTrue("Compilation error(s) expected!", kbuilder.hasErrors());
}
}