aboutsummaryrefslogtreecommitdiff
path: root/src/test/java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2024-01-21 19:17:02 +0000
committerMichael Williamson <mike@zwobble.org>2024-01-21 19:17:02 +0000
commitd6d1411a6f836a5d72bb3ef3c27619569f8b5131 (patch)
treee7c603b909f9aa9f63be4d56d5bf6f70d277658b /src/test/java
parent36124bbfe721aedf17089b82fcc433592366ae4e (diff)
Implement Patio byte-size-of instruction
Diffstat (limited to 'src/test/java')
-rw-r--r--src/test/java/org/shedlang/compiler/patio/PatioExampleTests.java37
1 files changed, 36 insertions, 1 deletions
diff --git a/src/test/java/org/shedlang/compiler/patio/PatioExampleTests.java b/src/test/java/org/shedlang/compiler/patio/PatioExampleTests.java
index 8582cfd0..ddc9c386 100644
--- a/src/test/java/org/shedlang/compiler/patio/PatioExampleTests.java
+++ b/src/test/java/org/shedlang/compiler/patio/PatioExampleTests.java
@@ -819,7 +819,7 @@ public abstract class PatioExampleTests {
}
@Test
- public void canGetByteOffset() throws IOException, InterruptedException {
+ public void canGetByteOffsetOf() throws IOException, InterruptedException {
var patioFunction = PatioFunctionDefinition.builder()
.withName(FUNCTION_NAME)
.withReturnType(PatioTypes.INT)
@@ -854,6 +854,41 @@ public abstract class PatioExampleTests {
assertThat(result, isSilentExit(4));
}
+ @Test
+ public void canGetByteSizeOf() throws IOException, InterruptedException {
+ var patioFunction = PatioFunctionDefinition.builder()
+ .withName(FUNCTION_NAME)
+ .withReturnType(PatioTypes.INT)
+ .addLocal(Patio.val("x", PatioTypes.INT))
+ .addBodyInstruction(Patio.byteSizeOf(
+ Patio.localRef("x"),
+ PatioDataLayouts.struct(List.of(
+ PatioDataLayouts.struct(List.of(
+ PatioDataLayouts.BYTE,
+ PatioDataLayouts.BYTE
+ )),
+ PatioDataLayouts.struct(List.of(
+ PatioDataLayouts.BYTE,
+ PatioDataLayouts.BYTE,
+ PatioDataLayouts.BYTE,
+ PatioDataLayouts.BYTE
+ )),
+ PatioDataLayouts.BYTE
+ ))
+ ))
+ .addBodyInstruction(Patio.return_(
+ Patio.localRef("x")
+ ))
+ .build();
+ var patio = Patio.compilationUnit(List.of(
+ patioFunction
+ ));
+
+ var result = run(patio);
+
+ assertThat(result, isSilentExit(7));
+ }
+
private Matcher<ExecutionResult> isSilentExit(int exitCode) {
return allOf(
has("stderr", x -> x.stderr(), equalTo("")),