Skip to content

Commit

Permalink
Remove redundant right associativity tests
Browse files Browse the repository at this point in the history
  • Loading branch information
dilanSachi committed Feb 3, 2025
1 parent 2c7cf1c commit f9fa18b
Showing 1 changed file with 20 additions and 71 deletions.
91 changes: 20 additions & 71 deletions src/test/java/fi/helsinki/compiler/parser/ParserTests.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import fi.helsinki.compiler.tokenizer.TokenType;
import fi.helsinki.compiler.tokenizer.Tokenizer;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;

import java.util.List;
Expand Down Expand Up @@ -41,20 +42,6 @@ public void testBasicMultiplication() throws ParserException {
assertEquals(operatorToken.getTokenType(), TokenType.OPERATOR);
}

@Test
public void testBasicAdditionWithRightAssociativity() throws ParserException {
Tokenizer tokenizer = new Tokenizer();
Parser testParser = new Parser(tokenizer.tokenize("1 + 2", "Testfile.dl"));
BinaryOp binaryOp = (BinaryOp) testParser.parseExpressionWithRightAssociativity();
Literal leftLiteral = (Literal) binaryOp.getLeft();
Token operatorToken = binaryOp.getOperatorToken();
Literal rightLiteral = (Literal) binaryOp.getRight();
assertEquals(leftLiteral.getValue(), 1);
assertEquals(rightLiteral.getValue(), 2);
assertEquals(operatorToken.getText(), "+");
assertEquals(operatorToken.getTokenType(), TokenType.OPERATOR);
}

