|
|
|
|
@ -5,7 +5,7 @@ use super::inline_html::InlineHtmlBuilder;
|
|
|
|
|
#[test] |
|
|
|
|
fn text_with_no_markup() { |
|
|
|
|
let html = Html::parse("A simple text"); |
|
|
|
|
let (s, pills) = InlineHtmlBuilder::new(false, false).build_with_nodes(html.children()); |
|
|
|
|
let (s, pills) = InlineHtmlBuilder::new(false, false, false).build_with_nodes(html.children()); |
|
|
|
|
|
|
|
|
|
assert_eq!(s, "A simple text"); |
|
|
|
|
assert!(pills.is_none()); |
|
|
|
|
@ -14,13 +14,13 @@ fn text_with_no_markup() {
|
|
|
|
|
#[test] |
|
|
|
|
fn single_line() { |
|
|
|
|
let html = Html::parse("A simple text<br>on several lines"); |
|
|
|
|
let (s, pills) = InlineHtmlBuilder::new(true, false).build_with_nodes(html.children()); |
|
|
|
|
let (s, pills) = InlineHtmlBuilder::new(true, false, false).build_with_nodes(html.children()); |
|
|
|
|
|
|
|
|
|
assert_eq!(s, "A simple text…"); |
|
|
|
|
assert!(pills.is_none()); |
|
|
|
|
|
|
|
|
|
let html = Html::parse("\nThis is a paragraph<br />\n\nThis is another paragraph\n"); |
|
|
|
|
let (s, pills) = InlineHtmlBuilder::new(true, false).build_with_nodes(html.children()); |
|
|
|
|
let (s, pills) = InlineHtmlBuilder::new(true, false, false).build_with_nodes(html.children()); |
|
|
|
|
|
|
|
|
|
assert_eq!(s, "This is a paragraph…"); |
|
|
|
|
assert!(pills.is_none()); |
|
|
|
|
@ -29,7 +29,7 @@ fn single_line() {
|
|
|
|
|
#[test] |
|
|
|
|
fn add_ellipsis() { |
|
|
|
|
let html = Html::parse("A simple text"); |
|
|
|
|
let (s, pills) = InlineHtmlBuilder::new(false, true).build_with_nodes(html.children()); |
|
|
|
|
let (s, pills) = InlineHtmlBuilder::new(false, true, false).build_with_nodes(html.children()); |
|
|
|
|
|
|
|
|
|
assert_eq!(s, "A simple text…"); |
|
|
|
|
assert!(pills.is_none()); |
|
|
|
|
@ -38,7 +38,7 @@ fn add_ellipsis() {
|
|
|
|
|
#[test] |
|
|
|
|
fn no_duplicate_ellipsis() { |
|
|
|
|
let html = Html::parse("A simple text...<br>...on several lines"); |
|
|
|
|
let (s, pills) = InlineHtmlBuilder::new(true, false).build_with_nodes(html.children()); |
|
|
|
|
let (s, pills) = InlineHtmlBuilder::new(true, false, false).build_with_nodes(html.children()); |
|
|
|
|
|
|
|
|
|
assert_eq!(s, "A simple text..."); |
|
|
|
|
assert!(pills.is_none()); |
|
|
|
|
@ -47,7 +47,7 @@ fn no_duplicate_ellipsis() {
|
|
|
|
|
#[test] |
|
|
|
|
fn trim_end_spaces() { |
|
|
|
|
let html = Html::parse("A high-altitude text 🗻 "); |
|
|
|
|
let (s, pills) = InlineHtmlBuilder::new(false, false).build_with_nodes(html.children()); |
|
|
|
|
let (s, pills) = InlineHtmlBuilder::new(false, false, false).build_with_nodes(html.children()); |
|
|
|
|
|
|
|
|
|
assert_eq!(s, "A high-altitude text 🗻"); |
|
|
|
|
assert!(pills.is_none()); |
|
|
|
|
@ -55,17 +55,27 @@ fn trim_end_spaces() {
|
|
|
|
|
|
|
|
|
|
#[test] |
|
|
|
|
fn collapse_whitespace() { |
|
|
|
|
let html = Html::parse("Hello \nyou! \nYou are <b>my \nfriend</b>."); |
|
|
|
|
let (s, pills) = InlineHtmlBuilder::new(false, false).build_with_nodes(html.children()); |
|
|
|
|
let original = "Hello \nyou! \nYou are <b>my \nfriend</b>."; |
|
|
|
|
let html = Html::parse(original); |
|
|
|
|
|
|
|
|
|
let (s, pills) = InlineHtmlBuilder::new(false, false, false).build_with_nodes(html.children()); |
|
|
|
|
assert_eq!(s, "Hello you! You are <b>my friend</b>."); |
|
|
|
|
assert!(pills.is_none()); |
|
|
|
|
|
|
|
|
|
let html = Html::parse(" Hello \nyou! \n\nYou are \n<b> my \nfriend </b>. "); |
|
|
|
|
let (s, pills) = InlineHtmlBuilder::new(false, false).build_with_nodes(html.children()); |
|
|
|
|
let (s, pills) = InlineHtmlBuilder::new(false, false, true).build_with_nodes(html.children()); |
|
|
|
|
assert_eq!(s, original); |
|
|
|
|
assert!(pills.is_none()); |
|
|
|
|
|
|
|
|
|
let original = " Hello \nyou! \n\nYou are \n<b> my \nfriend </b>. "; |
|
|
|
|
let html = Html::parse(original); |
|
|
|
|
|
|
|
|
|
let (s, pills) = InlineHtmlBuilder::new(false, false, false).build_with_nodes(html.children()); |
|
|
|
|
assert_eq!(s, "Hello you! You are <b>my friend</b>."); |
|
|
|
|
assert!(pills.is_none()); |
|
|
|
|
|
|
|
|
|
let (s, pills) = InlineHtmlBuilder::new(false, false, true).build_with_nodes(html.children()); |
|
|
|
|
assert_eq!(s, original); |
|
|
|
|
assert!(pills.is_none()); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
#[test] |
|
|
|
|
@ -73,7 +83,7 @@ fn sanitize_inline_html() {
|
|
|
|
|
let html = Html::parse( |
|
|
|
|
r#"A <strong>text</strong> with <a href="https://docs.local/markup"><i>markup</i></a>"#, |
|
|
|
|
); |
|
|
|
|
let (s, pills) = InlineHtmlBuilder::new(false, false).build_with_nodes(html.children()); |
|
|
|
|
let (s, pills) = InlineHtmlBuilder::new(false, false, false).build_with_nodes(html.children()); |
|
|
|
|
|
|
|
|
|
assert_eq!( |
|
|
|
|
s, |
|
|
|
|
@ -87,7 +97,7 @@ fn escape_markup() {
|
|
|
|
|
let html = Html::parse( |
|
|
|
|
r#"Go to <a href="https://docs.local?this=this&that=that">this & that docs</a>"#, |
|
|
|
|
); |
|
|
|
|
let (s, pills) = InlineHtmlBuilder::new(false, false).build_with_nodes(html.children()); |
|
|
|
|
let (s, pills) = InlineHtmlBuilder::new(false, false, false).build_with_nodes(html.children()); |
|
|
|
|
|
|
|
|
|
assert_eq!( |
|
|
|
|
s, |
|
|
|
|
@ -101,7 +111,7 @@ fn linkify() {
|
|
|
|
|
let html = Html::parse( |
|
|
|
|
"The homepage is https://gnome.org, and you can contact me at contact@me.local", |
|
|
|
|
); |
|
|
|
|
let (s, pills) = InlineHtmlBuilder::new(false, false).build_with_nodes(html.children()); |
|
|
|
|
let (s, pills) = InlineHtmlBuilder::new(false, false, false).build_with_nodes(html.children()); |
|
|
|
|
|
|
|
|
|
assert_eq!( |
|
|
|
|
s, |
|
|
|
|
@ -113,7 +123,7 @@ fn linkify() {
|
|
|
|
|
#[test] |
|
|
|
|
fn do_not_linkify_inside_anchor() { |
|
|
|
|
let html = Html::parse(r#"The homepage is <a href="https://gnome.org">https://gnome.org</a>"#); |
|
|
|
|
let (s, pills) = InlineHtmlBuilder::new(false, false).build_with_nodes(html.children()); |
|
|
|
|
let (s, pills) = InlineHtmlBuilder::new(false, false, false).build_with_nodes(html.children()); |
|
|
|
|
|
|
|
|
|
assert_eq!( |
|
|
|
|
s, |
|
|
|
|
@ -125,7 +135,7 @@ fn do_not_linkify_inside_anchor() {
|
|
|
|
|
#[test] |
|
|
|
|
fn do_not_linkify_inside_code() { |
|
|
|
|
let html = Html::parse("The homepage is <code>https://gnome.org</code>"); |
|
|
|
|
let (s, pills) = InlineHtmlBuilder::new(false, false).build_with_nodes(html.children()); |
|
|
|
|
let (s, pills) = InlineHtmlBuilder::new(false, false, false).build_with_nodes(html.children()); |
|
|
|
|
|
|
|
|
|
assert_eq!(s, "The homepage is <tt>https://gnome.org</tt>"); |
|
|
|
|
assert!(pills.is_none()); |
|
|
|
|
@ -134,7 +144,7 @@ fn do_not_linkify_inside_code() {
|
|
|
|
|
#[test] |
|
|
|
|
fn emote_name() { |
|
|
|
|
let html = Html::parse("sent a beautiful picture."); |
|
|
|
|
let (s, pills) = InlineHtmlBuilder::new(false, false) |
|
|
|
|
let (s, pills) = InlineHtmlBuilder::new(false, false, false) |
|
|
|
|
.append_emote_with_name(&mut Some("Jun")) |
|
|
|
|
.build_with_nodes(html.children()); |
|
|
|
|
|
|
|
|
|
|