diff options
| author | Elias Haugsbakk <[email protected]> | 2026-09-18 00:13:13 +0200 |
|---|---|---|
| committer | Elias Haugsbakk <[email protected]> | 2026-09-18 00:13:13 +0200 |
| commit | c7363c58612b7d3183c0ee91d5eee166fd515758 (patch) | |
| tree | 175dfd722168a51c446da7f3a971f4464a3be30b /src/test/java/no/eliashaugsbakk/kompilator | |
| parent | 30b415615740939a7522a20f222699a30f89a22e (diff) | |
implement print("String") for IR to assembly translation
Diffstat (limited to 'src/test/java/no/eliashaugsbakk/kompilator')
| -rw-r--r-- | src/test/java/no/eliashaugsbakk/kompilator/AssemblyBuilderTest.java | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/src/test/java/no/eliashaugsbakk/kompilator/AssemblyBuilderTest.java b/src/test/java/no/eliashaugsbakk/kompilator/AssemblyBuilderTest.java new file mode 100644 index 0000000..8d10be1 --- /dev/null +++ b/src/test/java/no/eliashaugsbakk/kompilator/AssemblyBuilderTest.java @@ -0,0 +1,65 @@ +package no.eliashaugsbakk.kompilator; + +import java.util.List; +import org.junit.jupiter.api.Test; + +class AssemblyBuilderTest { + + @Test + void boilerplateGetsGenerated() { + // Setup + AssemblyBuilder builder = new AssemblyBuilder(); + + // Act + + // Assert + String result = builder.createAssembly(List.of()); + assert result.contains(""" + .intel_syntax noprefix + .global _start + .text + _start: + """); + + assert result.contains(""" + mov rax, 60 + xor rdi, rdi + syscall + """); + assert result.contains(".data"); + } + + @Test + void handlePrintGeneratesCorrectAssemblyForSingleStatement() { + // Setup + AssemblyBuilder builder = new AssemblyBuilder(); + builder.stringVariables.put("greeting", "Hello"); + + // Act + builder.handlePrint("print(greeting)"); + + // Assert + String result = builder.text.toString(); + assert result.contains("lea rsi, [greeting]"); + assert result.contains("lea rdx, [5]"); // "Hello" + } + + @Test + void handlePrintWorksCorrectlyWithMultiplePrintStatements() { + // Setup + AssemblyBuilder builder = new AssemblyBuilder(); + builder.stringVariables.put("msg1", "Hi"); + builder.stringVariables.put("msg2", "World"); + + // Act + builder.handlePrint("print(msg1)"); + builder.handlePrint("print(msg2)"); + + // Assert + String result = builder.text.toString(); + assert (result).contains("lea rsi, [msg1]"); + assert (result).contains("lea rsi, [msg2]"); + assert (result).contains("lea rdx, [2]"); // "Hi" + assert (result).contains("lea rdx, [5]"); // "World" + } +} |
