summaryrefslogtreecommitdiffstats
path: root/src/librustdoc/html/toc/tests.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/librustdoc/html/toc/tests.rs')
-rw-r--r--src/librustdoc/html/toc/tests.rs79
1 files changed, 79 insertions, 0 deletions
diff --git a/src/librustdoc/html/toc/tests.rs b/src/librustdoc/html/toc/tests.rs
new file mode 100644
index 000000000..014f34686
--- /dev/null
+++ b/src/librustdoc/html/toc/tests.rs
@@ -0,0 +1,79 @@
+use super::{Toc, TocBuilder, TocEntry};
+
+#[test]
+fn builder_smoke() {
+ let mut builder = TocBuilder::new();
+
+ // this is purposely not using a fancy macro like below so
+ // that we're sure that this is doing the correct thing, and
+ // there's been no macro mistake.
+ macro_rules! push {
+ ($level: expr, $name: expr) => {
+ assert_eq!(builder.push($level, $name.to_string(), "".to_string()), $name);
+ };
+ }
+ push!(2, "0.1");
+ push!(1, "1");
+ {
+ push!(2, "1.1");
+ {
+ push!(3, "1.1.1");
+ push!(3, "1.1.2");
+ }
+ push!(2, "1.2");
+ {
+ push!(3, "1.2.1");
+ push!(3, "1.2.2");
+ }
+ }
+ push!(1, "2");
+ push!(1, "3");
+ {
+ push!(4, "3.0.0.1");
+ {
+ push!(6, "3.0.0.1.0.1");
+ }
+ push!(4, "3.0.0.2");
+ push!(2, "3.1");
+ {
+ push!(4, "3.1.0.1");
+ }
+ }
+
+ macro_rules! toc {
+ ($(($level: expr, $name: expr, $(($sub: tt))* )),*) => {
+ Toc {
+ entries: vec![
+ $(
+ TocEntry {
+ level: $level,
+ name: $name.to_string(),
+ sec_number: $name.to_string(),
+ id: "".to_string(),
+ children: toc!($($sub),*)
+ }
+ ),*
+ ]
+ }
+ }
+ }
+ let expected = toc!(
+ (2, "0.1",),
+ (
+ 1,
+ "1",
+ ((2, "1.1", ((3, "1.1.1",))((3, "1.1.2",))))((
+ 2,
+ "1.2",
+ ((3, "1.2.1",))((3, "1.2.2",))
+ ))
+ ),
+ (1, "2",),
+ (
+ 1,
+ "3",
+ ((4, "3.0.0.1", ((6, "3.0.0.1.0.1",))))((4, "3.0.0.2",))((2, "3.1", ((4, "3.1.0.1",))))
+ )
+ );
+ assert_eq!(expected, builder.into_toc());
+}