| // Tests for HTML spec. |
| |
| extern crate pulldown_cmark; |
| |
| use pulldown_cmark::{html, Options, Parser}; |
| |
| #[test] |
| fn html_test_1() { |
| let original = r##"Little header |
| |
| <script type="text/js"> |
| function some_func() { |
| console.log("teeeest"); |
| } |
| |
| |
| function another_func() { |
| console.log("fooooo"); |
| } |
| </script>"##; |
| let expected = r##"<p>Little header</p> |
| <script type="text/js"> |
| function some_func() { |
| console.log("teeeest"); |
| } |
| |
| |
| function another_func() { |
| console.log("fooooo"); |
| } |
| </script>"##; |
| |
| let mut s = String::new(); |
| html::push_html(&mut s, Parser::new(&original)); |
| assert_eq!(expected, s); |
| } |
| |
| #[test] |
| fn html_test_2() { |
| let original = r##"Little header |
| |
| <script |
| type="text/js"> |
| function some_func() { |
| console.log("teeeest"); |
| } |
| |
| |
| function another_func() { |
| console.log("fooooo"); |
| } |
| </script>"##; |
| let expected = r##"<p>Little header</p> |
| <script |
| type="text/js"> |
| function some_func() { |
| console.log("teeeest"); |
| } |
| |
| |
| function another_func() { |
| console.log("fooooo"); |
| } |
| </script>"##; |
| |
| let mut s = String::new(); |
| html::push_html(&mut s, Parser::new(&original)); |
| assert_eq!(expected, s); |
| } |
| |
| #[test] |
| fn html_test_3() { |
| let original = r##"Little header |
| |
| <? |
| <div></div> |
| <p>Useless</p> |
| ?>"##; |
| let expected = r##"<p>Little header</p> |
| <? |
| <div></div> |
| <p>Useless</p> |
| ?>"##; |
| |
| let mut s = String::new(); |
| html::push_html(&mut s, Parser::new(&original)); |
| assert_eq!(expected, s); |
| } |
| |
| #[test] |
| fn html_test_4() { |
| let original = r##"Little header |
| |
| <!-- |
| <div></div> |
| <p>Useless</p> |
| -->"##; |
| let expected = r##"<p>Little header</p> |
| <!-- |
| <div></div> |
| <p>Useless</p> |
| -->"##; |
| |
| let mut s = String::new(); |
| html::push_html(&mut s, Parser::new(&original)); |
| assert_eq!(expected, s); |
| } |
| |
| #[test] |
| fn html_test_5() { |
| let original = r##"Little header |
| |
| <![CDATA[ |
| <div></div> |
| <p>Useless</p> |
| ]]>"##; |
| let expected = r##"<p>Little header</p> |
| <![CDATA[ |
| <div></div> |
| <p>Useless</p> |
| ]]>"##; |
| |
| let mut s = String::new(); |
| html::push_html(&mut s, Parser::new(&original)); |
| assert_eq!(expected, s); |
| } |
| |
| #[test] |
| fn html_test_6() { |
| let original = r##"Little header |
| |
| <!X |
| Some things are here... |
| >"##; |
| let expected = r##"<p>Little header</p> |
| <!X |
| Some things are here... |
| >"##; |
| |
| let mut s = String::new(); |
| html::push_html(&mut s, Parser::new(&original)); |
| assert_eq!(expected, s); |
| } |
| |
| #[test] |
| fn html_test_7() { |
| let original = r##"Little header |
| ----------- |
| |
| <script> |
| function some_func() { |
| console.log("teeeest"); |
| } |
| |
| |
| function another_func() { |
| console.log("fooooo"); |
| } |
| </script>"##; |
| let expected = r##"<h2>Little header</h2> |
| <script> |
| function some_func() { |
| console.log("teeeest"); |
| } |
| |
| |
| function another_func() { |
| console.log("fooooo"); |
| } |
| </script>"##; |
| |
| let mut s = String::new(); |
| html::push_html(&mut s, Parser::new(&original)); |
| assert_eq!(expected, s); |
| } |
| |
| #[test] |
| fn html_test_8() { |
| let original = "A | B\n---|---\nfoo | bar"; |
| let expected = r##"<table><thead><tr><th>A</th><th>B</th></tr></thead><tbody> |
| <tr><td>foo</td><td>bar</td></tr> |
| </tbody></table> |
| "##; |
| |
| let mut s = String::new(); |
| let mut opts = Options::empty(); |
| opts.insert(Options::ENABLE_TABLES); |
| html::push_html(&mut s, Parser::new_ext(&original, opts)); |
| assert_eq!(expected, s); |
| } |
| |
| #[test] |
| fn html_test_9() { |
| let original = "---"; |
| let expected = "<hr />\n"; |
| |
| let mut s = String::new(); |
| html::push_html(&mut s, Parser::new(&original)); |
| assert_eq!(expected, s); |
| } |
| |
| #[test] |
| fn html_test_10() { |
| let original = "* * *"; |
| let expected = "<hr />\n"; |
| |
| let mut s = String::new(); |
| html::push_html(&mut s, Parser::new(&original)); |
| assert_eq!(expected, s); |
| } |
| |
| // TODO: add broken link callback feature |
| /* |
| #[test] |
| fn html_test_broken_callback() { |
| let original = r##"[foo], |
| [bar], |
| [baz], |
| |
| [baz]: https://example.org |
| "##; |
| |
| let expected = r##"<p><a href="https://replaced.example.org" title="some title">foo</a>, |
| [bar], |
| <a href="https://example.org">baz</a>,</p> |
| "##; |
| |
| use pulldown_cmark::{Options, Parser, html}; |
| |
| let mut s = String::new(); |
| |
| let callback = |reference: &str, _normalized: &str| -> Option<(String, String)> { |
| if reference == "foo" || reference == "baz" { |
| Some(("https://replaced.example.org".into(), "some title".into())) |
| } else { |
| None |
| } |
| }; |
| |
| let p = Parser::new_with_broken_link_callback(&original, Options::empty(), Some(&callback)); |
| html::push_html(&mut s, p); |
| |
| assert_eq!(expected, s); |
| } |
| */ |