1
use conjure_cp_essence_parser::diagnostics::diagnostics_api::get_diagnostics;
2
use conjure_cp_essence_parser::diagnostics::error_detection::collect_errors::check_diagnostic;
3
use conjure_cp_essence_parser::util::get_tree;
4

            
5
#[test]
6
1
fn detects_keyword_as_identifier_find() {
7
1
    let source = "find find,b,c: int(1..3)";
8
1
    let (cst, _) = get_tree(&source).unwrap();
9
    // using find keyword instead of identifier
10
1
    let diagnostics = get_diagnostics(&source, &cst);
11

            
12
    // Should be exactly one diagnostic
13
1
    assert_eq!(diagnostics.len(), 1, "Expected exactly one diagnostic");
14

            
15
1
    let diag = &diagnostics[0];
16

            
17
1
    check_diagnostic(diag, 0, 5, 0, 9, "Keyword 'find' used as identifier");
18
1
}
19

            
20
#[test]
21
1
fn detects_keyword_as_identifier_letting() {
22
1
    let source = "find letting,b,c: int(1..3)";
23
1
    let (cst, _) = get_tree(&source).unwrap();
24

            
25
    // using find keyword instead of identifier
26
1
    let diagnostics = get_diagnostics(&source, &cst);
27

            
28
    // Should be exactly one diagnostic
29
1
    assert_eq!(diagnostics.len(), 1, "Expected exactly one diagnostic");
30

            
31
1
    let diag = &diagnostics[0];
32

            
33
1
    check_diagnostic(diag, 0, 5, 0, 12, "Keyword 'letting' used as identifier");
34
1
}
35

            
36
#[test]
37
1
fn detects_keyword_as_identifier_bool() {
38
1
    let source = "find bool: bool";
39
1
    let (cst, _) = get_tree(&source).unwrap();
40

            
41
    // using find keyword instead of identifier
42
1
    let diagnostics = get_diagnostics(&source, &cst);
43

            
44
    // Should be exactly one diagnostic
45
1
    assert_eq!(diagnostics.len(), 1, "Expected exactly one diagnostic");
46

            
47
1
    let diag = &diagnostics[0];
48

            
49
1
    check_diagnostic(diag, 0, 5, 0, 9, "Keyword 'bool' used as identifier");
50
1
}