package org.uva.ql.test.evaluator; import org.junit.Assert; import org.junit.Before; import org.junit.Test; import org.uva.ql.ast.CodePosition; import org.uva.ql.ast.expression.binary.Addition; import org.uva.ql.ast.expression.binary.Equal; import org.uva.ql.ast.expression.binary.NotEqual; import org.uva.ql.ast.expression.literal.StrLiteral; import org.uva.ql.evaluation.Evaluator; public class StringTest { private final String STR_VALUE1 = "Hello"; private final String STR_VALUE2 = "World"; private final CodePosition POS = new CodePosition(0, 0); private final StrLiteral STR_LITERAL1 = new StrLiteral(STR_VALUE1, POS); private final StrLiteral STR_LITERAL2 = new StrLiteral(STR_VALUE2, POS); private final Evaluator EVALUATOR = new Evaluator(); @Test public void testPlusStr() { String expected = STR_VALUE1 + STR_VALUE2; String actual = (String) EVALUATOR.evaluate(new Addition(STR_LITERAL1, STR_LITERAL2, POS)).value(); Assert.assertEquals(expected, actual); } @Test public void testEqualStr1() { boolean expected = STR_VALUE1 == STR_VALUE1; boolean actual = (boolean) EVALUATOR.evaluate(new Equal(STR_LITERAL1, STR_LITERAL1, POS)).value(); Assert.assertEquals(expected, actual); } @Test public void testEqualStr2() { boolean expected = STR_VALUE1 == STR_VALUE2; boolean actual = (boolean) EVALUATOR.evaluate(new Equal(STR_LITERAL1, STR_LITERAL2, POS)).value(); Assert.assertEquals(expected, actual); } @Test public void testNotEqualStr1() { boolean expected = STR_VALUE1 != STR_VALUE1; boolean actual = (boolean) EVALUATOR.evaluate(new NotEqual(STR_LITERAL1, STR_LITERAL1, POS)).value(); Assert.assertEquals(expected, actual); } @Test public void testNotEqualStr2() { boolean expected = STR_VALUE1 != STR_VALUE2; boolean actual = (boolean) EVALUATOR.evaluate(new NotEqual(STR_LITERAL1, STR_LITERAL2, POS)).value(); Assert.assertEquals(expected, actual); } }