summaryrefslogtreecommitdiff
path: root/src/test/java/no/eliashaugsbakk/kompilator/asmGeneration
diff options
context:
space:
mode:
authorElias Haugsbakk <[email protected]>2026-09-18 19:10:54 +0200
committerElias Haugsbakk <[email protected]>2026-09-19 01:59:23 +0200
commit6dd4036bd828dac87b9f63d0a58693b30c46faed (patch)
treec194ad43c1d9b1a332e28659863b88f463a07a9c /src/test/java/no/eliashaugsbakk/kompilator/asmGeneration
parent24f5104f56cfc67cf1e89da3e5913b2954acc36d (diff)
split into separate packages/classes
Diffstat (limited to 'src/test/java/no/eliashaugsbakk/kompilator/asmGeneration')
-rw-r--r--src/test/java/no/eliashaugsbakk/kompilator/asmGeneration/AssemblyBuilderTest.java65
1 files changed, 65 insertions, 0 deletions
diff --git a/src/test/java/no/eliashaugsbakk/kompilator/asmGeneration/AssemblyBuilderTest.java b/src/test/java/no/eliashaugsbakk/kompilator/asmGeneration/AssemblyBuilderTest.java
new file mode 100644
index 0000000..aa14df6
--- /dev/null
+++ b/src/test/java/no/eliashaugsbakk/kompilator/asmGeneration/AssemblyBuilderTest.java
@@ -0,0 +1,65 @@
+package no.eliashaugsbakk.kompilator.asmGeneration;
+
+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"
+ }
+}