Fixing unit tests

This commit is contained in:
microproofs 2024-11-01 01:24:41 -04:00
parent d39d70a5d8
commit e87d7a1101
No known key found for this signature in database
GPG Key ID: 14F93C84DE6AFD17
2 changed files with 158 additions and 125 deletions

View File

@ -1532,4 +1532,46 @@ mod tester {
println!("{}", tree); println!("{}", tree);
} }
#[test]
fn thing6() {
let source_code = r#"
test thing(){
when [] is {
[] -> 4 == 4
[a, 1, ..c] -> True
[a, b, c, d, 5, ..f] -> False
_ -> 1 == 1
}
}
"#;
let (_, ast) = check(parse(source_code)).unwrap();
let Definition::Test(function) = &ast.definitions[0] else {
panic!()
};
let TypedExpr::When {
clauses, subject, ..
} = &function.body
else {
panic!()
};
let mut air_interner = AirInterner::new();
let data_types = IndexMap::new();
let pattern = TypedPattern::Discard {
name: "_".to_string(),
location: Span::empty(),
};
let tree_gen = TreeGen::new(&mut air_interner, &data_types, &pattern);
let tree = tree_gen.build_tree(&subject.tipo(), clauses);
println!("{}", tree);
}
} }

View File

@ -3087,30 +3087,75 @@ fn acceptance_test_29_union_pair() {
"#; "#;
let do_insert = Term::var("elems") let uplc =
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("rest")
.lambda("v")
.lambda("k")
.apply(
Term::un_b_data()
.apply(Term::fst_pair().apply(Term::var("tuple"))),
)
.apply(
Term::un_i_data()
.apply(Term::snd_pair().apply(Term::var("tuple"))),
)
.apply(Term::tail_list().apply(Term::var("left")))
.lambda("tuple")
.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( .delayed_choose_list(
Term::mk_cons() Term::mk_cons()
.apply( .apply(
Term::mk_pair_data() Term::mk_pair_data()
.apply(Term::b_data().apply(Term::var("k"))) .apply(Term::b_data().apply(Term::var("k")))
.apply(Term::i_data().apply(Term::var("v"))), .apply(
Term::i_data().apply(Term::var("v")),
),
) )
.apply(Term::empty_map()), .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() Term::equals_bytestring()
.apply(Term::var("k")) .apply(Term::var("k"))
.apply(Term::Var(k2.clone())) .apply(Term::var("k2"))
.delayed_if_then_else( .delayed_if_then_else(
Term::mk_cons() Term::mk_cons()
.apply( .apply(
@ -3124,68 +3169,46 @@ fn acceptance_test_29_union_pair() {
.apply(Term::var("v")), .apply(Term::var("v")),
), ),
) )
.apply(Term::Var(rest.clone())), .apply(Term::var("rest")),
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("rest")
}) .lambda("v2")
}) .lambda("k2")
}), .apply(Term::un_b_data().apply(
Term::fst_pair().apply(Term::var("tuple")),
))
.apply(Term::un_i_data().apply(
Term::snd_pair().apply(Term::var("tuple")),
))
.apply(Term::tail_list().apply(Term::var("elems")))
.lambda("tuple")
.apply(Term::head_list().apply(Term::var("elems"))),
) )
.lambda("elems") .lambda("elems")
.lambda("do_insert"); .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("v")
.lambda("k") .lambda("k")
.lambda("elems"); .lambda("elems"),
)
let insert = Term::var("do_insert") .apply(Term::map_values(vec![
.apply(Term::var("m"))
.apply(Term::var("k"))
.apply(Term::var("v"))
.lambda("v")
.lambda("k")
.lambda("m");
let empty_list = Term::empty_map();
let fixture = Term::data(Data::map(vec![
(
Data::bytestring(vec![0x66, 0x6f, 0x6f]),
Data::integer(42.into()),
),
(
Data::bytestring(vec![0x62, 0x61, 0x72]),
Data::integer(14.into()),
),
]));
let fixture_unwrapped = Term::Constant(
Constant::ProtoList(
Type::Pair(Type::Data.into(), Type::Data.into()),
vec![
Constant::ProtoPair( Constant::ProtoPair(
Type::Data, Type::Data,
Type::Data, Type::Data,
@ -3198,52 +3221,20 @@ fn acceptance_test_29_union_pair() {
Constant::Data(Data::bytestring(vec![0x62, 0x61, 0x72])).into(), Constant::Data(Data::bytestring(vec![0x62, 0x61, 0x72])).into(),
Constant::Data(Data::integer(14.into())).into(), Constant::Data(Data::integer(14.into())).into(),
), ),
], ]))
) .apply(Term::empty_map()),
.into(),
);
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()))),
)
.apply(
Term::un_i_data()
.apply(Term::snd_pair().apply(Term::Var(elem_0))),
), ),
) )
}), .apply(Term::data(Data::map(vec![
) (
.lambda("right") Data::bytestring(vec![0x66, 0x6f, 0x6f]),
.lambda("left") Data::integer(42.into()),
.lambda("do_union"); ),
(
let uplc = Term::equals_data() Data::bytestring(vec![0x62, 0x61, 0x72]),
.apply( Data::integer(14.into()),
Term::map_data().apply(do_union.as_var("do_union", |do_union| { ),
Term::Var(do_union.clone()) ])));
.apply(Term::Var(do_union))
.apply(fixture_unwrapped)
.apply(empty_list)
})),
)
.apply(fixture)
.lambda("insert")
.apply(insert)
.lambda("do_insert")
.apply(do_insert_recurse);
assert_uplc(src, uplc.clone(), false, true); assert_uplc(src, uplc.clone(), false, true);
assert_uplc(src, uplc, false, false); assert_uplc(src, uplc, false, false);