/// Adjectives for the name generator.
/// Mix of moods: whimsical, bold, calm, funny, technical.
/// Keeps generated names interesting and memorable.
pub const ADJECTIVES: &[&str] = &[
    // Texture & physical
    "bright",
    "burnished",
    "crisp",
    "dappled",
    "dusty",
    "flaky",
    "frosted",
    "fuzzy",
    "gilded",
    "glossy",
    "gnarled",
    "hazy",
    "jagged",
    "knobby",
    "lush",
    "mossy",
    "polished",
    "prickly",
    "rough",
    "rusty",
    "silky",
    "smooth",
    "speckled",
    "tangled",
    "thorny",
    "velvety",
    "weathered",
    "woven",
    // Mood & personality
    "bold",
    "brash",
    "brazen",
    "calm",
    "cheerful",
    "clever",
    "cozy",
    "daring",
    "defiant",
    "eager",
    "fierce",
    "gentle",
    "giddy",
    "grumpy",
    "hardy",
    "hasty",
    "jolly",
    "keen",
    "lazy",
    "lively",
    "mellow",
    "merry",
    "mighty",
    "noble",
    "patient",
    "plucky",
    "proud",
    "quiet",
    "rowdy",
    "serene",
    "shy",
    "sleepy",
    "smug",
    "snappy",
    "solemn",
    "steady",
    "stoic",
    "stubborn",
    "sulky",
    "swift",
    "tender",
    "timid",
    "vivid",
    "wandering",
    "wary",
    "wild",
    "wistful",
    "witty",
    "zealous",
    // Scale & intensity
    "ancient",
    "bitter",
    "brisk",
    "colossal",
    "dim",
    "electric",
    "faint",
    "fleeting",
    "grand",
    "hushed",
    "little",
    "luminous",
    "massive",
    "miniature",
    "radiant",
    "roaring",
    "secret",
    "shadowy",
    "silent",
    "slender",
    "smoldering",
    "stark",
    "subtle",
    "tiny",
    "towering",
    "twilight",
    "vast",
    // Color-adjacent
    "ashen",
    "azure",
    "copper",
    "crimson",
    "emerald",
    "golden",
    "ivory",
    "midnight",
    "scarlet",
    "silver",
    // Whimsy & weirdness
    "cosmic",
    "crooked",
    "feral",
    "forgotten",
    "ghostly",
    "hollow",
    "lost",
    "muddy",
    "phantom",
    "restless",
    "rickety",
    "soggy",
    "tattered",
    "twisted",
    "unlikely",
    "unruly",
    "wobbly",
];

#[cfg(test)]
mod tests {
    use super::*;
    use std::collections::HashSet;

    #[test]
    fn no_duplicate_adjectives() {
        let mut seen = HashSet::new();
        for adj in ADJECTIVES {
            assert!(seen.insert(adj), "Duplicate adjective: {adj}");
        }
    }

    #[test]
    fn adjective_count() {
        assert!(
            ADJECTIVES.len() >= 100,
            "Expected at least 100 adjectives, got {}",
            ADJECTIVES.len()
        );
    }
}
