use super::*; use insta::assert_yaml_snapshot; #[test] fn test_rose_pine_inspired_dark() { let inputs = ThemeInputs { background: "191724".to_string(), text: "e0def4".to_string(), primary: "c4a7e7".to_string(), link: "ebbcba".to_string(), }; let palette = generate_palette(&inputs, ThemeVariant::Dark).unwrap(); assert_yaml_snapshot!("rose_pine_inspired_dark", palette); } #[test] fn test_rose_pine_dawn_inspired_light() { let inputs = ThemeInputs { background: "faf4ed".to_string(), text: "1f1d2e".to_string(), primary: "907aa9".to_string(), link: "d7827e".to_string(), }; let palette = generate_palette(&inputs, ThemeVariant::Light).unwrap(); assert_yaml_snapshot!("rose_pine_dawn_inspired_light", palette); } #[test] fn test_custom_blue_dark() { let inputs = ThemeInputs { background: "0a1628".to_string(), text: "e2e8f0".to_string(), primary: "3b82f6".to_string(), link: "60a5fa".to_string(), }; let palette = generate_palette(&inputs, ThemeVariant::Dark).unwrap(); assert_yaml_snapshot!("custom_blue_dark", palette); } #[test] fn test_custom_green_light() { let inputs = ThemeInputs { background: "f0fdf4".to_string(), text: "1a2e1a".to_string(), primary: "22c55e".to_string(), link: "16a34a".to_string(), }; let palette = generate_palette(&inputs, ThemeVariant::Light).unwrap(); assert_yaml_snapshot!("custom_green_light", palette); } #[test] fn test_auto_variant_detection() { assert_eq!(detect_variant("191724").unwrap(), ThemeVariant::Dark); assert_eq!(detect_variant("faf4ed").unwrap(), ThemeVariant::Light); assert_eq!(detect_variant("000000").unwrap(), ThemeVariant::Dark); assert_eq!(detect_variant("ffffff").unwrap(), ThemeVariant::Light); } #[test] fn test_counterpart_generation() { let inputs = ThemeInputs { background: "191724".to_string(), text: "e0def4".to_string(), primary: "c4a7e7".to_string(), link: "ebbcba".to_string(), }; let counterpart = generate_counterpart_palette(&inputs, ThemeVariant::Dark).unwrap(); assert_yaml_snapshot!("rose_pine_counterpart_light", counterpart); } #[test] fn test_hex_roundtrip() { let original = "c4a7e7"; let oklch = css_to_oklch(original).unwrap(); let back = oklch_to_hex(oklch); assert_eq!(back.to_lowercase(), original.to_lowercase()); } #[test] fn test_css_colour_formats() { let formats = [ "#ff0000", "ff0000", "rgb(255, 0, 0)", "rgba(255, 0, 0, 1)", "hsl(0, 100%, 50%)", "red", ]; for format in formats { let oklch = css_to_oklch(format); assert!(oklch.is_ok(), "Failed to parse: {}", format); let hex = oklch_to_hex(oklch.unwrap()); assert_eq!(hex, "FF0000", "Wrong output for: {}", format); } } #[test] fn test_oklch_input() { let oklch = css_to_oklch("oklch(0.7 0.15 30)").unwrap(); assert!((oklch.l - 0.7).abs() < 0.01); assert!((oklch.chroma - 0.15).abs() < 0.01); }