use crate::views::section::markdown::MarkdownParser;
use crate::views::section::markdown::MarkdownToken;
#[test]
fn md_header_in_the_first_line() {
let markdown = r####"## Kaboom"####;
let header1_level = 2;
let header1_text = " Kaboom";
let expected = vec![MarkdownToken::Header {
level: header1_level,
text: header1_text,
len: header1_text.len() + header1_level,
}];
let parser = MarkdownParser::new();
let result = parser.parse(markdown);
assert_eq!(result, expected);
}
#[test]
fn md_header_in_the_second_line_1() {
let markdown = r####"
## Kaboom"####;
let header1_level = 2;
let header1_text = " Kaboom";
let expected = vec![MarkdownToken::Header {
level: header1_level,
text: header1_text,
len: header1_text.len() + header1_level + 1,
}];
let parser = MarkdownParser::new();
let result = parser.parse(markdown);
assert_eq!(result, expected);
}
#[test]
fn md_header_in_the_second_line_2() {
let markdown = r####"
## Kaboom"####;
let markdown1_text = " ";
let header1_level = 2;
let header1_text = " Kaboom";
let expected = vec![
MarkdownToken::Markdown {
text: markdown1_text,
len: markdown1_text.len(),
},
MarkdownToken::Header {
level: header1_level,
text: header1_text,
len: header1_text.len() + header1_level + 1,
},
];
let parser = MarkdownParser::new();
let result = parser.parse(markdown);
assert_eq!(result, expected);
}
#[test]
fn md_header_in_the_second_line_3() {
let markdown = "\t\t\t\t\n## Kaboom".to_string();
let markdown1_text = "\t\t\t\t".to_string();
let header1_level = 2;
let header1_text = " Kaboom";
let expected = vec![
MarkdownToken::Markdown {
text: &markdown1_text,
len: markdown1_text.len(),
},
MarkdownToken::Header {
level: header1_level,
text: header1_text,
len: header1_text.len() + header1_level + 1,
},
];
let parser = MarkdownParser::new();
let result = parser.parse(&markdown);
assert_eq!(result, expected);
}
#[test]
fn md_header_in_the_second_line_4() {
let markdown = "blah blah blah\n## Kaboom".to_string();
let markdown1_text = "blah blah blah";
let header1_level = 2;
let header1_text = " Kaboom";
let expected = vec![
MarkdownToken::Markdown {
text: markdown1_text,
len: markdown1_text.len(),
},
MarkdownToken::Header {
level: header1_level,
text: header1_text,
len: header1_text.len() + header1_level + 1,
},
];
let parser = MarkdownParser::new();
let result = parser.parse(&markdown);
assert_eq!(result, expected);
}
#[test]
fn md_header_in_the_middle_of_the_text() {
let markdown = "blah blah blah\n## Kaboom\n bla bla bla".to_string();
let markdown1_text = "blah blah blah";
let header1_level = 2;
let header1_text = " Kaboom";
let markdown2_text = "\n bla bla bla";
let expected = vec![
MarkdownToken::Markdown {
text: markdown1_text,
len: markdown1_text.len(),
},
MarkdownToken::Header {
level: header1_level,
text: header1_text,
len: header1_text.len() + header1_level + 1,
},
MarkdownToken::Markdown {
text: markdown2_text,
len: markdown2_text.len(),
},
];
let parser = MarkdownParser::new();
let result = parser.parse(&markdown);
assert_eq!(result, expected);
}
mod internal {
use crate::views::section::markdown::MarkdownToken;
use crate::views::section::markdown::header;
#[test]
fn header_at_the_start_initial() {
let markdown = r####"## Kaboom"####;
let header1_level = 2;
let header1_text = " Kaboom";
let expected = Some(MarkdownToken::Header {
level: header1_level,
text: header1_text,
len: header1_text.len() + header1_level,
});
let result = header(markdown, true);
assert_eq!(result, expected);
}
#[test]
fn header_after_new_line_initial() {
let markdown = r####"
## Kaboom"####;
let header1_level = 2;
let header1_text = " Kaboom";
let expected = Some(MarkdownToken::Header {
level: header1_level,
text: header1_text,
len: header1_text.len() + header1_level + 1, });
let result = header(markdown, true);
assert_eq!(result, expected);
}
#[test]
fn header_at_the_start() {
let markdown = r####"## Kaboom"####;
let expected = None;
let result = header(markdown, false);
assert_eq!(result, expected);
}
#[test]
fn header_after_new_line() {
let markdown = r####"
## Kaboom"####;
let header1_level = 2;
let header1_text = " Kaboom";
let expected = Some(MarkdownToken::Header {
level: header1_level,
text: header1_text,
len: header1_text.len() + header1_level + 1, });
let result = header(markdown, false);
assert_eq!(result, expected);
}
#[test]
fn empty_header_initial() {
let markdown = r####"##
"####;
let header1_level = 2;
let header1_text = "";
let expected = Some(MarkdownToken::Header {
level: header1_level,
text: header1_text,
len: header1_text.len() + header1_level,
});
let result = header(markdown, true);
assert_eq!(result, expected);
}
#[test]
fn empty_header() {
let markdown = r####"
##
"####;
let header1_level = 2;
let header1_text = "";
let expected = Some(MarkdownToken::Header {
level: header1_level,
text: header1_text,
len: header1_text.len() + header1_level + 1, });
let result = header(markdown, false);
assert_eq!(result, expected);
}
}