rune-testing 0.6.15

Test helpers for Rune, an embeddable dynamic programming language for Rust.
use rune_testing::*;

#[test]
fn test_number_literals() {
    assert_parse!(r#"fn main() { -9223372036854775808 }"#);
    assert_parse!(
        r#"fn main() { -0b1000000000000000000000000000000000000000000000000000000000000000 }"#
    );
    assert_parse!(
        r#"fn main() { 0b0111111111111111111111111111111111111111111111111111111111111111 }"#
    );

    assert_compile_error! {
        r#"fn main() { -0aardvark }"#,
        ParseError { error: BadNumberLiteral { span, .. }} => {
            assert_eq!(span, Span::new(12, 22));
        }
    };

    assert_compile_error! {
        r#"fn main() { -9223372036854775809 }"#,
        ParseError { error: BadNumberOutOfBounds { span, .. }} => {
            assert_eq!(span, Span::new(12, 32));
        }
    };

    assert_parse!(r#"fn main() { 9223372036854775807 }"#);
    assert_compile_error! {
        r#"fn main() { 9223372036854775808 }"#,
        ParseError { error: BadNumberOutOfBounds { span, .. }} => {
            assert_eq!(span, Span::new(12, 31));
        }
    };

    assert_compile_error! {
        r#"fn main() { 0b1000000000000000000000000000000000000000000000000000000000000000 }"#,
        ParseError { error: BadNumberOutOfBounds { span, .. }} => {
            assert_eq!(span, Span::new(12, 78));
        }
    };
}