atproto blogging
1use super::*;
2use insta::assert_yaml_snapshot;
3
4#[test]
5fn test_rose_pine_inspired_dark() {
6 let inputs = ThemeInputs {
7 background: "191724".to_string(),
8 text: "e0def4".to_string(),
9 primary: "c4a7e7".to_string(),
10 link: "ebbcba".to_string(),
11 };
12
13 let palette = generate_palette(&inputs, ThemeVariant::Dark).unwrap();
14 assert_yaml_snapshot!("rose_pine_inspired_dark", palette);
15}
16
17#[test]
18fn test_rose_pine_dawn_inspired_light() {
19 let inputs = ThemeInputs {
20 background: "faf4ed".to_string(),
21 text: "1f1d2e".to_string(),
22 primary: "907aa9".to_string(),
23 link: "d7827e".to_string(),
24 };
25
26 let palette = generate_palette(&inputs, ThemeVariant::Light).unwrap();
27 assert_yaml_snapshot!("rose_pine_dawn_inspired_light", palette);
28}
29
30#[test]
31fn test_custom_blue_dark() {
32 let inputs = ThemeInputs {
33 background: "0a1628".to_string(),
34 text: "e2e8f0".to_string(),
35 primary: "3b82f6".to_string(),
36 link: "60a5fa".to_string(),
37 };
38
39 let palette = generate_palette(&inputs, ThemeVariant::Dark).unwrap();
40 assert_yaml_snapshot!("custom_blue_dark", palette);
41}
42
43#[test]
44fn test_custom_green_light() {
45 let inputs = ThemeInputs {
46 background: "f0fdf4".to_string(),
47 text: "1a2e1a".to_string(),
48 primary: "22c55e".to_string(),
49 link: "16a34a".to_string(),
50 };
51
52 let palette = generate_palette(&inputs, ThemeVariant::Light).unwrap();
53 assert_yaml_snapshot!("custom_green_light", palette);
54}
55
56#[test]
57fn test_auto_variant_detection() {
58 assert_eq!(detect_variant("191724").unwrap(), ThemeVariant::Dark);
59 assert_eq!(detect_variant("faf4ed").unwrap(), ThemeVariant::Light);
60 assert_eq!(detect_variant("000000").unwrap(), ThemeVariant::Dark);
61 assert_eq!(detect_variant("ffffff").unwrap(), ThemeVariant::Light);
62}
63
64#[test]
65fn test_counterpart_generation() {
66 let inputs = ThemeInputs {
67 background: "191724".to_string(),
68 text: "e0def4".to_string(),
69 primary: "c4a7e7".to_string(),
70 link: "ebbcba".to_string(),
71 };
72
73 let counterpart = generate_counterpart_palette(&inputs, ThemeVariant::Dark).unwrap();
74 assert_yaml_snapshot!("rose_pine_counterpart_light", counterpart);
75}
76
77#[test]
78fn test_hex_roundtrip() {
79 let original = "c4a7e7";
80 let oklch = css_to_oklch(original).unwrap();
81 let back = oklch_to_hex(oklch);
82 assert_eq!(back.to_lowercase(), original.to_lowercase());
83}
84
85#[test]
86fn test_css_colour_formats() {
87 let formats = [
88 "#ff0000",
89 "ff0000",
90 "rgb(255, 0, 0)",
91 "rgba(255, 0, 0, 1)",
92 "hsl(0, 100%, 50%)",
93 "red",
94 ];
95
96 for format in formats {
97 let oklch = css_to_oklch(format);
98 assert!(oklch.is_ok(), "Failed to parse: {}", format);
99 let hex = oklch_to_hex(oklch.unwrap());
100 assert_eq!(hex, "FF0000", "Wrong output for: {}", format);
101 }
102}
103
104#[test]
105fn test_oklch_input() {
106 let oklch = css_to_oklch("oklch(0.7 0.15 30)").unwrap();
107 assert!((oklch.l - 0.7).abs() < 0.01);
108 assert!((oklch.chroma - 0.15).abs() < 0.01);
109}