1
use ron::de::{from_str, Error, Position, Span, SpannedError as RonErr};
2

            
3
#[test]
4
4
fn test_simple() {
5
4
    assert_eq!(
6
4
        from_str(
7
4
            "/*
8
4
 * We got a hexadecimal number here!
9
4
 *
10
4
 */0x507"
11
        ),
12
        Ok(0x507)
13
    );
14
4
}
15

            
16
#[test]
17
4
fn test_nested() {
18
4
    assert_eq!(
19
4
        from_str(
20
4
            "/*
21
4
        /* quite * some * nesting * going * on * /* here /* (yeah, maybe a bit too much) */ */ */
22
4
    */
23
4
    // The actual value comes.. /*
24
4
    // very soon, these are just checks that */
25
4
    // multi-line comments don't trigger in line comments /*
26
4
\"THE VALUE\" /* This is the value /* :) */ */
27
4
    "
28
        ),
29
4
        Ok("THE VALUE".to_owned())
30
    );
31
4
}
32

            
33
#[test]
34
4
fn test_unclosed() {
35
4
    assert_eq!(
36
4
        from_str::<String>("\"hi\" /*"),
37
        Err(RonErr {
38
            code: Error::UnclosedBlockComment,
39
            span: Span {
40
                start: Position { line: 1, col: 6 },
41
                end: Position { line: 1, col: 8 }
42
            }
43
        })
44
    );
45
4
    assert_eq!(
46
4
        from_str::<String>(
47
4
            "/*
48
4
        /* quite * some * nesting * going * on * /* here /* (yeah, maybe a bit too much) */ */ */
49
4
    */
50
4
    // The actual value comes.. /*
51
4
    // very soon, these are just checks that */
52
4
    // multi-line comments don't trigger in line comments /*
53
4
/* Unfortunately, this comment won't get closed :(
54
4
\"THE VALUE (which is invalid)\"
55
4
"
56
        ),
57
        Err(RonErr {
58
            code: Error::UnclosedBlockComment,
59
            span: Span {
60
                start: Position { line: 7, col: 3 },
61
                end: Position { line: 9, col: 1 }
62
            }
63
        })
64
    );
65
4
}
66

            
67
#[test]
68
4
fn test_unexpected_byte() {
69
4
    assert_eq!(
70
4
        from_str::<u8>("42 /q"),
71
        Err(RonErr {
72
            code: Error::UnexpectedChar('q'),
73
            span: Span {
74
                start: Position { line: 1, col: 4 },
75
                end: Position { line: 1, col: 6 },
76
            }
77
        })
78
    );
79
4
}