diff --git a/crates/uplc/test_data/fibonacci/fibonacci.flat b/crates/uplc/test_data/fibonacci/fibonacci.flat new file mode 100644 index 00000000..0b71038f Binary files /dev/null and b/crates/uplc/test_data/fibonacci/fibonacci.flat differ diff --git a/crates/uplc/test_data/fibonacci/fibonacci.uplc b/crates/uplc/test_data/fibonacci/fibonacci.uplc new file mode 100644 index 00000000..b1683917 --- /dev/null +++ b/crates/uplc/test_data/fibonacci/fibonacci.uplc @@ -0,0 +1,77 @@ +(program + 1.0.0 + [ + (lam + i0 + [ + [ + (force + (force + (delay + (delay + (lam + f + [ + (force (delay (lam s [ s s ]))) + (lam + s + (lam + x [ [ f [ (force (delay (lam s [ s s ]))) s ] ] x ] + ) + ) + ] + ) + ) + ) + ) + ) + (lam + rec + (lam + i + [ + [ + [ + (force + (delay + (lam + b + (lam + x + (lam + y + [ + [ [ [ (force (builtin ifThenElse)) b ] x ] y ] + (con unit ()) + ] + ) + ) + ) + ) + ) + [ [ (builtin lessThanEqualsInteger) i ] (con integer 1) ] + ] + (lam u i) + ] + (lam + u + [ + [ + (builtin addInteger) + [ + rec [ [ (builtin subtractInteger) i ] (con integer 1) ] + ] + ] + [ rec [ [ (builtin subtractInteger) i ] (con integer 2) ] ] + ] + ) + ] + ) + ) + ] + i0 + ] + ) + (con integer 0) + ] +) diff --git a/crates/uplc/tests/integ_tests.rs b/crates/uplc/tests/integ_tests.rs index b99570cb..008be5dd 100644 --- a/crates/uplc/tests/integ_tests.rs +++ b/crates/uplc/tests/integ_tests.rs @@ -63,5 +63,13 @@ fn jpg() { let bytes = include_bytes!("../test_data/jpg/jpg.flat"); let code = include_str!("../test_data/jpg/jpg.uplc"); + round_trip_test(bytes, code); +} + +#[test] +fn fibonacci() { + let bytes = include_bytes!("../test_data/fibonacci/fibonacci.flat"); + let code = include_str!("../test_data/fibonacci/fibonacci.uplc"); + round_trip_test(bytes, code); } \ No newline at end of file