1
#[test]
2
4
fn base_2() {
3
4
    assert_eq!(ron::from_str("-0b101010i32"), Ok(-0b101010i32));
4
4
    assert_eq!(ron::from_str("0b101010u32"), Ok(0b101010u32));
5
4
    assert_eq!(ron::from_str("-0b10_10_10i32"), Ok(-0b101010i32));
6
4
    assert_eq!(ron::from_str("0b101_010_u32"), Ok(0b101010u32));
7

            
8
4
    assert_eq!(
9
4
        ron::from_str::<i32>("-0b101010i31"),
10
        Err(ron::error::SpannedError {
11
            code: ron::error::Error::TrailingCharacters,
12
            span: ron::error::Span {
13
                start: ron::error::Position { line: 1, col: 10 },
14
                end: ron::error::Position { line: 1, col: 10 }
15
            }
16
        })
17
    );
18
4
}
19

            
20
#[test]
21
4
fn base_8() {
22
4
    assert_eq!(ron::from_str("-0o52i32"), Ok(-0o52i32));
23
4
    assert_eq!(ron::from_str("0o52u32"), Ok(0o52u32));
24
4
    assert_eq!(ron::from_str("-0o52_i32"), Ok(-0o52i32));
25
4
    assert_eq!(ron::from_str("0o5_2u32"), Ok(0o52u32));
26

            
27
4
    assert_eq!(
28
4
        ron::from_str::<i32>("0o_52_i32"),
29
        Err(ron::error::SpannedError {
30
            code: ron::error::Error::UnderscoreAtBeginning,
31
            span: ron::error::Span {
32
                start: ron::error::Position { line: 1, col: 7 },
33
                end: ron::error::Position {
34
                    line: 1,
35
                    col: 3, // FIXME
36
                }
37
            }
38
        })
39
    );
40
4
}
41

            
42
#[test]
43
4
fn base_10() {
44
4
    assert_eq!(ron::from_str("-42i32"), Ok(-42i32));
45
4
    assert_eq!(ron::from_str("42u32"), Ok(42u32));
46
4
    assert_eq!(ron::from_str("-42_i32"), Ok(-42i32));
47
4
    assert_eq!(ron::from_str("4_2u32"), Ok(42u32));
48

            
49
4
    assert_eq!(ron::from_str("00i32"), Ok(0i32));
50
4
}
51

            
52
#[test]
53
4
fn base_16() {
54
4
    assert_eq!(ron::from_str("-0x2Ai32"), Ok(-0x2Ai32));
55
4
    assert_eq!(ron::from_str("0x2Au32"), Ok(0x2Au32));
56
4
    assert_eq!(ron::from_str("-0x2_Ai32"), Ok(-0x2Ai32));
57
4
    assert_eq!(ron::from_str("0x2A_u32"), Ok(0x2Au32));
58

            
59
4
    assert_eq!(
60
4
        ron::from_str::<i32>("0x2Aj32"),
61
        Err(ron::error::SpannedError {
62
            code: ron::error::Error::TrailingCharacters,
63
            span: ron::error::Span {
64
                start: ron::error::Position { line: 1, col: 5 },
65
                end: ron::error::Position { line: 1, col: 5 }
66
            }
67
        })
68
    );
69
4
}