Fixing gen uplc tests
This commit is contained in:
parent
e772ff1787
commit
4a8bec4caa
|
@ -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,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue