TokenizerUnknownTokenOrVariableTest.java
package net.objecthunter.exp4j.tokenizer;
import org.junit.Assert;
import org.junit.Test;
/**
* This test is to check if {@link UnknownFunctionOrVariableException} generated when expression
* contains unknown function or variable contains necessary expected details.
*
* @author Bartosz Firyn (sarxos)
*/
public class TokenizerUnknownTokenOrVariableTest {
@Test(expected = UnknownFunctionOrVariableException.class)
public void testTokenizationOfUnknownVariable() {
final Tokenizer tokenizer = new Tokenizer("3 + x", null, null, null);
while (tokenizer.hasNext()) {
tokenizer.nextToken();
}
}
@Test
public void testTokenizationOfUnknownVariable1Details() {
final Tokenizer tokenizer = new Tokenizer("3 + x", null, null, null);
tokenizer.nextToken(); // 3
tokenizer.nextToken(); // +
try {
tokenizer.nextToken(); // x
Assert.fail("Variable 'x' should be unknown!");
} catch (UnknownFunctionOrVariableException e) {
Assert.assertEquals("x", e.getToken());
Assert.assertEquals(4, e.getPosition());
Assert.assertEquals("3 + x", e.getExpression());
}
}
@Test
public void testTokenizationOfUnknownVariable2Details() {
final Tokenizer tokenizer = new Tokenizer("x + 3", null, null, null);
try {
tokenizer.nextToken(); // x
Assert.fail("Variable 'x' should be unknown!");
} catch (UnknownFunctionOrVariableException e) {
Assert.assertEquals("x", e.getToken());
Assert.assertEquals(0, e.getPosition());
Assert.assertEquals("x + 3", e.getExpression());
}
}
@Test(expected = UnknownFunctionOrVariableException.class)
public void testTokenizationOfUnknownFunction() {
final Tokenizer tokenizer = new Tokenizer("3 + p(1)", null, null, null);
while (tokenizer.hasNext()) {
tokenizer.nextToken();
}
}
@Test
public void testTokenizationOfUnknownFunction1Details() {
final Tokenizer tokenizer = new Tokenizer("3 + p(1)", null, null, null);
tokenizer.nextToken(); // 3
tokenizer.nextToken(); // +
try {
tokenizer.nextToken(); // p
Assert.fail("Function 'p' should be unknown!");
} catch (UnknownFunctionOrVariableException e) {
Assert.assertEquals("p", e.getToken());
Assert.assertEquals(4, e.getPosition());
Assert.assertEquals("3 + p(1)", e.getExpression());
}
}
@Test
public void testTokenizationOfUnknownFunction2Details() {
final Tokenizer tokenizer = new Tokenizer("p(1) + 3", null, null, null);
try {
tokenizer.nextToken(); // p
Assert.fail("Function 'p' should be unknown!");
} catch (UnknownFunctionOrVariableException e) {
Assert.assertEquals("p", e.getToken());
Assert.assertEquals(0, e.getPosition());
Assert.assertEquals("p(1) + 3", e.getExpression());
}
}
}