aboutsummaryrefslogtreecommitdiff
path: root/src/test/java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2023-06-12 20:27:43 +0100
committerMichael Williamson <mike@zwobble.org>2023-06-12 20:27:43 +0100
commit95b00d8003ac8f801212149b350f36a6649b1b86 (patch)
tree897b3e74ab5c9d10caa58bcf1e333d5d4193049c /src/test/java
parentd5760a6e10a17d98ab3f7ae439c2387f371f605c (diff)
Add global definition
Diffstat (limited to 'src/test/java')
-rw-r--r--src/test/java/org/shedlang/compiler/backends/llvm/ir/LlvmIrSerializerGlobalDefinitionTests.java57
1 files changed, 57 insertions, 0 deletions
diff --git a/src/test/java/org/shedlang/compiler/backends/llvm/ir/LlvmIrSerializerGlobalDefinitionTests.java b/src/test/java/org/shedlang/compiler/backends/llvm/ir/LlvmIrSerializerGlobalDefinitionTests.java
new file mode 100644
index 00000000..f1535cce
--- /dev/null
+++ b/src/test/java/org/shedlang/compiler/backends/llvm/ir/LlvmIrSerializerGlobalDefinitionTests.java
@@ -0,0 +1,57 @@
+package org.shedlang.compiler.backends.llvm.ir;
+
+import org.junit.jupiter.api.Test;
+import org.shedlang.compiler.backends.llvm.ir.ast.LlvmGlobalDefinition;
+import org.shedlang.compiler.backends.llvm.ir.ast.LlvmIr;
+import org.shedlang.compiler.backends.llvm.ir.ast.types.LlvmTypes;
+
+import static org.shedlang.compiler.backends.llvm.ir.LlvmIrSerializerTesting.serializeToString;
+import static org.zwobble.precisely.AssertThat.assertThat;
+import static org.zwobble.precisely.Matchers.equalTo;
+
+public class LlvmIrSerializerGlobalDefinitionTests {
+ @Test
+ public void canSerializeGlobalDefinitionWithTypeAndValue() {
+ var definition = new LlvmGlobalDefinition(
+ "x",
+ LlvmTypes.INT_64,
+ LlvmIr.operandInt(42),
+ false,
+ false
+ );
+
+ var result = serializeToString(definition, LlvmIrSerializer::serializeTopLevelEntity);
+
+ assertThat(result, equalTo("@x = global i64 42\n"));
+ }
+
+ @Test
+ public void canSerializeConstant() {
+ var definition = new LlvmGlobalDefinition(
+ "x",
+ LlvmTypes.INT_64,
+ LlvmIr.operandInt(42),
+ true,
+ false
+ );
+
+ var result = serializeToString(definition, LlvmIrSerializer::serializeTopLevelEntity);
+
+ assertThat(result, equalTo("@x = constant i64 42\n"));
+ }
+
+ @Test
+ public void canSerializeUnnamedAddr() {
+ var definition = new LlvmGlobalDefinition(
+ "x",
+ LlvmTypes.INT_64,
+ LlvmIr.operandInt(42),
+ false,
+ true
+ );
+
+ var result = serializeToString(definition, LlvmIrSerializer::serializeTopLevelEntity);
+
+ assertThat(result, equalTo("@x = unnamed_addr global i64 42\n"));
+ }
+}