diff options
author | 2021-07-18 11:42:47 +0200 | |
---|---|---|
committer | 2021-11-11 10:05:34 +0100 | |
commit | cfe83bcb73b9e0cfd8a2d3151e4cab38327eabea (patch) | |
tree | a4e5b40e033b0d3cfc0d1b48298cb9f9e185d3dd /testing/tests/loops.rs | |
parent | f06022c70f2411252ad7ebb8214e0826beaefcf8 (diff) | |
download | askama-cfe83bcb73b9e0cfd8a2d3151e4cab38327eabea.tar.gz askama-cfe83bcb73b9e0cfd8a2d3151e4cab38327eabea.tar.bz2 askama-cfe83bcb73b9e0cfd8a2d3151e4cab38327eabea.zip |
Implement {{loop.cycle(…)}} similar to Jinja
Diffstat (limited to 'testing/tests/loops.rs')
-rw-r--r-- | testing/tests/loops.rs | 45 |
1 files changed, 45 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()) +} |