aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--testing/templates/if-let-else.html7
-rw-r--r--testing/templates/if-let-shadowing.html1
-rw-r--r--testing/templates/if-let-struct.html1
-rw-r--r--testing/templates/if-let.html1
-rw-r--r--testing/tests/if_let.rs109
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");
+}