aiken_lang/parser/definition/
test.rs

1use crate::{
2    ast,
3    parser::{error::ParseError, token::Token},
4};
5use chumsky::prelude::*;
6
7pub fn parser() -> impl Parser<Token, ast::UntypedDefinition, Error = ParseError> {
8    crate::parser::definition::test_like::parser(Token::Test)
9}
10
11#[cfg(test)]
12mod tests {
13    use crate::assert_definition;
14
15    #[test]
16    fn def_test() {
17        assert_definition!(
18            r#"
19            test foo() {
20                True
21            }
22            "#
23        );
24    }
25
26    #[test]
27    fn def_test_fail() {
28        assert_definition!(
29            r#"
30            test invalid_inputs() fail {
31              expect True = False
32
33              False
34            }
35            "#
36        );
37    }
38
39    #[test]
40    fn def_property_test() {
41        assert_definition!(
42            r#"
43            test foo(x via fuzz.any_int) {
44                True
45            }
46            "#
47        );
48    }
49
50    #[test]
51    fn def_invalid_property_test() {
52        assert_definition!(
53            r#"
54            test foo(x via f, y via g) {
55                True
56            }
57            "#
58        );
59    }
60
61    #[test]
62    fn def_property_test_annotated_fuzzer() {
63        assert_definition!(
64            r#"
65            test foo(x: Int via foo()) {
66                True
67            }
68            "#
69        );
70    }
71}