askama/testing/tests/compound-assignment.rs

170 lines
3.3 KiB
Rust

use std::cell::Cell;
use askama::Template;
#[test]
fn test_prefixsum() {
#[derive(Template)]
#[template(
ext = "txt",
source = "
{%- let mut prefixsum = 0 -%}
{%- for i in 0..limit -%}
{%- mut prefixsum += i -%}
{{ prefixsum }}.
{%- endfor -%}
"
)]
struct PrefixSum {
limit: u32,
}
assert_eq!(
PrefixSum { limit: 10 }.render().unwrap(),
"0.1.3.6.10.15.21.28.36.45."
);
}
#[test]
fn test_expr_on_lhs() {
#[derive(Template)]
#[template(
ext = "txt",
source = "
{%- let mut prefixsum = Cell::new(0u32) -%}
{%- for i in 0..limit -%}
{%- mut *prefixsum.get_mut() += i -%}
{{ prefixsum.get() }}.
{%- endfor -%}
"
)]
struct PrefixSum {
limit: u32,
}
assert_eq!(
PrefixSum { limit: 10 }.render().unwrap(),
"0.1.3.6.10.15.21.28.36.45."
);
}
#[test]
fn test_add() {
#[derive(Template)]
#[template(
ext = "txt",
source = "{% let mut value = 9 %} {%- mut value += 2 -%} {{ value }}"
)]
struct Test;
assert_eq!(Test.render().unwrap(), "11");
}
#[test]
fn test_sub() {
#[derive(Template)]
#[template(
ext = "txt",
source = "{% let mut value = 9 %} {%- mut value -= 2 -%} {{ value }}"
)]
struct Test;
assert_eq!(Test.render().unwrap(), "7");
}
#[test]
fn test_mul() {
#[derive(Template)]
#[template(
ext = "txt",
source = "{% let mut value = 9 %} {%- mut value *= 2 -%} {{ value }}"
)]
struct Test;
assert_eq!(Test.render().unwrap(), "18");
}
#[test]
fn test_div() {
#[derive(Template)]
#[template(
ext = "txt",
source = "{% let mut value = 9 %} {%- mut value /= 2 -%} {{ value }}"
)]
struct Test;
assert_eq!(Test.render().unwrap(), "4");
}
#[test]
fn test_rem() {
#[derive(Template)]
#[template(
ext = "txt",
source = "{% let mut value = 9 %} {%- mut value %= 2 -%} {{ value }}"
)]
struct Test;
assert_eq!(Test.render().unwrap(), "1");
}
#[test]
fn test_and() {
#[derive(Template)]
#[template(
ext = "txt",
source = "{% let mut value = 9 %} {%- mut value &= 3 -%} {{ value }}"
)]
struct Test;
assert_eq!(Test.render().unwrap(), "1");
}
#[test]
fn test_or() {
#[derive(Template)]
#[template(
ext = "txt",
source = "{% let mut value = 9 %} {%- mut value |= 3 -%} {{ value }}"
)]
struct Test;
assert_eq!(Test.render().unwrap(), "11");
}
#[test]
fn test_xor() {
#[derive(Template)]
#[template(
ext = "txt",
source = "{% let mut value = 9 %} {%- mut value ^= 3 -%} {{ value }}"
)]
struct Test;
assert_eq!(Test.render().unwrap(), "10");
}
#[test]
fn test_shl() {
#[derive(Template)]
#[template(
ext = "txt",
source = "{% let mut value = 9 %} {%- mut value <<= 2 -%} {{ value }}"
)]
struct Test;
assert_eq!(Test.render().unwrap(), "36");
}
#[test]
fn test_shr() {
#[derive(Template)]
#[template(
ext = "txt",
source = "{% let mut value = 9 %} {%- mut value >>= 2 -%} {{ value }}"
)]
struct Test;
assert_eq!(Test.render().unwrap(), "2");
}