Files
mikusays-c/tests/integration_tests.rs
T
xxanqw 175a320d84 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.
2025-11-26 13:52:24 +02:00

56 lines
1.6 KiB
Rust

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());
}