Skip to content
This repository was archived by the owner on Mar 11, 2025. It is now read-only.

Commit 83b03cd

Browse files
Kijewskidjc
authored andcommitted
Add "if let" tests
1 parent 06d2eee commit 83b03cd

File tree

5 files changed

+119
-0
lines changed

5 files changed

+119
-0
lines changed

testing/templates/if-let-else.html

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
{%- if !cond -%}
2+
!cond
3+
{%- else if let Ok(ok) = value -%}
4+
{{ ok }}
5+
{%- else if let Err(err) = value -%}
6+
{{ err }}
7+
{%- endif -%}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{% if let Some(text) = text %}{{ text }}{% endif %}

testing/templates/if-let-struct.html

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{% if let Digits { one, two, three } = digits %}{{ one }} {{ two }} {{ three }}{% endif %}

testing/templates/if-let.html

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{% if let Some(some_text) = text %}{{ some_text }}{% endif %}

testing/tests/if_let.rs

Lines changed: 109 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,109 @@
1+
use askama::Template;
2+
3+
#[derive(Template)]
4+
#[template(path = "if-let.html")]
5+
struct IfLetTemplate {
6+
text: Option<&'static str>,
7+
}
8+
9+
#[test]
10+
fn test_if_let() {
11+
let s = IfLetTemplate {
12+
text: Some("hello"),
13+
};
14+
assert_eq!(s.render().unwrap(), "hello");
15+
16+
let t = IfLetTemplate { text: None };
17+
assert_eq!(t.render().unwrap(), "");
18+
}
19+
20+
#[derive(Template)]
21+
#[template(path = "if-let-shadowing.html")]
22+
struct IfLetShadowingTemplate {
23+
text: Option<&'static str>,
24+
}
25+
26+
#[test]
27+
fn test_if_let_shadowing() {
28+
let s = IfLetShadowingTemplate {
29+
text: Some("hello"),
30+
};
31+
assert_eq!(s.render().unwrap(), "hello");
32+
33+
let t = IfLetShadowingTemplate { text: None };
34+
assert_eq!(t.render().unwrap(), "");
35+
}
36+
37+
struct Digits {
38+
one: i32,
39+
two: i32,
40+
three: i32,
41+
}
42+
43+
#[derive(Template)]
44+
#[template(path = "if-let-struct.html")]
45+
struct IfLetStruct {
46+
digits: Digits,
47+
}
48+
49+
#[test]
50+
fn test_if_let_struct() {
51+
let digits = Digits {
52+
one: 1,
53+
two: 2,
54+
three: 3,
55+
};
56+
let s = IfLetStruct { digits };
57+
assert_eq!(s.render().unwrap(), "1 2 3");
58+
}
59+
60+
#[derive(Template)]
61+
#[template(path = "if-let-struct.html")]
62+
struct IfLetStructRef<'a> {
63+
digits: &'a Digits,
64+
}
65+
66+
#[test]
67+
fn test_if_let_struct_ref() {
68+
let digits = Digits {
69+
one: 1,
70+
two: 2,
71+
three: 3,
72+
};
73+
let s = IfLetStructRef { digits: &digits };
74+
assert_eq!(s.render().unwrap(), "1 2 3");
75+
}
76+
77+
#[derive(Template)]
78+
#[template(path = "if-let-else.html")]
79+
struct IfLetElse {
80+
cond: bool,
81+
value: Result<i32, &'static str>,
82+
}
83+
84+
#[test]
85+
fn test_if_let_else() {
86+
let s = IfLetElse {
87+
cond: false,
88+
value: Ok(4711),
89+
};
90+
assert_eq!(s.render().unwrap(), "!cond");
91+
92+
let s = IfLetElse {
93+
cond: true,
94+
value: Ok(4711),
95+
};
96+
assert_eq!(s.render().unwrap(), "4711");
97+
98+
let s = IfLetElse {
99+
cond: false,
100+
value: Err("fail"),
101+
};
102+
assert_eq!(s.render().unwrap(), "!cond");
103+
104+
let s = IfLetElse {
105+
cond: true,
106+
value: Err("fail"),
107+
};
108+
assert_eq!(s.render().unwrap(), "fail");
109+
}

0 commit comments

Comments
 (0)