| extern crate handlebars; |
| #[macro_use] |
| extern crate serde_json; |
| |
| use handlebars::Handlebars; |
| |
| #[test] |
| fn test_subexpression() { |
| let hbs = Handlebars::new(); |
| |
| let data = json!({"a": 1, "b": 0, "c": 2}); |
| |
| assert_eq!( |
| hbs.render_template("{{#if (gt a b)}}Success{{else}}Failed{{/if}}", &data) |
| .unwrap(), |
| "Success" |
| ); |
| |
| assert_eq!( |
| hbs.render_template("{{#if (gt a c)}}Success{{else}}Failed{{/if}}", &data) |
| .unwrap(), |
| "Failed" |
| ); |
| |
| assert_eq!( |
| hbs.render_template("{{#if (not (gt a c))}}Success{{else}}Failed{{/if}}", &data) |
| .unwrap(), |
| "Success" |
| ); |
| |
| assert_eq!( |
| hbs.render_template("{{#if (not (gt a b))}}Success{{else}}Failed{{/if}}", &data) |
| .unwrap(), |
| "Failed" |
| ); |
| |
| // no argument provided for not |
| assert_eq!( |
| hbs.render_template("{{#if (not)}}Success{{else}}Failed{{/if}}", &data) |
| .unwrap(), |
| "Failed" |
| ); |
| |
| // json literal |
| assert_eq!( |
| hbs.render_template("{{#if (not true)}}Success{{else}}Failed{{/if}}", &data) |
| .unwrap(), |
| "Failed" |
| ); |
| assert_eq!( |
| hbs.render_template("{{#if (not false)}}Success{{else}}Failed{{/if}}", &data) |
| .unwrap(), |
| "Success" |
| ); |
| } |