aboutsummaryrefslogtreecommitdiff
path: root/src/test/java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2025-01-12 22:02:25 +0000
committerMichael Williamson <mike@zwobble.org>2025-01-12 22:02:25 +0000
commit63b3e45d88251ec7647bafcc428f59c1c3d8d2ad (patch)
treeb3b8147ea0588bb8b10bb2bdcf1e9ba17cc431a5 /src/test/java
parenta3aadd9903e64a7a459227e28feeee03d05560b3 (diff)
Add Shid declare-native-function instruction
Diffstat (limited to 'src/test/java')
-rw-r--r--src/test/java/org/shedlang/compiler/shid/ShidSerializerTests.java26
1 files changed, 22 insertions, 4 deletions
diff --git a/src/test/java/org/shedlang/compiler/shid/ShidSerializerTests.java b/src/test/java/org/shedlang/compiler/shid/ShidSerializerTests.java
index 6018fa88..70218cc3 100644
--- a/src/test/java/org/shedlang/compiler/shid/ShidSerializerTests.java
+++ b/src/test/java/org/shedlang/compiler/shid/ShidSerializerTests.java
@@ -1,10 +1,7 @@
package org.shedlang.compiler.shid;
import org.junit.jupiter.api.Test;
-import org.shedlang.compiler.shid.instructions.Shid;
-import org.shedlang.compiler.shid.instructions.ShidDefineFunction;
-import org.shedlang.compiler.shid.instructions.ShidInstruction;
-import org.shedlang.compiler.shid.instructions.ShidVariable;
+import org.shedlang.compiler.shid.instructions.*;
import org.shedlang.compiler.types.Effects;
import org.shedlang.compiler.types.NamespaceName;
import org.shedlang.compiler.types.Types;
@@ -46,6 +43,27 @@ public class ShidSerializerTests {
}
@Test
+ public void canSerializeDeclareNativeFunction() {
+ var instruction = ShidDeclareNativeFunction.builder()
+ .withName("f")
+ .addPositionalParam("p1")
+ .addPositionalParam("p2")
+ .addNamedParam("n1")
+ .addNamedParam("n2")
+ .build();
+
+ var string = serialize(instruction);
+
+ assertThat(string, equalTo("""
+ (
+ declare-native-function
+ name="f"
+ positional-params=("p1" "p2")
+ named-params=("n1" "n2")
+ )"""));
+ }
+
+ @Test
public void canSerializeDefineEffect() {
var instruction = Shid.defineEffect(
Effects.userDefined(NamespaceName.of("Example", "Project"), "State")