From e01d4e5be2093eb9eb9fca62b8eaaa59d7ec882a Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Sat, 22 Jul 2023 11:47:10 +0100 Subject: Directly represent scalar data layouts in Patio --- .../compiler/patio/PatioSerializerTests.java | 51 +++++++++++++++++----- 1 file changed, 39 insertions(+), 12 deletions(-) (limited to 'src/test/java') diff --git a/src/test/java/org/shedlang/compiler/patio/PatioSerializerTests.java b/src/test/java/org/shedlang/compiler/patio/PatioSerializerTests.java index 8da11ef2..ccca6fc7 100644 --- a/src/test/java/org/shedlang/compiler/patio/PatioSerializerTests.java +++ b/src/test/java/org/shedlang/compiler/patio/PatioSerializerTests.java @@ -62,7 +62,7 @@ public class PatioSerializerTests { @Test public void canSerializeDataElementMutable() { - var element = Patio.dataElementMutable("x", PatioDataLayouts.scalar(PatioTypes.INT)); + var element = Patio.dataElementMutable("x", PatioDataLayouts.INT); var string = PatioTesting.serializeCompilationUnitElement(element); @@ -128,12 +128,12 @@ public class PatioSerializerTests { public void canSerializeAlloc() { var instruction = Patio.alloc( "x", - PatioDataLayouts.structFlat(List.of(PatioTypes.INT, PatioTypes.INT, PatioTypes.DATA_POINTER)) + PatioDataLayouts.struct(List.of(PatioDataLayouts.INT, PatioDataLayouts.INT, PatioDataLayouts.BYTE)) ); var string = PatioTesting.serializeInstruction(instruction); - assertThat(string, equalTo("(alloc (local \"x\") (struct (int int data-ptr)))")); + assertThat(string, equalTo("(alloc (local \"x\") (struct (int int byte)))")); } @Test @@ -253,7 +253,7 @@ public class PatioSerializerTests { var instruction = Patio.memoryLoad( "target", "pointer", - PatioDataLayouts.structFlat(List.of(PatioTypes.INT, PatioTypes.INT, PatioTypes.DATA_POINTER)), + PatioDataLayouts.struct(List.of(PatioDataLayouts.INT, PatioDataLayouts.INT, PatioDataLayouts.BYTE)), List.of(1) ); @@ -264,7 +264,7 @@ public class PatioSerializerTests { memory-load (local "target") pointer=(local "pointer") - layout=(struct (int int data-ptr)) + layout=(struct (int int byte)) offset=(1) )""" )); @@ -274,7 +274,7 @@ public class PatioSerializerTests { public void canSerializeMemoryStore() { var instruction = Patio.memoryStore( "pointer", - PatioDataLayouts.structFlat(List.of(PatioTypes.INT, PatioTypes.INT, PatioTypes.DATA_POINTER)), + PatioDataLayouts.struct(List.of(PatioDataLayouts.INT, PatioDataLayouts.INT, PatioDataLayouts.BYTE)), List.of(1), "value" ); @@ -285,7 +285,7 @@ public class PatioSerializerTests { ( memory-store pointer=(local "pointer") - layout=(struct (int int data-ptr)) + layout=(struct (int int byte)) offset=(1) value=(local "value") )""" @@ -408,7 +408,7 @@ public class PatioSerializerTests { @Test public void canSerializeDataLayoutArray() { - var layout = PatioDataLayouts.array(PatioDataLayouts.scalar(PatioTypes.INT), 4); + var layout = PatioDataLayouts.array(PatioDataLayouts.INT, 4); var string = PatioTesting.serializeDataLayout(layout); @@ -416,8 +416,35 @@ public class PatioSerializerTests { } @Test - public void canSerializeDataLayoutScalar() { - var layout = PatioDataLayouts.scalar(PatioTypes.INT); + public void canSerializeDataLayoutBool() { + var layout = PatioDataLayouts.BOOL; + + var string = PatioTesting.serializeDataLayout(layout); + + assertThat(string, equalTo("bool")); + } + + @Test + public void canSerializeDataLayoutByte() { + var layout = PatioDataLayouts.BYTE; + + var string = PatioTesting.serializeDataLayout(layout); + + assertThat(string, equalTo("byte")); + } + + @Test + public void canSerializeDataLayoutFunctionPointer() { + var layout = PatioDataLayouts.FUNCTION_POINTER; + + var string = PatioTesting.serializeDataLayout(layout); + + assertThat(string, equalTo("function-ptr")); + } + + @Test + public void canSerializeDataLayoutInt() { + var layout = PatioDataLayouts.INT; var string = PatioTesting.serializeDataLayout(layout); @@ -426,12 +453,12 @@ public class PatioSerializerTests { @Test public void canSerializeDataLayoutStruct() { - var layout = PatioDataLayouts.structFlat(List.of(PatioTypes.INT, PatioTypes.INT, PatioTypes.DATA_POINTER)); + var layout = PatioDataLayouts.struct(List.of(PatioDataLayouts.INT, PatioDataLayouts.INT, PatioDataLayouts.BYTE)); var string = PatioTesting.serializeDataLayout(layout); assertThat(string, equalTo(""" - (struct (int int data-ptr))""" + (struct (int int byte))""" )); } -- cgit v1.2.3