Fixing gen uplc tests

This commit is contained in:
microproofs 2024-08-20 12:52:23 -04:00 committed by KtorZ
parent e772ff1787
commit 4a8bec4caa
No known key found for this signature in database
GPG Key ID: 33173CB6F77F4277
1 changed files with 198 additions and 129 deletions

View File

@ -2184,23 +2184,101 @@ fn acceptance_test_23_to_list() {
} }
"#; "#;
let do_insert = Term::var("elems")
.delayed_choose_list(
Term::mk_cons()
.apply(
Term::mk_pair_data()
.apply(Term::b_data().apply(Term::var("k")))
.apply(Term::i_data().apply(Term::var("v"))),
)
.apply(Term::empty_map()),
Term::head_list()
.apply(Term::var("elems"))
.as_var("elem_0", |elem_0| {
Term::tail_list()
.apply(Term::var("elems"))
.as_var("rest", |rest| {
Term::un_b_data()
.apply(Term::fst_pair().apply(Term::Var(elem_0.clone())))
.as_var("k2", |k2| {
Term::un_i_data()
.apply(Term::snd_pair().apply(Term::Var(elem_0.clone())))
.as_var("v2", |v2| {
Term::equals_bytestring()
.apply(Term::var("k"))
.apply(Term::Var(k2.clone()))
.delayed_if_then_else(
Term::mk_cons()
.apply(
Term::mk_pair_data()
.apply(
Term::b_data()
.apply(Term::var("k")),
)
.apply(
Term::i_data()
.apply(Term::var("v")),
),
)
.apply(Term::Var(rest.clone())),
Term::mk_cons()
.apply(
Term::mk_pair_data()
.apply(
Term::b_data()
.apply(Term::Var(k2)),
)
.apply(
Term::i_data()
.apply(Term::Var(v2)),
),
)
.apply(
Term::var("do_insert")
.apply(Term::var("do_insert"))
.apply(Term::Var(rest)),
),
)
})
})
})
}),
)
.lambda("elems")
.lambda("do_insert");
let insert = do_insert
.as_var("do_insert", |do_insert| {
Term::Var(do_insert.clone())
.apply(Term::Var(do_insert))
.apply(Term::var("m"))
})
.lambda("v")
.lambda("k")
.lambda("m");
assert_uplc( assert_uplc(
src, src,
Term::equals_data() Term::equals_data()
.apply(Term::map_data().apply(Term::map_values(vec![ .apply(
Constant::ProtoPair( Term::map_data().apply(
Type::Data, insert
Type::Data, .as_var("insert", |insert| {
Constant::Data(Data::bytestring("foo".as_bytes().to_vec())).into(), Term::Var(insert.clone())
Constant::Data(Data::integer(42.into())).into(), .apply(
Term::Var(insert)
.apply(Term::empty_map())
.apply(Term::byte_string("foo".as_bytes().to_vec()))
.apply(Term::integer(42.into())),
)
.apply(Term::byte_string("bar".as_bytes().to_vec()))
.apply(Term::integer(14.into()))
.delay()
})
.force(),
), ),
Constant::ProtoPair( )
Type::Data,
Type::Data,
Constant::Data(Data::bytestring("bar".as_bytes().to_vec())).into(),
Constant::Data(Data::integer(14.into())).into(),
),
])))
.apply(Term::map_data().apply(Term::map_values(vec![ .apply(Term::map_data().apply(Term::map_values(vec![
Constant::ProtoPair( Constant::ProtoPair(
Type::Data, Type::Data,
@ -3090,76 +3168,30 @@ fn acceptance_test_29_union_pair() {
"#; "#;
assert_uplc( let do_insert = Term::var("elems")
src, .delayed_choose_list(
Term::equals_data() Term::mk_cons()
.apply( .apply(
Term::map_data().apply( Term::mk_pair_data()
Term::var("union") .apply(Term::b_data().apply(Term::var("k")))
.lambda("union") .apply(Term::i_data().apply(Term::var("v"))),
.apply( )
Term::var("do_union") .apply(Term::empty_map()),
.apply(Term::var("left")) Term::head_list()
.apply(Term::var("right")) .apply(Term::var("elems"))
.lambda("right") .as_var("elem_0", |elem_0| {
.lambda("left"), Term::tail_list()
) .apply(Term::var("elems"))
.lambda("do_union") .as_var("rest", |rest| {
.apply(Term::var("do_union").apply(Term::var("do_union"))) Term::un_b_data()
.lambda("do_union") .apply(Term::fst_pair().apply(Term::Var(elem_0.clone())))
.apply( .as_var("k2", |k2| {
Term::var("left") Term::un_i_data()
.delayed_choose_list( .apply(Term::snd_pair().apply(Term::Var(elem_0.clone())))
Term::var("right"), .as_var("v2", |v2| {
Term::var("do_union")
.apply(Term::var("do_union"))
.apply(Term::var("rest"))
.apply(
Term::var("do_insert")
.apply(Term::var("right"))
.apply(Term::var("k"))
.apply(Term::var("v")),
)
.lambda("v")
.apply(
Term::un_i_data()
.apply(Term::snd_pair().apply(Term::var("pair"))),
)
.lambda("k")
.apply(
Term::un_b_data()
.apply(Term::fst_pair().apply(Term::var("pair"))),
)
.lambda("rest")
.apply(Term::tail_list().apply(Term::var("left")))
.lambda("pair")
.apply(Term::head_list().apply(Term::var("left"))),
)
.lambda("right")
.lambda("left")
.lambda("do_union"),
)
.lambda("do_insert")
.apply(
Term::var("do_insert")
.apply(Term::var("do_insert"))
.apply(Term::var("elems"))
.lambda("do_insert")
.apply(
Term::var("elems")
.delayed_choose_list(
Term::mk_cons()
.apply(
Term::mk_pair_data()
.apply(Term::b_data().apply(Term::var("k")))
.apply(
Term::i_data().apply(Term::var("v")),
),
)
.apply(Term::empty_map()),
Term::equals_bytestring() Term::equals_bytestring()
.apply(Term::var("k")) .apply(Term::var("k"))
.apply(Term::var("k2")) .apply(Term::Var(k2.clone()))
.delayed_if_then_else( .delayed_if_then_else(
Term::mk_cons() Term::mk_cons()
.apply( .apply(
@ -3173,72 +3205,109 @@ fn acceptance_test_29_union_pair() {
.apply(Term::var("v")), .apply(Term::var("v")),
), ),
) )
.apply(Term::var("rest")), .apply(Term::Var(rest.clone())),
Term::mk_cons() Term::mk_cons()
.apply( .apply(
Term::mk_pair_data() Term::mk_pair_data()
.apply( .apply(
Term::b_data() Term::b_data()
.apply(Term::var("k2")), .apply(Term::Var(k2)),
) )
.apply( .apply(
Term::i_data() Term::i_data()
.apply(Term::var("v2")), .apply(Term::Var(v2)),
), ),
) )
.apply( .apply(
Term::var("do_insert") Term::var("do_insert")
.apply(Term::var("do_insert")) .apply(Term::var("do_insert"))
.apply(Term::var("rest")), .apply(Term::Var(rest)),
), ),
) )
.lambda("v2") })
.apply(Term::un_i_data().apply( })
Term::snd_pair().apply(Term::var("pair")), })
)) }),
.lambda("k2") )
.apply(Term::un_b_data().apply( .lambda("elems")
Term::fst_pair().apply(Term::var("pair")), .lambda("do_insert");
))
.lambda("rest") let do_insert_recurse = do_insert
.apply(Term::tail_list().apply(Term::var("elems"))) .as_var("do_insert", |do_insert| {
.lambda("pair") Term::Var(do_insert.clone())
.apply(Term::head_list().apply(Term::var("elems"))), .apply(Term::Var(do_insert))
) .apply(Term::var("elems"))
.lambda("elems") })
.lambda("do_insert"), .lambda("v")
.lambda("k")
.lambda("elems");
let insert = Term::var("do_insert")
.apply(Term::var("m"))
.apply(Term::var("k"))
.apply(Term::var("v"))
.lambda("v")
.lambda("k")
.lambda("m");
let fixture = Term::var("insert")
.apply(
Term::var("insert")
.apply(Term::var("new").force())
.apply(Term::byte_string("foo".as_bytes().to_vec()))
.apply(Term::integer(42.into())),
)
.apply(Term::byte_string("bar".as_bytes().to_vec()))
.apply(Term::integer(14.into()))
.delay();
let do_union = Term::var("left")
.delayed_choose_list(
Term::var("right"),
Term::head_list()
.apply(Term::var("left"))
.as_var("elem_0", |elem_0| {
Term::var("do_union")
.apply(Term::var("do_union"))
.apply(Term::tail_list().apply(Term::var("left")))
.apply(
Term::var("do_insert")
.apply(Term::var("right"))
.apply(
Term::un_b_data()
.apply(Term::fst_pair().apply(Term::Var(elem_0.clone()))),
) )
.lambda("v") .apply(
.lambda("k") Term::un_i_data()
.lambda("elems"), .apply(Term::snd_pair().apply(Term::Var(elem_0))),
),
) )
.apply(Term::map_values(vec![ }),
Constant::ProtoPair( )
Type::Data, .lambda("right")
Type::Data, .lambda("left")
Constant::Data(Data::bytestring("foo".as_bytes().to_vec())).into(), .lambda("do_union");
Constant::Data(Data::integer(42.into())).into(),
), assert_uplc(
Constant::ProtoPair( src,
Type::Data, Term::equals_data()
Type::Data, .apply(
Constant::Data(Data::bytestring("bar".as_bytes().to_vec())).into(), Term::map_data().apply(do_union.as_var("do_union", |do_union| {
Constant::Data(Data::integer(14.into())).into(), Term::Var(do_union.clone())
), .apply(Term::Var(do_union))
])) .apply(Term::var("fixture").force())
.apply(Term::empty_map()), .apply(Term::var("new").force())
), })),
) )
.apply(Term::data(Data::map(vec![ .apply(Term::map_data().apply(Term::var("fixture").force()))
( .lambda("fixture")
Data::bytestring("foo".as_bytes().to_vec()), .apply(fixture)
Data::integer(42.into()), .lambda("insert")
), .apply(insert)
( .lambda("new")
Data::bytestring("bar".as_bytes().to_vec()), .apply(Term::empty_map().delay())
Data::integer(14.into()), .lambda("do_insert")
), .apply(do_insert_recurse),
]))),
false, false,
); );
} }