From 4bd68641e1121140abe8f82928b5e57ecdcb0756 Mon Sep 17 00:00:00 2001 From: Chris Wong <lambda.fairy@gmail.com> Date: Wed, 14 Jan 2015 13:48:48 +1300 Subject: [PATCH] Make tests significantly more sexy --- maud_macros/tests/tests.rs | 68 +++++++++++++++++++++++++++++++++----- 1 file changed, 60 insertions(+), 8 deletions(-) diff --git a/maud_macros/tests/tests.rs b/maud_macros/tests/tests.rs index 07838ac..2a729e6 100644 --- a/maud_macros/tests/tests.rs +++ b/maud_macros/tests/tests.rs @@ -5,7 +5,7 @@ extern crate maud; #[plugin] #[no_link] extern crate maud_macros; #[test] -fn it_works() { +fn literals() { let s = html!("du\tcks" -23 3.14 '\n' "geese").render(); assert_eq!(s, "du\tcks-233.14\ngeese"); } @@ -16,34 +16,86 @@ fn escaping() { assert_eq!(s, "<flim&flam>"); } +#[test] +fn semicolons() { + let s = html! { + "one"; + "two"; + "three"; + ;;;;;;;;;;;;;;;;;;;;;;;; + "four"; + }.render(); + assert_eq!(s, "onetwothreefour"); +} + #[test] fn blocks() { let s = html! { "hello" { - " ducks"; - " geese"; + " ducks" " geese" } " swans" }.render(); assert_eq!(s, "hello ducks geese swans"); } -mod splice { +mod elements { #[test] - fn literal() { + fn simple() { + let s = html! { + p { b { "pickle" } "barrel" i { "kumquat" } } + }.render(); + assert_eq!(s, "<p><b>pickle</b>barrel<i>kumquat</i></p>"); + } + + #[test] + fn nesting() { + let s = html!(html body div p sup "butts").render(); + assert_eq!(s, "<html><body><div><p><sup>butts</sup></p></div></body></html>"); + } + + #[test] + fn empty() { + let s = html!("pinkie" br/ "pie").render(); + assert_eq!(s, "pinkie<br>pie"); + } + + #[test] + fn attributes() { + let s = html! { + link rel="stylesheet" href="styles.css"/ + section id="midriff" { + p class="hotpink" "Hello!" + } + }.render(); + assert_eq!(s, concat!( + r#"<link rel="stylesheet" href="styles.css">"#, + r#"<section id="midriff"><p class="hotpink">Hello!</p></section>"#)); + } + + #[test] + fn empty_attributes() { + let s = html! { div readonly=! input type="checkbox" checked=! / }.render(); + assert_eq!(s, r#"<div readonly><input type="checkbox" checked></div>"#); + } +} + +mod splices { + #[test] + fn literals() { let s = html! { $"<pinkie>" }.render(); assert_eq!(s, "<pinkie>"); } #[test] - fn raw_literal() { + fn raw_literals() { let s = html! { $$"<pinkie>" }.render(); assert_eq!(s, "<pinkie>"); } #[test] - fn block() { + fn blocks() { let s = html! { ${ let mut result = 1i32; @@ -68,7 +120,7 @@ mod splice { // for why this is commented out /* #[test] - fn closure() { + fn closures() { let best_pony = "Pinkie Pie"; let s = html! { $best_pony }.render(); assert_eq!(s, "Pinkie Pie");