Add automated parsing tests
parent
cb8f469853
commit
fc1d1ccb56
@ -1,3 +1,4 @@
|
||||
pub mod format;
|
||||
pub mod parsing;
|
||||
pub use parsing::parser::Parser;
|
||||
pub use parsing::utils;
|
||||
|
@ -0,0 +1,97 @@
|
||||
use snekdown::parse;
|
||||
use snekdown::parsing::elements::Block;
|
||||
use snekdown::Parser;
|
||||
|
||||
macro_rules! count_block_elements {
|
||||
($document:expr, $filter:expr) => {
|
||||
$document
|
||||
.elements
|
||||
.iter()
|
||||
.filter($filter)
|
||||
.collect::<Vec<&Block>>()
|
||||
.len()
|
||||
};
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn it_inits() {
|
||||
let _ = Parser::new("".to_string(), None);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn it_parses_sections() {
|
||||
let document = parse!("# Section\n## Subsection\n# Section");
|
||||
assert_eq!(
|
||||
count_block_elements!(document, |e| if let Block::Section(_) = e {
|
||||
true
|
||||
} else {
|
||||
false
|
||||
}),
|
||||
2
|
||||
)
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn it_parses_tables() {
|
||||
let document = parse!("|header|header|\n|---|---|\n|col|col|");
|
||||
assert_eq!(
|
||||
count_block_elements!(document, |e| if let Block::Table(_) = e {
|
||||
true
|
||||
} else {
|
||||
false
|
||||
}),
|
||||
1
|
||||
)
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn it_parses_paragraphs() {
|
||||
let document = parse!("**Bold***Italic*_Underline_`Monospace`^super^~strike~");
|
||||
assert_eq!(
|
||||
count_block_elements!(document, |e| if let Block::Paragraph(_) = e {
|
||||
true
|
||||
} else {
|
||||
false
|
||||
}),
|
||||
1
|
||||
)
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn it_parses_lists() {
|
||||
let document = parse!("- item1\n- item2\n\n* item\n+ item\n\no item\n1. item");
|
||||
assert_eq!(
|
||||
count_block_elements!(document, |e| if let Block::List(l) = e {
|
||||
l.items.len() == 2
|
||||
} else {
|
||||
false
|
||||
}),
|
||||
3
|
||||
)
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn it_parses_code_blocks() {
|
||||
let document = parse!("```\ncode\n```\n```rust\ncode\n``````");
|
||||
assert_eq!(
|
||||
count_block_elements!(document, |e| if let Block::CodeBlock(_) = e {
|
||||
true
|
||||
} else {
|
||||
false
|
||||
}),
|
||||
2
|
||||
)
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn it_parses_quotes() {
|
||||
let document = parse!("> quote\n\n[meta]> quote\n>hm");
|
||||
assert_eq!(
|
||||
count_block_elements!(document, |e| if let Block::Quote(_) = e {
|
||||
true
|
||||
} else {
|
||||
false
|
||||
}),
|
||||
2
|
||||
)
|
||||
}
|
Loading…
Reference in New Issue