package net.codjo.segmentation.server.util; import net.codjo.tokio.TokioFixture; import net.codjo.variable.UnknownVariableException; import org.junit.After; import static org.junit.Assert.assertEquals; import static org.junit.Assert.fail; import org.junit.Before; import org.junit.Test; /** * */ public class CompilationUtilTest { private TokioFixture tokio = new TokioFixture(getClass()); @Before public void setUp() throws Exception { tokio.doSetUp(); } @After public void tearDown() throws Exception { tokio.doTearDown(); } @Test public void test_replaceVariables() throws Exception { tokio.insertInputInDb("replaceVariables"); assertReplaceVariables("tititi tatata = tototo", "tititi tatata = tototo"); assertReplaceVariables("tititi tatata = tototo", "tititi tatata = INC_$$1$1234"); assertReplaceVariables("tititi tatata = tototo", "tititi tatata = INC_$$1$1111"); try { CompilationUtil.replaceVariables("tititi tatata = INC_$$1$2222", tokio.getConnection()); fail(); } catch (CompilationUtil.CyclicVariableException e) { assertEquals("La variable 'INC_$$1$2222' est une r�f�rence cyclique.", e.getLocalizedMessage()); } assertReplaceVariables("tototo = tototo", "INC_$$1$1111 = INC_$$1$1234"); try { CompilationUtil.replaceVariables("tititi tatata = INC_$$1$7890", tokio.getConnection()); fail(); } catch (UnknownVariableException e) { assertEquals("La variable \"INC_$$1$7890\" est inconnue ", e.getLocalizedMessage()); } } private void assertReplaceVariables(String expected, String expression) throws Exception { assertEquals(expected, CompilationUtil.replaceVariables(expression, tokio.getConnection())); } }