diff options
Diffstat (limited to '')
-rw-r--r-- | testing/tests/loops.rs | 45 | ||||
-rw-r--r-- | testing/tests/ui/loop_cycle_wrong_argument_count.rs | 13 | ||||
-rw-r--r-- | testing/tests/ui/loop_cycle_wrong_argument_count.stderr | 7 |
3 files changed, 65 insertions, 0 deletions
diff --git a/testing/tests/loops.rs b/testing/tests/loops.rs index 49c37e0..f014068 100644 --- a/testing/tests/loops.rs +++ b/testing/tests/loops.rs @@ -372,3 +372,48 @@ fn test_loop_break_continue() { }; assert_eq!(t.render().unwrap(), "x1yx2yx3yx11x4yx5y"); } + +#[derive(Template)] +#[template( + source = r#"{% for v in values %}{{loop.cycle(["r", "g", "b"])}}{{v}},{% endfor %}"#, + ext = "txt" +)] +struct ForCycle<'a> { + values: &'a [u8], +} + +#[test] +fn test_for_cycle() { + let t = ForCycle { + values: &[1, 2, 3, 4, 5, 6, 7, 8, 9], + }; + assert_eq!(t.render().unwrap(), "r1,g2,b3,r4,g5,b6,r7,g8,b9,"); +} + +#[derive(Template)] +#[template( + source = r#"{% for v in values %}{{loop.cycle(cycle)}}{{v}},{% endfor %}"#, + ext = "txt" +)] +struct ForCycleDynamic<'a> { + values: &'a [u8], + cycle: &'a [char], +} + +#[test] +fn test_for_cycle_dynamic() { + let t = ForCycleDynamic { + values: &[1, 2, 3, 4, 5, 6, 7, 8, 9], + cycle: &['a', 'b', 'c', 'd'], + }; + assert_eq!(t.render().unwrap(), "a1,b2,c3,d4,a5,b6,c7,d8,a9,"); +} + +#[test] +fn test_for_cycle_empty() { + let t = ForCycleDynamic { + values: &[1, 2, 3, 4, 5, 6, 7, 8, 9], + cycle: &[], + }; + assert!(t.render().is_err()) +} diff --git a/testing/tests/ui/loop_cycle_wrong_argument_count.rs b/testing/tests/ui/loop_cycle_wrong_argument_count.rs new file mode 100644 index 0000000..e87f4f4 --- /dev/null +++ b/testing/tests/ui/loop_cycle_wrong_argument_count.rs @@ -0,0 +1,13 @@ +use askama::Template; + +#[derive(Template)] +#[template( + source = r#"{% for v in values %}{{ loop.cycle("r", "g", "b") }}{{ v }},{% endfor %}"#, + ext = "txt" +)] +struct ForCycle<'a> { + values: &'a [u8], +} + +fn main() { +} diff --git a/testing/tests/ui/loop_cycle_wrong_argument_count.stderr b/testing/tests/ui/loop_cycle_wrong_argument_count.stderr new file mode 100644 index 0000000..acf3bb1 --- /dev/null +++ b/testing/tests/ui/loop_cycle_wrong_argument_count.stderr @@ -0,0 +1,7 @@ +error: loop.cycle(…) expects exactly one argument + --> $DIR/loop_cycle_wrong_argument_count.rs:3:10 + | +3 | #[derive(Template)] + | ^^^^^^^^ + | + = note: this error originates in the derive macro `Template` (in Nightly builds, run with -Z macro-backtrace for more info) |