diff options
| author | Noah Lev <camelidcamel@gmail.com> | 2021-08-21 18:14:25 -0700 |
|---|---|---|
| committer | Noah Lev <camelidcamel@gmail.com> | 2021-08-25 20:03:25 -0700 |
| commit | f8ca5764c36feab162893cd16b567d87edd4cf8e (patch) | |
| tree | cc320f9baae435e1b06441b441d08ac80d74aaae /src | |
| parent | d18936a731fa1d2bf49073bd0f059129ef1b0ef1 (diff) | |
| download | rust-f8ca5764c36feab162893cd16b567d87edd4cf8e.tar.gz rust-f8ca5764c36feab162893cd16b567d87edd4cf8e.zip | |
Add tests for `HtmlWithLimit`
Diffstat (limited to 'src')
| -rw-r--r-- | src/librustdoc/html/length_limit.rs | 3 | ||||
| -rw-r--r-- | src/librustdoc/html/length_limit/tests.rs | 117 | ||||
| -rw-r--r-- | src/librustdoc/html/markdown/tests.rs | 2 |
3 files changed, 122 insertions, 0 deletions
diff --git a/src/librustdoc/html/length_limit.rs b/src/librustdoc/html/length_limit.rs index 2b47033744f..ecf41f7afa7 100644 --- a/src/librustdoc/html/length_limit.rs +++ b/src/librustdoc/html/length_limit.rs @@ -98,3 +98,6 @@ impl HtmlWithLimit { } } } + +#[cfg(test)] +mod tests; diff --git a/src/librustdoc/html/length_limit/tests.rs b/src/librustdoc/html/length_limit/tests.rs new file mode 100644 index 00000000000..5a006d44d58 --- /dev/null +++ b/src/librustdoc/html/length_limit/tests.rs @@ -0,0 +1,117 @@ +use super::*; + +#[test] +fn empty() { + assert_eq!(HtmlWithLimit::new(0).finish(), ""); + assert_eq!(HtmlWithLimit::new(60).finish(), ""); +} + +#[test] +fn basic() { + let mut buf = HtmlWithLimit::new(60); + buf.push("Hello "); + buf.open_tag("em"); + buf.push("world"); + buf.close_tag(); + buf.push("!"); + assert_eq!(buf.finish(), "Hello <em>world</em>!"); +} + +#[test] +fn no_tags() { + let mut buf = HtmlWithLimit::new(60); + buf.push("Hello"); + buf.push(" world!"); + assert_eq!(buf.finish(), "Hello world!"); +} + +#[test] +fn limit_0() { + let mut buf = HtmlWithLimit::new(0); + buf.push("Hello "); + buf.open_tag("em"); + buf.push("world"); + buf.close_tag(); + buf.push("!"); + assert_eq!(buf.finish(), ""); +} + +#[test] +fn exactly_limit() { + let mut buf = HtmlWithLimit::new(12); + buf.push("Hello "); + buf.open_tag("em"); + buf.push("world"); + buf.close_tag(); + buf.push("!"); + assert_eq!(buf.finish(), "Hello <em>world</em>!"); +} + +#[test] +fn multiple_nested_tags() { + let mut buf = HtmlWithLimit::new(60); + buf.open_tag("p"); + buf.push("This is a "); + buf.open_tag("em"); + buf.push("paragraph"); + buf.open_tag("strong"); + buf.push("!"); + buf.close_tag(); + buf.close_tag(); + buf.close_tag(); + assert_eq!(buf.finish(), "<p>This is a <em>paragraph<strong>!</strong></em></p>"); +} + +#[test] +fn forgot_to_close_tags() { + let mut buf = HtmlWithLimit::new(60); + buf.open_tag("p"); + buf.push("This is a "); + buf.open_tag("em"); + buf.push("paragraph"); + buf.open_tag("strong"); + buf.push("!"); + assert_eq!(buf.finish(), "<p>This is a <em>paragraph<strong>!</strong></em></p>"); +} + +#[test] +fn past_the_limit() { + let mut buf = HtmlWithLimit::new(20); + buf.open_tag("p"); + (0..10).try_for_each(|n| { + buf.open_tag("strong"); + buf.push("word#")?; + buf.push(&n.to_string())?; + buf.close_tag(); + ControlFlow::CONTINUE + }); + buf.close_tag(); + assert_eq!( + buf.finish(), + "<p>\ + <strong>word#0</strong>\ + <strong>word#1</strong>\ + <strong>word#2</strong>\ + </p>" + ); +} + +#[test] +fn quickly_past_the_limit() { + let mut buf = HtmlWithLimit::new(6); + buf.open_tag("p"); + buf.push("Hello"); + buf.push(" World"); + // intentionally not closing <p> before finishing + assert_eq!(buf.finish(), "<p>Hello</p>"); +} + +#[test] +#[should_panic = "called `Option::unwrap()` on a `None` value"] +fn close_too_many() { + let mut buf = HtmlWithLimit::new(60); + buf.open_tag("p"); + buf.push("Hello"); + buf.close_tag(); + buf.close_tag(); +} diff --git a/src/librustdoc/html/markdown/tests.rs b/src/librustdoc/html/markdown/tests.rs index 1e4bdc2d151..eca75ef013a 100644 --- a/src/librustdoc/html/markdown/tests.rs +++ b/src/librustdoc/html/markdown/tests.rs @@ -225,6 +225,7 @@ fn test_short_markdown_summary() { assert_eq!(output, expect, "original: {}", input); } + t("", ""); t("hello [Rust](https://www.rust-lang.org) :)", "hello Rust :)"); t("*italic*", "<em>italic</em>"); t("**bold**", "<strong>bold</strong>"); @@ -264,6 +265,7 @@ fn test_plain_text_summary() { assert_eq!(output, expect, "original: {}", input); } + t("", ""); t("hello [Rust](https://www.rust-lang.org) :)", "hello Rust :)"); t("**bold**", "bold"); t("Multi-line\nsummary", "Multi-line summary"); |
