aboutsummaryrefslogtreecommitdiff
path: root/tests/test_checking.rs
diff options
context:
space:
mode:
authorJJ2023-07-19 19:25:30 +0000
committerJJ2023-07-20 02:08:36 +0000
commitf5e61572b217c5445c3cd593d1cc94697fa7ec48 (patch)
tree5ae7c5a95cac5c2a23c27ae10f48ebf4c0e4e684 /tests/test_checking.rs
parent99769e9ebb94d1dcc12f2d1f6a6d899f7a229676 (diff)
major cleanups: switch to dynamic Errors, impl Context, rename enums/records to unions/structs
Diffstat (limited to 'tests/test_checking.rs')
-rw-r--r--tests/test_checking.rs40
1 files changed, 20 insertions, 20 deletions
diff --git a/tests/test_checking.rs b/tests/test_checking.rs
index e553a4e..b0f4140 100644
--- a/tests/test_checking.rs
+++ b/tests/test_checking.rs
@@ -32,15 +32,15 @@ fn test_parsing_succeeds() {
#[test]
fn test_inference() {
let context = Context::new();
- assert_eq!(infer(&context, parse_lambda(sanity_check).unwrap()), Ok(Int));
- assert_eq!(infer(&context, parse_lambda(negate).unwrap()), Ok(Func(Bool, Bool)));
- assert_eq!(infer(&context, parse_lambda(basic_abstraction).unwrap()), Ok(Func(Int, Int)));
- assert_eq!(infer(&context, parse_lambda(basic_application).unwrap()), Ok(Int));
- assert_eq!(infer(&context, parse_lambda(correct_cond_abs).unwrap()), Ok(Func(Bool, Int)));
- assert_eq!(infer(&context, parse_lambda(correct_cond).unwrap()), Ok(Nat));
- assert!(infer(&context, parse_lambda(not_inferrable).unwrap()).is_err());
- assert!(infer(&context, parse_lambda(incorrect_branches).unwrap()).is_err());
- assert!(infer(&context, parse_lambda(incorrect_cond_abs).unwrap()).is_err());
+ assert_eq!(context.infer(parse_lambda(sanity_check).unwrap()).unwrap(), Int);
+ assert_eq!(context.infer(parse_lambda(negate).unwrap()).unwrap(), Func(Bool, Bool));
+ assert_eq!(context.infer(parse_lambda(basic_abstraction).unwrap()).unwrap(), Func(Int, Int));
+ assert_eq!(context.infer(parse_lambda(basic_application).unwrap()).unwrap(), Int);
+ assert_eq!(context.infer(parse_lambda(correct_cond_abs).unwrap()).unwrap(), Func(Bool, Int));
+ assert_eq!(context.infer(parse_lambda(correct_cond).unwrap()).unwrap(), Nat);
+ assert!(context.infer(parse_lambda(not_inferrable).unwrap()).is_err());
+ assert!(context.infer(parse_lambda(incorrect_branches).unwrap()).is_err());
+ assert!(context.infer(parse_lambda(incorrect_cond_abs).unwrap()).is_err());
}
#[test]
@@ -48,17 +48,17 @@ fn test_checking() {
let context = Context::new();
// uninteresting
- assert!(check(&context, parse_lambda(sanity_check).unwrap(), &Int).is_ok());
- assert!(check(&context, parse_lambda(negate).unwrap(), &Func(Bool, Bool)).is_ok());
- assert!(check(&context, parse_lambda(basic_abstraction).unwrap(), &Func(Int, Int)).is_ok());
- assert!(check(&context, parse_lambda(basic_application).unwrap(), &Int).is_ok());
- assert!(check(&context, parse_lambda(correct_cond_abs).unwrap(), &Func(Bool, Int)).is_ok());
- assert!(check(&context, parse_lambda(correct_cond).unwrap(), &Nat).is_ok());
- assert!(check(&context, parse_lambda(incorrect_branches).unwrap(), &Unit).is_err());
- assert!(check(&context, parse_lambda(incorrect_cond_abs).unwrap(), &Error).is_err());
+ assert!(context.check(parse_lambda(sanity_check).unwrap(), &Int).is_ok());
+ assert!(context.check(parse_lambda(negate).unwrap(), &Func(Bool, Bool)).is_ok());
+ assert!(context.check(parse_lambda(basic_abstraction).unwrap(), &Func(Int, Int)).is_ok());
+ assert!(context.check(parse_lambda(basic_application).unwrap(), &Int).is_ok());
+ assert!(context.check(parse_lambda(correct_cond_abs).unwrap(), &Func(Bool, Int)).is_ok());
+ assert!(context.check(parse_lambda(correct_cond).unwrap(), &Nat).is_ok());
+ assert!(context.check(parse_lambda(incorrect_branches).unwrap(), &Unit).is_err());
+ assert!(context.check(parse_lambda(incorrect_cond_abs).unwrap(), &Error).is_err());
// more fun
- assert!(check(&context, parse_lambda(not_inferrable).unwrap(), &Func(Bool, Func(Int, Func(Int, Int)))).is_ok());
- assert!(check(&context, parse_lambda(not_inferrable).unwrap(), &Func(Bool, Func(Nat, Func(Nat, Nat)))).is_ok());
- assert!(check(&context, parse_lambda(not_inferrable).unwrap(), &Func(Bool, Func(Unit, Func(Unit, Unit)))).is_ok());
+ assert!(context.check(parse_lambda(not_inferrable).unwrap(), &Func(Bool, Func(Int, Func(Int, Int)))).is_ok());
+ assert!(context.check(parse_lambda(not_inferrable).unwrap(), &Func(Bool, Func(Nat, Func(Nat, Nat)))).is_ok());
+ assert!(context.check(parse_lambda(not_inferrable).unwrap(), &Func(Bool, Func(Unit, Func(Unit, Unit)))).is_ok());
}