use super::*;
#[test]
fn test_REPL_015_002_001_highlight_keywords() {
let input = "if then else fi";
let highlighted = highlight_bash(input);
assert!(highlighted.contains("\x1b[1;34mif\x1b[0m"));
assert!(highlighted.contains("\x1b[1;34mthen\x1b[0m"));
assert!(highlighted.contains("\x1b[1;34melse\x1b[0m"));
assert!(highlighted.contains("\x1b[1;34mfi\x1b[0m"));
}
#[test]
fn test_REPL_015_002_002_highlight_strings() {
let input = r#"echo "hello world" 'single'"#;
let highlighted = highlight_bash(input);
assert!(highlighted.contains("\x1b[32m\"hello world\"\x1b[0m"));
assert!(highlighted.contains("\x1b[32m'single'\x1b[0m"));
}
#[test]
fn test_REPL_015_002_003_highlight_variables() {
let input = "echo $HOME ${USER} $?";
let highlighted = highlight_bash(input);
assert!(highlighted.contains("\x1b[33m$HOME\x1b[0m"));
assert!(highlighted.contains("\x1b[33m${USER}\x1b[0m"));
assert!(highlighted.contains("\x1b[33m$?\x1b[0m"));
}
#[test]
fn test_REPL_015_002_004_highlight_commands() {
let input = "mkdir -p /tmp";
let highlighted = highlight_bash(input);
assert!(highlighted.contains("\x1b[36mmkdir\x1b[0m"));
}
#[test]
fn test_REPL_015_002_005_highlight_comments() {
let input = "echo hello # this is a comment";
let highlighted = highlight_bash(input);
assert!(highlighted.contains("\x1b[90m# this is a comment\x1b[0m"));
}
#[test]
fn test_REPL_015_002_006_highlight_operators() {
let input = "cat file | grep pattern && echo done";
let highlighted = highlight_bash(input);
assert!(highlighted.contains("\x1b[35m|\x1b[0m"));
assert!(highlighted.contains("\x1b[35m&&\x1b[0m"));
}
#[test]
fn test_REPL_015_002_007_is_keyword() {
assert!(is_keyword("if"));
assert!(is_keyword("then"));
assert!(is_keyword("while"));
assert!(is_keyword("for"));
assert!(is_keyword("do"));
assert!(is_keyword("done"));
assert!(!is_keyword("echo"));
assert!(!is_keyword("test"));
assert!(!is_keyword("hello"));
}
#[test]
fn test_REPL_015_002_INT_001_full_statement() {
let input = r#"if [ -f "$file" ]; then echo "found"; fi"#;
let highlighted = highlight_bash(input);
assert!(highlighted.contains("\x1b[1;34mif\x1b[0m"));
assert!(highlighted.contains("\x1b[1;34mthen\x1b[0m"));
assert!(highlighted.contains("\x1b[1;34mfi\x1b[0m"));
assert!(highlighted.contains("\"$file\""));
assert!(highlighted.contains("\"found\""));
assert!(highlighted.contains("\x1b[35m;\x1b[0m"));
}