export type AutomatedCase = { name: string; isWoman: boolean; vocative: string; }; export type ExplicitCase = { label: string; name: string; args: [womanBool?: boolean, lastName?: boolean]; expected: string; }; export const AUTOMATED_CASES: AutomatedCase[] = [ { name: "Petr", isWoman: false, vocative: "Petře" }, { name: "Jan", isWoman: false, vocative: "Jane" }, { name: "Tomáš", isWoman: false, vocative: "Tomáši" }, { name: "Jiří", isWoman: false, vocative: "Jiří" }, { name: "Martin", isWoman: false, vocative: "Martine" }, { name: "Pavel", isWoman: false, vocative: "Pavle" }, { name: "Karel", isWoman: false, vocative: "Karle" }, { name: "Marek", isWoman: false, vocative: "Marku" }, { name: "Lukáš", isWoman: false, vocative: "Lukáši" }, { name: "Michal", isWoman: false, vocative: "Michale" }, { name: "Jana", isWoman: true, vocative: "Jano" }, { name: "Petra", isWoman: true, vocative: "Petro" }, { name: "Eva", isWoman: true, vocative: "Evo" }, { name: "Anna", isWoman: true, vocative: "Anno" }, { name: "Marie", isWoman: true, vocative: "Marie" }, { name: "Tereza", isWoman: true, vocative: "Terezo" }, { name: "Nikola", isWoman: true, vocative: "Nikolo" }, { name: "Kateřina", isWoman: true, vocative: "Kateřino" }, { name: "Lucie", isWoman: true, vocative: "Lucie" }, { name: "Veronika", isWoman: true, vocative: "Veroniko" }, { name: "Novák", isWoman: false, vocative: "Nováku" }, { name: "Svoboda", isWoman: false, vocative: "Svobodo" }, { name: "Dvořáková", isWoman: true, vocative: "Dvořáková" }, { name: "Procházková", isWoman: true, vocative: "Procházková" }, ]; export const EXPLICIT_CASES: ExplicitCase[] = [ { label: "female first name forced as last name", name: "Jana", args: [true, true], expected: "Jana", }, { label: "female first name forced as first name", name: "Jana", args: [true, false], expected: "Jano", }, { label: "female last name forced as last name", name: "Nováková", args: [true, true], expected: "Nováková", }, { label: "female first name without trailing a stays unchanged", name: "Marie", args: [true, false], expected: "Marie", }, { label: "male path ignores lastName flag", name: "Petr", args: [false, true], expected: "Petře", }, { label: "uppercase male input stays uppercase", name: "PETR", args: [], expected: "PETŘE", }, { label: "uppercase female input stays uppercase", name: "JANA", args: [], expected: "JANO", }, { label: "mixed-case male input keeps its case pattern", name: "PeTR", args: [], expected: "PeTŘE", }, ]; export const VISUAL_NAMES: string[] = [ "Petr", "Jan", "Tomáš", "Jiří", "Martin", "Pavel", "Karel", "Marek", "Lukáš", "Michal", "Radek", "Roman", "David", "Daniel", "Filip", "Adam", "Jakub", "Ondřej", "Josef", "Matěj", "Dominik", "Patrik", "Aleš", "Miloš", "Milan", "Jaroslav", "Stanislav", "Zdeněk", "Václav", "František", "Rostislav", "Bohumil", "Richard", "Vojtěch", "Hynek", "Libor", "Jaromír", "Oldřich", "Luboš", "Miroslav", "Jana", "Petra", "Eva", "Anna", "Marie", "Tereza", "Nikola", "Kateřina", "Lucie", "Veronika", "Monika", "Lenka", "Barbora", "Adéla", "Eliška", "Karolína", "Klára", "Markéta", "Hana", "Alena", "Simona", "Zuzana", "Ivana", "Martina", "Kristýna", "Natálie", "Michaela", "Gabriela", "Vendula", "Dagmar", "Jitka", "Ilona", "Renata", "Radka", "Blanka", "Pavla", "Božena", "Milada", "Vlasta", "Soňa", "Novák", "Svoboda", "Dvořák", "Černý", "Procházka", "Kučera", "Veselý", "Horák", "Němec", "Pospíšil", "Nováková", "Svobodová", "Dvořáková", "Černá", "Procházková", "Kučerová", "Veselá", "Horáková", "Němcová", "Pospíšilová", ]; if (VISUAL_NAMES.length !== 100) { throw new Error(`Expected 100 visual names, got ${VISUAL_NAMES.length}.`); }