aiken/examples/acceptance_tests/050/lib/tests.ak

65 lines
984 B
Plaintext

use aiken/builtin
pub type Thing {
wow: Int,
}
test let_1() {
let x: Data = 1
x == builtin.i_data(1)
}
test let_2() {
let x: Data = 1
expect y: Int = x
y == 1
}
test assert_1() {
expect thing: Thing = builtin.constr_data(0, [builtin.i_data(1)])
thing.wow == 1
}
fn cast_to_thing(x: Data) -> Thing {
expect x: Thing = x
x
}
test assert_2() {
let thing = Thing { wow: 1 }
let still_thing = cast_to_thing(thing)
still_thing.wow == 1
}
test tuple_1() {
let thing = (#"aa", #"bb", #"cc")
thing.1st == #"aa"
}
test pair_1() {
let thing = (#"aa", #"bb")
thing.1st == #"aa"
}
// should not typecheck
// test unlift_data_without_assert_1() {
// let thing: Thing = builtin.constr_data(0, [builtin.i_data(1)])
// thing.wow == 1
// }
// should not typecheck
// fn bad_cast(x: Thing) -> Int {
// x.wow
// }
// test unlift_data_without_assert_2() {
// let thing = builtin.constr_data(0, [builtin.i_data(1)])
// bad_cast(thing) == 1
// }