36 lines
1.1 KiB
Rust
36 lines
1.1 KiB
Rust
use testparser::*;
|
|
|
|
fn main() {
|
|
let mut c = p_context_new(b"a 42");
|
|
assert_eq!(P_SUCCESS, p_parse(&mut c));
|
|
p_context_delete(c);
|
|
|
|
let mut c = p_context_new(b"a\n123\na a");
|
|
assert_eq!(P_UNEXPECTED_TOKEN, p_parse(&mut c));
|
|
assert_eq!(3, p_position(&c).row);
|
|
assert_eq!(4, p_position(&c).col);
|
|
assert_eq!(TOKEN_a, p_token(&c));
|
|
p_context_delete(c);
|
|
|
|
let mut c = p_context_new(b"12");
|
|
assert_eq!(P_UNEXPECTED_TOKEN, p_parse(&mut c));
|
|
assert_eq!(1, p_position(&c).row);
|
|
assert_eq!(1, p_position(&c).col);
|
|
assert_eq!(TOKEN_num, p_token(&c));
|
|
p_context_delete(c);
|
|
|
|
let mut c = p_context_new(b"a 12\n\nab");
|
|
assert_eq!(P_UNEXPECTED_INPUT, p_parse(&mut c));
|
|
assert_eq!(3, p_position(&c).row);
|
|
assert_eq!(2, p_position(&c).col);
|
|
p_context_delete(c);
|
|
|
|
let mut c = p_context_new(b"a 12\n\na\n\n77\na \xAA");
|
|
assert_eq!(P_DECODE_ERROR, p_parse(&mut c));
|
|
assert_eq!(6, p_position(&c).row);
|
|
assert_eq!(5, p_position(&c).col);
|
|
assert_eq!("a", p_token_names[TOKEN_a as usize]);
|
|
assert_eq!("num", p_token_names[TOKEN_num as usize]);
|
|
p_context_delete(c);
|
|
}
|