| // 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); | |
| } | |
| */ |