Add tests for the content syntax parser
This commit is contained in:
parent
4ae966e503
commit
e50bbd468d
12 changed files with 383 additions and 120 deletions
|
|
@ -1,4 +1,3 @@
|
|||
use std::fmt::Display;
|
||||
use crate::syntax::content::{Parseable, parser::lexeme::Lexeme};
|
||||
|
||||
#[derive(Debug)]
|
||||
|
|
@ -35,16 +34,42 @@ impl Parseable for Span {
|
|||
}
|
||||
}
|
||||
|
||||
impl Display for Span {
|
||||
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
|
||||
if let Some(open) = self.open {
|
||||
if open {
|
||||
write!(f, "Open Span")
|
||||
} else {
|
||||
write!(f, "Closed Span")
|
||||
}
|
||||
} else {
|
||||
write!(f, "Span (Unknown open state)")
|
||||
}
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
|
||||
#[test]
|
||||
fn probe() {
|
||||
assert!(!Span::probe(&Lexeme::new(
|
||||
&crate::ONSET.elapsed().as_nanos().to_string(),
|
||||
"",
|
||||
)));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn lex() {
|
||||
let span = Span::lex(&Lexeme::new(
|
||||
&crate::ONSET.elapsed().as_nanos().to_string(),
|
||||
"",
|
||||
));
|
||||
assert!(span.open.is_none());
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn render() {
|
||||
let open_span = Span::new(true);
|
||||
assert_eq!(open_span.render(), "<span>");
|
||||
|
||||
let closed_span = Span::new(false);
|
||||
assert_eq!(closed_span.render(), "</span>");
|
||||
}
|
||||
|
||||
#[test]
|
||||
#[should_panic(
|
||||
expected = "Attempt to render a span tag while open state is unknown"
|
||||
)]
|
||||
fn render_unknown_open_state() {
|
||||
let open_span = Span::lex(&Lexeme::new("", ""));
|
||||
drop(open_span.render());
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue