From dbef4474fac6ef72e395a28f858570551c97bccc Mon Sep 17 00:00:00 2001 From: KtorZ Date: Fri, 17 Feb 2023 16:59:07 +0100 Subject: [PATCH] Add new acceptance scenario: 065 -> The provided Plutus code called 'error'. This scenario _could_ work if `choose_data` was lazy in its arguments. Which is a reasonable thing to expect from `choose_data`. Since we don't have any way to introduce on-demand lazyness in the language (and we are not looking for ways), we need to make a special case for `choose_data` which is a perfect (and singular) use case for it. --- examples/acceptance_tests/065/aiken.lock | 5 +++ examples/acceptance_tests/065/aiken.toml | 3 ++ examples/acceptance_tests/065/lib/tests.ak | 49 ++++++++++++++++++++++ 3 files changed, 57 insertions(+) create mode 100644 examples/acceptance_tests/065/aiken.lock create mode 100644 examples/acceptance_tests/065/aiken.toml create mode 100644 examples/acceptance_tests/065/lib/tests.ak diff --git a/examples/acceptance_tests/065/aiken.lock b/examples/acceptance_tests/065/aiken.lock new file mode 100644 index 00000000..3a78b1e7 --- /dev/null +++ b/examples/acceptance_tests/065/aiken.lock @@ -0,0 +1,5 @@ +# This file was generated by Aiken +# You typically do not need to edit this file + +requirements = [] +packages = [] diff --git a/examples/acceptance_tests/065/aiken.toml b/examples/acceptance_tests/065/aiken.toml new file mode 100644 index 00000000..dde5bed3 --- /dev/null +++ b/examples/acceptance_tests/065/aiken.toml @@ -0,0 +1,3 @@ +name = 'aiken-lang/acceptance_test_065' +version = '0.0.0' +description = '' diff --git a/examples/acceptance_tests/065/lib/tests.ak b/examples/acceptance_tests/065/lib/tests.ak new file mode 100644 index 00000000..505e66b8 --- /dev/null +++ b/examples/acceptance_tests/065/lib/tests.ak @@ -0,0 +1,49 @@ +use aiken/builtin + +type MyData { + Integer(Int) + Bytes(ByteArray) +} + +test foo() { + inspect(42) == Integer(42) && inspect(#"ff") == Bytes(#"ff") +} + +fn inspect(data: Data) -> MyData { + expect result: MyData = + builtin.choose_data( + data, + inspect_constr(data), + inspect_map(data), + inspect_list(data), + inspect_integer(data), + inspect_bytearray(data), + ) + result +} + +fn inspect_constr(_data: Data) -> Data { + todo +} + +fn inspect_map(_data: Data) -> Data { + todo +} + +fn inspect_list(_data: Data) -> Data { + todo +} + +fn inspect_integer(data: Data) -> Data { + let result: Data = + builtin.un_i_data(data) + |> Integer + result +} + +fn inspect_bytearray(data: Data) -> Data { + let result: Data = + builtin.un_b_data(data) + |> Bytes + result +}