diff options
Diffstat (limited to 'src/test/java')
| -rw-r--r-- | src/test/java/org/shedlang/compiler/stackir/InstructionSerializerTests.java | 20 | ||||
| -rw-r--r-- | src/test/java/org/shedlang/compiler/stackir/instructions/Instructions.java | 15 |
2 files changed, 35 insertions, 0 deletions
diff --git a/src/test/java/org/shedlang/compiler/stackir/InstructionSerializerTests.java b/src/test/java/org/shedlang/compiler/stackir/InstructionSerializerTests.java index 9f3fc75f..b0143a9b 100644 --- a/src/test/java/org/shedlang/compiler/stackir/InstructionSerializerTests.java +++ b/src/test/java/org/shedlang/compiler/stackir/InstructionSerializerTests.java @@ -56,6 +56,26 @@ public class InstructionSerializerTests { } @Test + public void canSerializeDefineStruct() { + var instruction = Instructions.defineStruct( + Types.struct(NamespaceName.of("Example", "Project"), "User"), + List.of( + Instructions.defineStructField("name"), + Instructions.defineStructField("id") + ) + ); + + var string = serialize(instruction); + + assertThat(string, equalTo(""" + ( + define-struct + type="Example/Project.User" + fields=("name" "id") + )""")); + } + + @Test public void canSerializeDiscard() { var instruction = Instructions.discard(); diff --git a/src/test/java/org/shedlang/compiler/stackir/instructions/Instructions.java b/src/test/java/org/shedlang/compiler/stackir/instructions/Instructions.java index f30c75c6..3ac0ac62 100644 --- a/src/test/java/org/shedlang/compiler/stackir/instructions/Instructions.java +++ b/src/test/java/org/shedlang/compiler/stackir/instructions/Instructions.java @@ -15,6 +15,21 @@ public class Instructions { return new CallInstruction(positionalArgCount, namedArgNames, Sources.NULL); } + public static Instruction defineStruct( + StructType type, + List<DefineStructInstruction.Field> fields + ) { + return new DefineStructInstruction( + type, + fields, + Sources.NULL + ); + } + + public static DefineStructInstruction.Field defineStructField(String name) { + return new DefineStructInstruction.Field(name, Sources.NULL); + } + public static Instruction discard() { return new DiscardInstruction(Sources.NULL); } |
