|
- package parser;
-
- import static org.junit.Assert.assertEquals;
-
- import org.junit.Test;
- import expression.*;
- import program.*;
-
- public class ParserTest {
- final String loopCode = "while (a) { r := r + b ; a := a - 1 }";
- final Loop loop = new Loop(new Identifier("a"), new Composition(new Assignment(new Identifier("r"), new Addition(new Identifier("r"), new Identifier("b"))), new Assignment(new Identifier("a"), new Subtraction(new Identifier("a"), new Int(1)))));
-
- final String assignmentCode = "a := 2";
- final Assignment assignment = new Assignment(new Identifier("a"), new Int(2));
-
- final String compositionCode = assignmentCode + " ; b := bar";
- final Composition composition = new Composition(assignment, new Assignment(new Identifier("b"), new Identifier("bar")));
-
- final String conditionalCode = "if (foo - bar) then { x := 5 } else { x := x }";
- final Conditional conditional = new Conditional(new Subtraction(new Identifier("foo"), new Identifier("bar")), new Assignment(new Identifier("x"), new Int(5)), new Assignment(new Identifier("x"), new Identifier("x")));
-
- final String programCode = compositionCode + " ; " + loopCode + " ; " + conditionalCode;
- final Program program = new Composition(new Composition(composition, loop), conditional);
-
- @Test
- public void testParse() {
- Parser parser = new Parser(programCode);
- assertEquals(program, parser.parse());
- }
-
- @Test
- public void testProgram() {
- Parser parser = new Parser(programCode);
- assertEquals(program, parser.program());
- }
-
- @Test
- public void testStatementAssignment() {
- Parser parser = new Parser(assignmentCode);
- assertEquals(assignment, parser.statement());
- }
-
- @Test
- public void testStatementConditional() {
- Parser parser = new Parser(conditionalCode);
- assertEquals(conditional, parser.statement());
- }
-
- @Test
- public void testStatementLoop() {
- Parser parser = new Parser(loopCode);
- assertEquals(loop, parser.statement());
- }
-
- @Test
- public void testAssignment() {
- Parser parser = new Parser(assignmentCode);
- assertEquals(assignment, parser.assignment());
- }
-
- @Test
- public void testConditional() {
- Parser parser = new Parser(conditionalCode);
- assertEquals(conditional, parser.conditional());
- }
-
- @Test
- public void testLoop() {
- Parser parser = new Parser(loopCode);
- assertEquals(loop, parser.loop());
- }
-
- final String expressionCode = "a+b - (c - 56) + -47";
- final Expression expression = new Addition(new Subtraction(new Addition(new Identifier("a"), new Identifier("b")), new Subtraction(new Identifier("c"), new Int(56))), new Int(-47));
-
- @Test
- public void testExpression() {
- Parser parser = new Parser(expressionCode);
- assertEquals(expression, parser.expression());
- }
-
- @Test
- public void testAtomExpression() {
- Parser parser = new Parser("(" + expressionCode + ")");
- assertEquals(expression, parser.atom());
- }
-
- @Test
- public void testAtomNumber() {
- Parser parser = new Parser("37658");
- assertEquals(new Int(37658), parser.atom());
- }
-
- @Test
- public void testAtomIdentifier() {
- Parser parser = new Parser("egjfd");
- assertEquals(new Identifier("egjfd"), parser.atom());
- }
-
- @Test
- public void testNumber() {
- Parser parser = new Parser("37658");
- assertEquals(new Int(37658), parser.integer());
- }
-
- @Test
- public void testIdentifier() {
- Parser parser = new Parser("egjfd");
- assertEquals(new Identifier("egjfd"), parser.identifier());
- }
- }
|