summaryrefslogtreecommitdiff
path: root/autochomp/tests/compare/main.rs
blob: 112f64261a09a84da8b30e8311825a3dd472c172 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
use chewed::{IterWrapper, Parser};
use chomp::{
    chomp::ast::NamedExpression,
    nibble::{
        self,
        convert::{Context, Convert},
    },
};

fn chomp(input: &str) -> NamedExpression {
    syn::parse_str::<nibble::Statement>(&input)
        .unwrap()
        .convert(&mut Context::default())
        .unwrap()
}

fn autonibble(input: &str) -> NamedExpression {
    IterWrapper::new(input.chars())
        .parse::<autochomp::Ast>()
        .unwrap()
        .convert(&mut Context::default())
        .unwrap()
}

macro_rules! compare {
    ($name:ident, $file:literal) => {
        #[test]
        fn $name() {
            let input = include_str!($file);
            assert_eq!(chomp(input), autonibble(input))
        }
    };
}

compare!(compare_sheep, "nibble/sheep.nb");
compare!(compare_ratata, "nibble/ratata.nb");
compare!(compare_regex, "nibble/regex.nb");
compare!(compare_regex_fix, "nibble/regex_fix.nb");
compare!(compare_nibble, "nibble/nibble_exp.nb");