garbage-code-hunter 0.2.2

A humorous Rust code quality detector that roasts your garbage code
Documentation
use garbage_code_hunter::i18n::I18n;

#[test]
fn test_i18n_chinese_messages() {
    let i18n = I18n::new("zh-CN");

    assert_eq!(i18n.get("title"), "πŸ—‘οΈ  εžƒεœΎδ»£η ηŒŽδΊΊ πŸ—‘οΈ");
    assert_eq!(i18n.get("preparing"), "ζ­£εœ¨ε‡†ε€‡εζ§½δ½ ηš„δ»£η ...");
    assert_eq!(
        i18n.get("clean_code"),
        "πŸŽ‰ ε“‡οΌδ½ ηš„δ»£η ε±…η„Άζ²‘ζœ‰ζ˜Žζ˜Ύηš„εžƒεœΎοΌ"
    );
}

#[test]
fn test_i18n_english_messages() {
    let i18n = I18n::new("en-US");

    assert_eq!(i18n.get("title"), "πŸ—‘οΈ  Garbage Code Hunter πŸ—‘οΈ");
    assert_eq!(i18n.get("preparing"), "Preparing to roast your code...");
    assert_eq!(
        i18n.get("clean_code"),
        "πŸŽ‰ Wow! Your code doesn't have obvious garbage!"
    );
}

#[test]
fn test_i18n_fallback_to_english() {
    let i18n = I18n::new("fr-FR"); // Unsupported language

    // Should fallback to English
    assert_eq!(i18n.get("title"), "πŸ—‘οΈ  Garbage Code Hunter πŸ—‘οΈ");
    assert_eq!(i18n.get("preparing"), "Preparing to roast your code...");
}

#[test]
fn test_i18n_missing_key() {
    let i18n = I18n::new("en-US");

    let result = i18n.get("nonexistent_key");
    assert!(result.contains("Missing translation"));
}

#[test]
fn test_roast_messages_chinese() {
    let i18n = I18n::new("zh-CN");

    let messages = i18n.get_roast_messages("terrible-naming");
    assert!(
        !messages.is_empty(),
        "Should have roast messages for terrible naming"
    );
    assert!(
        messages[0].contains("ε˜ι‡ε"),
        "Chinese messages should contain Chinese text"
    );

    let unwrap_messages = i18n.get_roast_messages("unwrap-abuse");
    assert!(
        !unwrap_messages.is_empty(),
        "Should have roast messages for unwrap abuse"
    );
    assert!(
        unwrap_messages[0].contains("unwrap"),
        "Should mention unwrap"
    );
}

#[test]
fn test_roast_messages_english() {
    let i18n = I18n::new("en-US");

    let messages = i18n.get_roast_messages("terrible-naming");
    assert!(
        !messages.is_empty(),
        "Should have roast messages for terrible naming"
    );
    assert!(
        messages[0].contains("variable"),
        "English messages should contain English text"
    );

    let unwrap_messages = i18n.get_roast_messages("unwrap-abuse");
    assert!(
        !unwrap_messages.is_empty(),
        "Should have roast messages for unwrap abuse"
    );
    assert!(
        unwrap_messages[0].contains("unwrap"),
        "Should mention unwrap"
    );
}