diff options
-rw-r--r-- | testing/templates/if-let-else.html | 7 | ||||
-rw-r--r-- | testing/templates/if-let-shadowing.html | 1 | ||||
-rw-r--r-- | testing/templates/if-let-struct.html | 1 | ||||
-rw-r--r-- | testing/templates/if-let.html | 1 | ||||
-rw-r--r-- | testing/tests/if_let.rs | 109 |
5 files changed, 119 insertions, 0 deletions
diff --git a/testing/templates/if-let-else.html b/testing/templates/if-let-else.html new file mode 100644 index 0000000..e6b43ca --- /dev/null +++ b/testing/templates/if-let-else.html @@ -0,0 +1,7 @@ +{%- if !cond -%} + !cond +{%- else if let Ok(ok) = value -%} + {{ ok }} +{%- else if let Err(err) = value -%} + {{ err }} +{%- endif -%} diff --git a/testing/templates/if-let-shadowing.html b/testing/templates/if-let-shadowing.html new file mode 100644 index 0000000..7f3d50f --- /dev/null +++ b/testing/templates/if-let-shadowing.html @@ -0,0 +1 @@ +{% if let Some(text) = text %}{{ text }}{% endif %} diff --git a/testing/templates/if-let-struct.html b/testing/templates/if-let-struct.html new file mode 100644 index 0000000..53232f7 --- /dev/null +++ b/testing/templates/if-let-struct.html @@ -0,0 +1 @@ +{% if let Digits { one, two, three } = digits %}{{ one }} {{ two }} {{ three }}{% endif %} diff --git a/testing/templates/if-let.html b/testing/templates/if-let.html new file mode 100644 index 0000000..ff4006f --- /dev/null +++ b/testing/templates/if-let.html @@ -0,0 +1 @@ +{% if let Some(some_text) = text %}{{ some_text }}{% endif %} diff --git a/testing/tests/if_let.rs b/testing/tests/if_let.rs new file mode 100644 index 0000000..3e4e2b5 --- /dev/null +++ b/testing/tests/if_let.rs @@ -0,0 +1,109 @@ +use askama::Template; + +#[derive(Template)] +#[template(path = "if-let.html")] +struct IfLetTemplate { + text: Option<&'static str>, +} + +#[test] +fn test_if_let() { + let s = IfLetTemplate { + text: Some("hello"), + }; + assert_eq!(s.render().unwrap(), "hello"); + + let t = IfLetTemplate { text: None }; + assert_eq!(t.render().unwrap(), ""); +} + +#[derive(Template)] +#[template(path = "if-let-shadowing.html")] +struct IfLetShadowingTemplate { + text: Option<&'static str>, +} + +#[test] +fn test_if_let_shadowing() { + let s = IfLetShadowingTemplate { + text: Some("hello"), + }; + assert_eq!(s.render().unwrap(), "hello"); + + let t = IfLetShadowingTemplate { text: None }; + assert_eq!(t.render().unwrap(), ""); +} + +struct Digits { + one: i32, + two: i32, + three: i32, +} + +#[derive(Template)] +#[template(path = "if-let-struct.html")] +struct IfLetStruct { + digits: Digits, +} + +#[test] +fn test_if_let_struct() { + let digits = Digits { + one: 1, + two: 2, + three: 3, + }; + let s = IfLetStruct { digits }; + assert_eq!(s.render().unwrap(), "1 2 3"); +} + +#[derive(Template)] +#[template(path = "if-let-struct.html")] +struct IfLetStructRef<'a> { + digits: &'a Digits, +} + +#[test] +fn test_if_let_struct_ref() { + let digits = Digits { + one: 1, + two: 2, + three: 3, + }; + let s = IfLetStructRef { digits: &digits }; + assert_eq!(s.render().unwrap(), "1 2 3"); +} + +#[derive(Template)] +#[template(path = "if-let-else.html")] +struct IfLetElse { + cond: bool, + value: Result<i32, &'static str>, +} + +#[test] +fn test_if_let_else() { + let s = IfLetElse { + cond: false, + value: Ok(4711), + }; + assert_eq!(s.render().unwrap(), "!cond"); + + let s = IfLetElse { + cond: true, + value: Ok(4711), + }; + assert_eq!(s.render().unwrap(), "4711"); + + let s = IfLetElse { + cond: false, + value: Err("fail"), + }; + assert_eq!(s.render().unwrap(), "!cond"); + + let s = IfLetElse { + cond: true, + value: Err("fail"), + }; + assert_eq!(s.render().unwrap(), "fail"); +} |