extern crate specker; #[macro_use] mod support; #[cfg(test)] mod write_template_item { use specker::{self, Match}; use support::{new_item, write}; #[test] fn empty_item_should_produce_empty_file() { let file = write(new_item(&[]), &[]).unwrap(); assert_contents!(&file, ""); } #[test] fn template_item_that_contains_multiple_lines_should_produce_error() { let err = write(new_item(&[Match::MultipleLines]), &[]) .err() .expect("expected error"); assert_eq!(err, specker::TemplateWriteError::CanNotWriteMatchAnySymbols); } #[test] fn template_item_that_is_missing_param_should_produce_error() { let err = write(new_item(&[Match::Var("hi".into())]), &[]) .err() .expect("expected error"); assert_eq!(err, specker::TemplateWriteError::MissingParam("hi".into())); } #[test] fn new_line() { let file = write(new_item(&[Match::NewLine]), &[]).unwrap(); assert_contents!(&file, "\n"); } #[test] fn new_line_x2() { let file = write(new_item(&[Match::NewLine, Match::NewLine]), &[]).unwrap(); assert_contents!(&file, "\n\n"); } #[test] fn text() { let file = write(new_item(&[Match::Text("hello".into())]), &[]).unwrap(); assert_contents!(&file, "hello"); } #[test] fn text_x2() { let file = write( new_item(&[Match::Text("hello".into()), Match::Text("world".into())]), &[], ).unwrap(); assert_contents!(&file, "helloworld"); } #[test] fn param() { let file = write(new_item(&[Match::Var("a".into())]), &[("a", "hello")]).unwrap(); assert_contents!(&file, "hello"); } #[test] fn param_x2() { let file = write( new_item(&[Match::Var("a".into()), Match::Var("a".into())]), &[("a", "hello")], ).unwrap(); assert_contents!(&file, "hellohello"); } #[test] fn two_params() { let file = write( new_item(&[Match::Var("a".into()), Match::Var("b".into())]), &[("a", "hello"), ("b", "world")], ).unwrap(); assert_contents!(&file, "helloworld"); } #[test] fn mixed() { let file = write( new_item(&[ Match::Var("a".into()), Match::NewLine, Match::Var("b".into()), Match::NewLine, Match::Text("and bye ".into()), Match::Var("b".into()), Match::NewLine, Match::Text(".".into()), ]), &[("a", "hello"), ("b", "world")], ).unwrap(); assert_contents!(&file, "hello\nworld\nand bye world\n."); } }