spooky/test/test_spooky.ml

53 lines
839 B
OCaml
Raw Normal View History

2026-04-29 15:25:15 +00:00
let valid_program =
{|
struct Item {
int value;
};
int fold(int[] xs) {
int total = 0;
foreach (int x in xs) {
total = total + x;
}
return total;
}
int main() {
int[] xs;
struct Item it;
int y = 2 + 3 * 4;
it.value = y;
if (y >= 0) {
y = fold(xs);
} else {
y = 0;
}
return y;
}
|}
let invalid_program =
{|
int main() {
bool flag = true;
int x = 1;
x = flag;
return x;
}
|}
let test_valid_program () =
match Spooky.parse_and_type_check valid_program with
| Ok _ -> ()
| Error msg -> failwith ("expected valid program, got: " ^ msg)
let test_invalid_program () =
match Spooky.parse_and_type_check invalid_program with
| Ok _ -> failwith "expected type error, but got success"
| Error _ -> ()
let () =
test_valid_program ();
test_invalid_program ();
print_endline "All parser/type-check tests passed."