aboutsummaryrefslogtreecommitdiffstats
path: root/testing
diff options
context:
space:
mode:
Diffstat (limited to 'testing')
-rw-r--r--testing/templates/match-custom-enum.html8
-rw-r--r--testing/tests/matches.rs19
2 files changed, 27 insertions, 0 deletions
diff --git a/testing/templates/match-custom-enum.html b/testing/templates/match-custom-enum.html
new file mode 100644
index 0000000..cb45b8f
--- /dev/null
+++ b/testing/templates/match-custom-enum.html
@@ -0,0 +1,8 @@
+{% match color %}
+{% when Color::Rgb with (r, g, b) %}
+Colorful: #{{ "{:02X}"|format(r) }}{{ "{:02X}"|format(g) }}{{ "{:02X}"|format(b) }}
+{% when Color::GrayScale with (val) %}
+Gray: #{{ "{:02X}"|format(val) }}{{ "{:02X}"|format(val) }}{{ "{:02X}"|format(val) }}
+{% else %}
+CMYK not supported
+{% endmatch %}
diff --git a/testing/tests/matches.rs b/testing/tests/matches.rs
index b8a6c98..86d32be 100644
--- a/testing/tests/matches.rs
+++ b/testing/tests/matches.rs
@@ -63,3 +63,22 @@ fn test_match_literal_num() {
let s = MatchLitNumTemplate { item: 23 };
assert_eq!(s.render().unwrap(), "\n\nElse found 23\n");
}
+
+#[allow(dead_code)]
+enum Color {
+ Rgb(u32, u32, u32),
+ GrayScale(u32),
+ Cmyk(u32, u32, u32, u32)
+}
+
+#[derive(Template)]
+#[template(path = "match-custom-enum.html")]
+struct MatchCustomEnumTemplate {
+ color: Color,
+}
+
+#[test]
+fn test_match_custom_enum() {
+ let s = MatchCustomEnumTemplate { color: Color::Rgb(160, 0, 255) };
+ assert_eq!(s.render().unwrap(), "\n\nColorful: #A000FF\n");
+}