From 83b03cd485694483df4b435979b7a3184a208e48 Mon Sep 17 00:00:00 2001 From: René Kijewski Date: Tue, 29 Jun 2021 15:23:26 +0200 Subject: Add "if let" tests --- testing/templates/if-let-else.html | 7 ++ testing/templates/if-let-shadowing.html | 1 + testing/templates/if-let-struct.html | 1 + testing/templates/if-let.html | 1 + testing/tests/if_let.rs | 109 ++++++++++++++++++++++++++++++++ 5 files changed, 119 insertions(+) create mode 100644 testing/templates/if-let-else.html create mode 100644 testing/templates/if-let-shadowing.html create mode 100644 testing/templates/if-let-struct.html create mode 100644 testing/templates/if-let.html create mode 100644 testing/tests/if_let.rs (limited to 'testing') 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, +} + +#[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"); +} -- cgit