#[cfg(test)]
mod tests {
use crate::draw_loop::{copy_to_clipboard, get_muxbox_content_for_clipboard};
use crate::tests::test_utils::TestDataFactory;
#[test]
fn test_get_muxbox_content_output_priority() {
let mut muxbox = TestDataFactory::create_test_muxbox("test_muxbox");
muxbox.content = Some("Static content".to_string());
muxbox.output = "Dynamic output".to_string();
let clipboard_content = get_muxbox_content_for_clipboard(&muxbox);
assert_eq!(
clipboard_content, "Dynamic output",
"MuxBox output should take priority over static content"
);
}
#[test]
fn test_get_muxbox_content_static_content() {
let mut muxbox = TestDataFactory::create_test_muxbox("test_muxbox");
muxbox.content = Some("Static muxbox content".to_string());
muxbox.output = "".to_string();
let clipboard_content = get_muxbox_content_for_clipboard(&muxbox);
assert_eq!(
clipboard_content, "Static muxbox content",
"Should use static content when output is empty"
);
}
#[test]
fn test_get_muxbox_content_no_content() {
let mut muxbox = TestDataFactory::create_test_muxbox("empty_muxbox");
muxbox.content = None;
muxbox.output = "".to_string();
let clipboard_content = get_muxbox_content_for_clipboard(&muxbox);
assert_eq!(
clipboard_content, "MuxBox 'empty_muxbox': No content",
"Should provide informative message for empty muxboxes"
);
}
#[test]
fn test_get_muxbox_content_multiline() {
let mut muxbox = TestDataFactory::create_test_muxbox("multiline_muxbox");
muxbox.output = "Line 1\nLine 2\nLine 3".to_string();
let clipboard_content = get_muxbox_content_for_clipboard(&muxbox);
assert_eq!(
clipboard_content, "Line 1\nLine 2\nLine 3",
"Should preserve multiline content exactly"
);
}
#[test]
fn test_copy_to_clipboard_basic() {
let test_content = "Test clipboard content";
let result = copy_to_clipboard(test_content);
match result {
Ok(_) => {
assert!(true, "Clipboard copy should not crash");
}
Err(_) => {
assert!(true, "Clipboard copy gracefully handles missing utilities");
}
}
}
#[test]
fn test_copy_to_clipboard_empty_content() {
let empty_content = "";
let result = copy_to_clipboard(empty_content);
match result {
Ok(_) => assert!(true, "Should handle empty content"),
Err(_) => assert!(true, "Gracefully handles clipboard errors"),
}
}
#[test]
fn test_copy_to_clipboard_large_content() {
let large_content = "A".repeat(10000);
let result = copy_to_clipboard(&large_content);
match result {
Ok(_) => assert!(true, "Should handle large content"),
Err(_) => assert!(true, "Gracefully handles clipboard errors"),
}
}
#[test]
fn test_copy_to_clipboard_special_characters() {
let special_content = "Special chars: !@#$%^&*()_+{}|:<>?[]\\;'\",./ \n\t\r";
let result = copy_to_clipboard(special_content);
match result {
Ok(_) => assert!(true, "Should handle special characters"),
Err(_) => assert!(true, "Gracefully handles clipboard errors"),
}
}
}