at main 109 lines 3.1 kB view raw
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}