package org.shedlang.compiler.shidtopatio; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.shedlang.compiler.patio.operands.PatioLocalRef; import org.shedlang.compiler.shid.instructions.Shid; import org.shedlang.compiler.testing.snapshots.SnapshotResolver; import org.shedlang.compiler.testing.snapshots.Snapshotter; import java.io.IOException; import java.util.List; import static org.shedlang.compiler.shidtopatio.ShidToPatioTesting.serialize; @ExtendWith({SnapshotResolver.class}) public class ShidToPatioCallTests { @Test public void canCallFunctionWithNoArgs(Snapshotter snapshotter) throws IOException { var instruction = Shid.call(0, List.of()); var context = ShidToPatioContext.EMPTY .temporaryPush(new PatioLocalRef("other")) .temporaryPush(new PatioLocalRef("receiver")); var result = ShidToPatio.generateInstruction(instruction, context); snapshotter.assertSnapshot(serialize(result)); } @Test public void canCallFunctionWithArgs(Snapshotter snapshotter) throws IOException { var instruction = Shid.call(2, List.of("b", "a")); var context = ShidToPatioContext.EMPTY .temporaryPush(new PatioLocalRef("other")) .temporaryPush(new PatioLocalRef("receiver")) .temporaryPush(new PatioLocalRef("pos1")) .temporaryPush(new PatioLocalRef("pos2")) .temporaryPush(new PatioLocalRef("namedB")) .temporaryPush(new PatioLocalRef("namedA")); var result = ShidToPatio.generateInstruction(instruction, context); snapshotter.assertSnapshot(serialize(result)); } }