@Test
public void testAdditionAndSubtraction() throws ParserException {
Tokenizer tokenizer = new Tokenizer();
Expand Down Expand Up @@ -84,7 +71,9 @@ public void testAdditionAndSubtraction() throws ParserException {
public void testAdditionAndSubtractionWithRemainder() throws ParserException {
Tokenizer tokenizer = new Tokenizer();
Parser testParser = new Parser(tokenizer.tokenize("1 + 225 % 10 - 8", "Testfile.dl"));
BinaryOp binaryOp = (BinaryOp) testParser.parse();
Block block = testParser.parse2();
assertEquals(block.getExpressionList().size(), 1);
BinaryOp binaryOp = (BinaryOp) block.getExpressionList().get(0);
Literal rightLiteral = (Literal) binaryOp.getRight();
Token operatorToken = binaryOp.getOperatorToken();
assertEquals(rightLiteral.getValue(), 8);
Expand All @@ -103,7 +92,9 @@ public void testAdditionAndSubtractionWithRemainder() throws ParserException {
public void testEqualOperator() throws ParserException {
Tokenizer tokenizer = new Tokenizer();
Parser testParser = new Parser(tokenizer.tokenize("x = y + 20", "Testfile.dl"));
BinaryOp binaryOp = (BinaryOp) testParser.parse();
Block block = testParser.parse2();
assertEquals(block.getExpressionList().size(), 1);
BinaryOp binaryOp = (BinaryOp) block.getExpressionList().get(0);
assertEquals(((Identifier) binaryOp.getLeft()).getName(), "x");
assertEquals(binaryOp.getOperatorToken().getText(), "=");
BinaryOp rightOp = (BinaryOp) binaryOp.getRight();
Expand All @@ -116,7 +107,9 @@ public void testEqualOperator() throws ParserException {
public void testDoubleEqualOperator() throws ParserException {
Tokenizer tokenizer = new Tokenizer();
Parser testParser = new Parser(tokenizer.tokenize("x == y + 20", "Testfile.dl"));
BinaryOp binaryOp = (BinaryOp) testParser.parse();
Block block = testParser.parse2();
assertEquals(block.getExpressionList().size(), 1);
BinaryOp binaryOp = (BinaryOp) block.getExpressionList().get(0);
assertEquals(((Identifier) binaryOp.getLeft()).getName(), "x");
assertEquals(binaryOp.getOperatorToken().getText(), "==");
BinaryOp rightOp = (BinaryOp) binaryOp.getRight();
Expand All @@ -126,13 +119,19 @@ public void testDoubleEqualOperator() throws ParserException {
}

@Test
public void testMultipleEqualityOperators() throws ParserException {
public void testMultipleComparisonOperators() throws ParserException {
Tokenizer tokenizer = new Tokenizer();
Parser testParser = new Parser(tokenizer.tokenize("x = (y and z)", "Testfile.dl"));
BinaryOp binaryOp = (BinaryOp) testParser.parse();
assertEquals(((Identifier) binaryOp.getLeft()).getName(), "x");
Parser testParser = new Parser(tokenizer.tokenize(
"a=(b and c) + d != e >= f or g <= h - i < j * k > l", "Testfile.dl"));
Block block = testParser.parse2();
assertEquals(block.getExpressionList().size(), 1);
BinaryOp binaryOp = (BinaryOp) block.getExpressionList().get(0);
assertEquals(((Identifier) binaryOp.getLeft()).getName(), "a");
assertEquals(binaryOp.getOperatorToken().getText(), "=");
BinaryOp rightOp = (BinaryOp) binaryOp.getRight();



assertEquals(((Identifier) rightOp.getLeft()).getName(), "y");
assertEquals(((Identifier) rightOp.getRight()).getName(), "z");
assertEquals(rightOp.getOperatorToken().getText(), "and");
Expand Down Expand Up @@ -201,31 +200,6 @@ public void testMultipleOperationsWithParentheses() throws ParserException {
assertEquals(((Literal) rightOp3.getRight()).getValue(), 32);
}

@Test
public void testAdditionAndSubtractionWithRightAssociativity() throws ParserException {
Tokenizer tokenizer = new Tokenizer();
Parser testParser = new Parser(tokenizer.tokenize("1 + 225 - 10 + 8", "Testfile.dl"));
BinaryOp binaryOp = (BinaryOp) testParser.parseExpressionWithRightAssociativity();
Literal leftLiteral = (Literal) binaryOp.getLeft();
Token operatorToken = binaryOp.getOperatorToken();
assertEquals(leftLiteral.getValue(), 1);
assertEquals(operatorToken.getText(), "+");
assertEquals(operatorToken.getTokenType(), TokenType.OPERATOR);
BinaryOp rightOp = (BinaryOp) binaryOp.getRight();
leftLiteral = (Literal) rightOp.getLeft();
operatorToken = rightOp.getOperatorToken();
assertEquals(leftLiteral.getValue(), 225);
assertEquals(operatorToken.getText(), "-");
assertEquals(operatorToken.getTokenType(), TokenType.OPERATOR);
rightOp = (BinaryOp) rightOp.getRight();
leftLiteral = (Literal) rightOp.getLeft();
operatorToken = rightOp.getOperatorToken();
assertEquals(leftLiteral.getValue(), 10);
assertEquals(operatorToken.getText(), "+");
assertEquals(operatorToken.getTokenType(), TokenType.OPERATOR);
assertEquals(((Literal) rightOp.getRight()).getValue(), 8);
}

@Test
public void testOperationsWithLiteralsAndIdentifiers() throws ParserException {
Tokenizer tokenizer = new Tokenizer();
Expand All @@ -251,31 +225,6 @@ public void testOperationsWithLiteralsAndIdentifiers() throws ParserException {
assertEquals(((Literal) leftOp.getLeft()).getValue(), 1);
}

@Test
public void testOperationsWithLiteralsAndIdentifiersWithRightAssociativity() throws ParserException {
Tokenizer tokenizer = new Tokenizer();
Parser testParser = new Parser(tokenizer.tokenize("1 + a - 10 + xy", "Testfile.dl"));
BinaryOp binaryOp = (BinaryOp) testParser.parseExpressionWithRightAssociativity();
Expression leftLiteral = binaryOp.getLeft();
Token operatorToken = binaryOp.getOperatorToken();
assertEquals(((Literal) leftLiteral).getValue(), 1);
assertEquals(operatorToken.getText(), "+");
assertEquals(operatorToken.getTokenType(), TokenType.OPERATOR);
BinaryOp rightOp = (BinaryOp) binaryOp.getRight();
leftLiteral = rightOp.getLeft();
operatorToken = rightOp.getOperatorToken();
assertEquals(((Identifier) leftLiteral).getName(), "a");
assertEquals(operatorToken.getText(), "-");
assertEquals(operatorToken.getTokenType(), TokenType.OPERATOR);
rightOp = (BinaryOp) rightOp.getRight();
leftLiteral = rightOp.getLeft();
operatorToken = rightOp.getOperatorToken();
assertEquals(((Literal) leftLiteral).getValue(), 10);
assertEquals(operatorToken.getText(), "+");
assertEquals(operatorToken.getTokenType(), TokenType.OPERATOR);
assertEquals(((Identifier) rightOp.getRight()).getName(), "xy");
}

@Test
public void testIfCondition() throws ParserException {
Tokenizer tokenizer = new Tokenizer();
Expand Down

0 comments on commit f9fa18b

Please sign in to comment.