Sanitize fibonacci program to make round-trip tests happy, isolate unsanitary code

This commit is contained in:
Turner 2022-06-20 14:28:11 -07:00 committed by Lucas
parent 787f345275
commit 1b00e4d416
3 changed files with 115 additions and 18 deletions

View File

@ -2,7 +2,7 @@
1.0.0 1.0.0
[ [
(lam (lam
i0 i_0
[ [
[ [
(force (force
@ -10,13 +10,19 @@
(delay (delay
(delay (delay
(lam (lam
f i_1
[ [
(force (delay (lam s [ s s ]))) (force (delay (lam i_2 [ i_2 i_2 ])))
(lam (lam
s i_3
(lam (lam
x [ [ f [ (force (delay (lam s [ s s ]))) s ] ] x ] i_4
[
[
i_1 [ (force (delay (lam i_5 [ i_5 i_5 ]))) i_3 ]
]
i_4
]
) )
) )
] ]
@ -26,22 +32,25 @@
) )
) )
(lam (lam
rec i_6
(lam (lam
i i_7
[ [
[ [
[ [
(force (force
(delay (delay
(lam (lam
b i_8
(lam (lam
x i_9
(lam (lam
y i_10
[ [
[ [ [ (force (builtin ifThenElse)) b ] x ] y ] [
[ [ (force (builtin ifThenElse)) i_8 ] i_9 ]
i_10
]
(con unit ()) (con unit ())
] ]
) )
@ -49,29 +58,32 @@
) )
) )
) )
[ [ (builtin lessThanEqualsInteger) i ] (con integer 1) ] [ [ (builtin lessThanEqualsInteger) i_7 ] (con integer 1) ]
] ]
(lam u i) (lam i_11 i_7)
] ]
(lam (lam
u i_12
[ [
[ [
(builtin addInteger) (builtin addInteger)
[ [
rec [ [ (builtin subtractInteger) i ] (con integer 1) ] i_6
[ [ (builtin subtractInteger) i_7 ] (con integer 1) ]
] ]
] ]
[ rec [ [ (builtin subtractInteger) i ] (con integer 2) ] ] [
i_6 [ [ (builtin subtractInteger) i_7 ] (con integer 2) ]
]
] ]
) )
] ]
) )
) )
] ]
i0 i_0
] ]
) )
(con integer 0) (con integer 0)
] ]
) )

View File

@ -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)
]
)

View File

@ -72,4 +72,12 @@ fn fibonacci() {
let code = include_str!("../test_data/fibonacci/fibonacci.uplc"); let code = include_str!("../test_data/fibonacci/fibonacci.uplc");
round_trip_test(bytes, code); round_trip_test(bytes, code);
}
#[test]
fn one_way_fibonacci() {
let bytes = include_bytes!("../test_data/fibonacci/fibonacci.flat");
let code = include_str!("../test_data/fibonacci/unsanitary_fibonacci.uplc");
parsed_program_matches_decoded_bytes(bytes, code);
} }