From 175a320d84197896c5b6e038c0d67bbaa84baff0 Mon Sep 17 00:00:00 2001 From: xxanqw Date: Wed, 26 Nov 2025 13:52:24 +0200 Subject: Add color handling and CLI integration tests - Implemented a comprehensive color module in `src/color.rs` that supports named colors, hex, RGB, HSL, ANSI, and truecolor formats. - Added parsing functions for different color formats with error handling. - Introduced conversion methods for colors to RGB and ANSI escape codes. - Created a `ColorMode` enum to detect terminal color capabilities. - Added linear interpolation for colors in HSV space. - Developed integration tests in `tests/integration_tests.rs` to verify CLI functionality, including listing styles and error handling for missing or conflicting arguments. --- tests/integration_tests.rs | 55 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 tests/integration_tests.rs (limited to 'tests/integration_tests.rs') diff --git a/tests/integration_tests.rs b/tests/integration_tests.rs new file mode 100644 index 0000000..c589db0 --- /dev/null +++ b/tests/integration_tests.rs @@ -0,0 +1,55 @@ +use std::process::Command; +use std::str; + +#[test] +fn test_cli_list_styles() { + let output = Command::new("target/debug/mikusays") + .arg("--list") + .output() + .expect("Failed to execute command"); + + assert!(output.status.success()); + let stdout = str::from_utf8(&output.stdout).expect("Invalid UTF-8"); + + // Should contain style listing information + assert!(stdout.contains("Available Miku art styles:")); + assert!(stdout.contains("Total styles:")); + assert!(stdout.contains("--- Style")); +} + +#[test] +fn test_cli_error_no_text() { + let output = Command::new("target/debug/mikusays") + .output() + .expect("Failed to execute command"); + + assert!(!output.status.success()); + let stderr = str::from_utf8(&output.stderr).expect("Invalid UTF-8"); + assert!(stderr.contains("Error: Text is required when not using --list")); +} + +#[test] +fn test_cli_error_conflicting_args() { + let output = Command::new("target/debug/mikusays") + .arg("Test") + .arg("--rainbow") + .arg("--color") + .arg("red") + .output() + .expect("Failed to execute command"); + + assert!(!output.status.success()); + let stderr = str::from_utf8(&output.stderr).expect("Invalid UTF-8"); + assert!(stderr.contains("Cannot use --rainbow and --color together")); +} + +#[test] +fn test_cli_basic_functionality() { + // Test that the binary runs and produces some output + let output = Command::new("target/debug/mikusays") + .arg("--list") + .output() + .expect("Failed to execute command"); + + assert!(output.status.success()); +} -- cgit v1.3-2-g0d8e