Skip to content
This repository has been archived by the owner on Jul 10, 2024. It is now read-only.

Commit

Permalink
VarDeclTest
Browse files Browse the repository at this point in the history
  • Loading branch information
mirak55 committed Jun 8, 2024
1 parent f29ff29 commit 8f4e1f9
Showing 1 changed file with 54 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
package com.auberer.compilerdesignlectureproject.codegen;
import com.auberer.compilerdesignlectureproject.ast.*;
import com.auberer.compilerdesignlectureproject.lexer.Lexer;
import com.auberer.compilerdesignlectureproject.parser.Parser;
import com.auberer.compilerdesignlectureproject.reader.Reader;
import com.auberer.compilerdesignlectureproject.sema.*;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import org.mockito.Mock;
import org.mockito.Mockito;
import org.mockito.MockitoAnnotations;
import org.mockito.Spy;
import java.util.List;
import static org.junit.jupiter.api.Assertions.*;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.when;

public class VarDeclTest {

@Test
@DisplayName("Integration test - Codegen VarDecl (Correct Input)")
public void VarDeclTesttrue() {
String code = "int x = 10";

Reader reader = new Reader(code);
Lexer lexer = new Lexer(reader, false);
Parser parser = new Parser(lexer);
ASTVarDeclNode node = parser.parseVarDecl();

IRGenerator irGenerator = new IRGenerator("VarDecl");
BasicBlock basicBlock = new BasicBlock("Start-Block");
irGenerator.setCurrentBlock(basicBlock);

IRExprResult irExprResult = irGenerator.visitVarDecl(node);

assertEquals(irExprResult.getEntry().getType(), irExprResult.getNode().getType());
assertEquals(irExprResult.getValue(), "x");
assertEquals(irExprResult.getNode(), "10");
assertNull(irExprResult.getEntry(), "");

assertTrue(irGenerator.getCurrentBlock().getLabel().equals("Exit"));

StringBuilder sb = new StringBuilder();
Function function = new Function("whileLoop");
function.setEntryBlock(basicBlock);
function.dumpIR(sb);
String irCode = sb.toString();
assertTrue(irCode.contains("Start-Block"));
assertTrue(irCode.contains("While-Condition"));
assertTrue(irCode.contains("While-Body"));
assertTrue(irCode.contains("Exit"));
}
}

0 comments on commit 8f4e1f9

Please sign in to comment.