mirror of
https://github.com/askama-rs/askama.git
synced 2025-09-30 06:21:13 +00:00
Add "if let" tests
This commit is contained in:
parent
06d2eee4a0
commit
83b03cd485
7
testing/templates/if-let-else.html
Normal file
7
testing/templates/if-let-else.html
Normal file
@ -0,0 +1,7 @@
|
||||
{%- if !cond -%}
|
||||
!cond
|
||||
{%- else if let Ok(ok) = value -%}
|
||||
{{ ok }}
|
||||
{%- else if let Err(err) = value -%}
|
||||
{{ err }}
|
||||
{%- endif -%}
|
1
testing/templates/if-let-shadowing.html
Normal file
1
testing/templates/if-let-shadowing.html
Normal file
@ -0,0 +1 @@
|
||||
{% if let Some(text) = text %}{{ text }}{% endif %}
|
1
testing/templates/if-let-struct.html
Normal file
1
testing/templates/if-let-struct.html
Normal file
@ -0,0 +1 @@
|
||||
{% if let Digits { one, two, three } = digits %}{{ one }} {{ two }} {{ three }}{% endif %}
|
1
testing/templates/if-let.html
Normal file
1
testing/templates/if-let.html
Normal file
@ -0,0 +1 @@
|
||||
{% if let Some(some_text) = text %}{{ some_text }}{% endif %}
|
109
testing/tests/if_let.rs
Normal file
109
testing/tests/if_let.rs
Normal file
@ -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");
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user