Skip to content

Commit

Permalink
Fixing gen uplc tests
Browse files Browse the repository at this point in the history
  • Loading branch information
MicroProofs committed Aug 20, 2024
1 parent 5efd11b commit 73ab0f3
Showing 1 changed file with 198 additions and 129 deletions.
327 changes: 198 additions & 129 deletions crates/aiken-project/src/tests/gen_uplc.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2183,23 +2183,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(
src,
Term::equals_data()
.apply(Term::map_data().apply(Term::map_values(vec![
Constant::ProtoPair(
Type::Data,
Type::Data,
Constant::Data(Data::bytestring("foo".as_bytes().to_vec())).into(),
Constant::Data(Data::integer(42.into())).into(),
),
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(
insert
.as_var("insert", |insert| {
Term::Var(insert.clone())
.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(),
),
])))
)
.apply(Term::map_data().apply(Term::map_values(vec![
Constant::ProtoPair(
Type::Data,
Expand Down Expand Up @@ -3089,76 +3167,30 @@ fn acceptance_test_29_union_pair() {
"#;

assert_uplc(
src,
Term::equals_data()
.apply(
Term::map_data().apply(
Term::var("union")
.lambda("union")
.apply(
Term::var("do_union")
.apply(Term::var("left"))
.apply(Term::var("right"))
.lambda("right")
.lambda("left"),
)
.lambda("do_union")
.apply(Term::var("do_union").apply(Term::var("do_union")))
.lambda("do_union")
.apply(
Term::var("left")
.delayed_choose_list(
Term::var("right"),
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()),
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"))
.apply(Term::Var(k2.clone()))
.delayed_if_then_else(
Term::mk_cons()
.apply(
Expand All @@ -3172,72 +3204,109 @@ fn acceptance_test_29_union_pair() {
.apply(Term::var("v")),
),
)
.apply(Term::var("rest")),
.apply(Term::Var(rest.clone())),
Term::mk_cons()
.apply(
Term::mk_pair_data()
.apply(
Term::b_data()
.apply(Term::var("k2")),
.apply(Term::Var(k2)),
)
.apply(
Term::i_data()
.apply(Term::var("v2")),
.apply(Term::Var(v2)),
),
)
.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(
Term::fst_pair().apply(Term::var("pair")),
))
.lambda("rest")
.apply(Term::tail_list().apply(Term::var("elems")))
.lambda("pair")
.apply(Term::head_list().apply(Term::var("elems"))),
)
.lambda("elems")
.lambda("do_insert"),
})
})
})
}),
)
.lambda("elems")
.lambda("do_insert");

let do_insert_recurse = do_insert
.as_var("do_insert", |do_insert| {
Term::Var(do_insert.clone())
.apply(Term::Var(do_insert))
.apply(Term::var("elems"))
})
.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")
.lambda("k")
.lambda("elems"),
.apply(
Term::un_i_data()
.apply(Term::snd_pair().apply(Term::Var(elem_0))),
),
)
.apply(Term::map_values(vec![
Constant::ProtoPair(
Type::Data,
Type::Data,
Constant::Data(Data::bytestring("foo".as_bytes().to_vec())).into(),
Constant::Data(Data::integer(42.into())).into(),
),
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::empty_map()),
),
}),
)
.lambda("right")
.lambda("left")
.lambda("do_union");

assert_uplc(
src,
Term::equals_data()
.apply(
Term::map_data().apply(do_union.as_var("do_union", |do_union| {
Term::Var(do_union.clone())
.apply(Term::Var(do_union))
.apply(Term::var("fixture").force())
.apply(Term::var("new").force())
})),
)
.apply(Term::data(Data::map(vec![
(
Data::bytestring("foo".as_bytes().to_vec()),
Data::integer(42.into()),
),
(
Data::bytestring("bar".as_bytes().to_vec()),
Data::integer(14.into()),
),
]))),
.apply(Term::map_data().apply(Term::var("fixture").force()))
.lambda("fixture")
.apply(fixture)
.lambda("insert")
.apply(insert)
.lambda("new")
.apply(Term::empty_map().delay())
.lambda("do_insert")
.apply(do_insert_recurse),
false,
);
}
Expand Down

0 comments on commit 73ab0f3

Please sign in to comment.