blob: 4c124fc3cf2e2316d78b4b0c72c270168b8e93f7 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
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("skriv(greeting)");
// Assert
String result = builder.text.toString();
assert result.contains("lea rsi, greeting");
assert result.contains("mov rdx, 5"); // "Hello"
}
@Test
void handlePrintWorksCorrectlyWithMultiplePrintStatements() {
// Setup
AssemblyBuilder builder = new AssemblyBuilder();
builder.stringVariables.put("msg1", "Hi");
builder.stringVariables.put("msg2", "World");
// Act
builder.handlePrint("skriv(msg1)");
builder.handlePrint("skriv(msg2)");
// Assert
String result = builder.text.toString();
assert (result).contains("lea rsi, msg1");
assert (result).contains("lea rsi, msg2");
assert (result).contains("mov rdx, 2"); // "Hi"
assert (result).contains("mov rdx, 5"); // "World"
}
}
|