@Test public void testCompatibilityWithOriginalVersion() { // see CODEC-187 // comparison: http://stevemorse.org/census/soundex.html final Map<String, String> args = new TreeMap<String, String>(); args.put("nameType", "GENERIC"); args.put("ruleType", "APPROX"); assertEquals(encode(args, true, "abram"), "Ybram|Ybrom|abram|abran|abrom|abron|avram|avrom|obram|obran|obrom|obron|ovram|ovrom"); assertEquals(encode(args, true, "Bendzin"), "bndzn|bntsn|bnzn|vndzn|vntsn"); args.put("nameType", "ASHKENAZI"); args.put("ruleType", "APPROX"); assertEquals(encode(args, true, "abram"), "Ybram|Ybrom|abram|abrom|avram|avrom|imbram|imbrom|obram|obrom|ombram|ombrom|ovram|ovrom"); assertEquals(encode(args, true, "Halpern"), "YlpYrn|Ylpirn|alpYrn|alpirn|olpYrn|olpirn|xalpirn|xolpirn"); }
assertEquals(encode(args, true, "Angelo"), "YngYlo|Yngilo|agilo|angYlo|angilo|aniilo|anilo|anxilo|anzilo|ogilo|ongYlo|ongilo|oniilo|onilo|onxilo|onzilo"); args.put("ruleType", "EXACT"); assertEquals(encode(args, true, "Angelo"), "anZelo|andZelo|angelo|anhelo|anjelo|anxelo"); assertEquals(encode(args, true, "D'Angelo"), "(anZelo|andZelo|angelo|anhelo|anjelo|anxelo)-(danZelo|dandZelo|dangelo|danhelo|danjelo|danxelo)"); args.put("languageSet", "italian,greek,spanish"); assertEquals(encode(args, true, "Angelo"), "andZelo|angelo|anxelo"); assertEquals(encode(args, true, "1234"), ""); assertEquals(encode(args, false, "Angelo"), "YngYlo|Yngilo|agilo|angYlo|angilo|aniilo|anilo|anxilo|anzilo|ogilo|ongYlo|ongilo|oniilo|onilo|onxilo|onzilo"); args.put("ruleType", "EXACT"); assertEquals(encode(args, false, "Angelo"), "anZelo|andZelo|angelo|anhelo|anjelo|anxelo"); assertEquals(encode(args, false, "D'Angelo"), "(anZelo|andZelo|angelo|anhelo|anjelo|anxelo)-(danZelo|dandZelo|dangelo|danhelo|danjelo|danxelo)"); args.put("languageSet", "italian,greek,spanish"); assertEquals(encode(args, false, "Angelo"), "andZelo|angelo|anxelo"); assertEquals(encode(args, false, "1234"), ""); assertEquals(encode(args, true, "Angelo"), "YngYlo|Yngilo|agilo|angYlo|angilo|aniilo|anilo|anxilo|anzilo|ogilo|ongYlo|ongilo|oniilo|onilo|onxilo|onzilo"); args.put("ruleType", "APPROX"); assertEquals(encode(args, true, "Angelo"), "YngYlo|Yngilo|agilo|angYlo|angilo|aniilo|anilo|anxilo|anzilo|ogilo|ongYlo|ongilo|oniilo|onilo|onxilo|onzilo"); assertEquals(encode(args, true, "D'Angelo"), "(YngYlo|Yngilo|agilo|angYlo|angilo|aniilo|anilo|anxilo|anzilo|ogilo|ongYlo|ongilo|oniilo|onilo|onxilo|onzilo)-(dYngYlo|dYngilo|dagilo|dangYlo|dangilo|daniilo|danilo|danxilo|danzilo|dogilo|dongYlo|dongilo|doniilo|donilo|donxilo|donzilo)"); args.put("languageSet", "italian,greek,spanish"); assertEquals(encode(args, true, "Angelo"), "angilo|anxilo|anzilo|ongilo|onxilo|onzilo"); assertEquals(encode(args, true, "1234"), ""); assertEquals(encode(args, false, "Angelo"), "YngYlo|Yngilo|agilo|angYlo|angilo|aniilo|anilo|anxilo|anzilo|ogilo|ongYlo|ongilo|oniilo|onilo|onxilo|onzilo"); args.put("ruleType", "APPROX"); assertEquals(encode(args, false, "Angelo"), "YngYlo|Yngilo|agilo|angYlo|angilo|aniilo|anilo|anxilo|anzilo|ogilo|ongYlo|ongilo|oniilo|onilo|onxilo|onzilo"); assertEquals(encode(args, false, "D'Angelo"), "(YngYlo|Yngilo|agilo|angYlo|angilo|aniilo|anilo|anxilo|anzilo|ogilo|ongYlo|ongilo|oniilo|onilo|onxilo|onzilo)-(dYngYlo|dYngilo|dagilo|dangYlo|dangilo|daniilo|danilo|danxilo|danzilo|dogilo|dongYlo|dongilo|doniilo|donilo|donxilo|donzilo)"); args.put("languageSet", "italian,greek,spanish");
assertEquals(encode(args, true, "Angelo"), "anhila|anhilu|anzila|anzilu|nhila|nhilu|nzila|nzilu"); args.put("ruleType", "EXACT"); assertEquals(encode(args, true, "Angelo"), "anZelo|andZelo|anxelo"); assertEquals(encode(args, true, "D'Angelo"), "anZelo|andZelo|anxelo"); args.put("languageSet", "italian,greek,spanish"); assertEquals(encode(args, true, "Angelo"), "andZelo|anxelo"); assertEquals(encode(args, true, "1234"), ""); assertEquals(encode(args, false, "Angelo"), "anhila|anhilu|anzila|anzilu|nhila|nhilu|nzila|nzilu"); args.put("ruleType", "EXACT"); assertEquals(encode(args, false, "Angelo"), "anZelo|andZelo|anxelo"); assertEquals(encode(args, false, "D'Angelo"), "danZelo|dandZelo|danxelo"); args.put("languageSet", "italian,greek,spanish"); assertEquals(encode(args, false, "Angelo"), "andZelo|anxelo"); assertEquals(encode(args, false, "1234"), ""); assertEquals(encode(args, true, "Angelo"), "anhila|anhilu|anzila|anzilu|nhila|nhilu|nzila|nzilu"); args.put("ruleType", "APPROX"); assertEquals(encode(args, true, "Angelo"), "anhila|anhilu|anzila|anzilu|nhila|nhilu|nzila|nzilu"); assertEquals(encode(args, true, "D'Angelo"), "anhila|anhilu|anzila|anzilu|nhila|nhilu|nzila|nzilu"); args.put("languageSet", "italian,greek,spanish"); assertEquals(encode(args, true, "Angelo"), "anhila|anhilu|anzila|anzilu|nhila|nhilu|nzila|nzilu"); assertEquals(encode(args, true, "1234"), ""); assertEquals(encode(args, false, "Angelo"), "anhila|anhilu|anzila|anzilu|nhila|nhilu|nzila|nzilu"); args.put("ruleType", "APPROX"); assertEquals(encode(args, false, "Angelo"), "anhila|anhilu|anzila|anzilu|nhila|nhilu|nzila|nzilu"); assertEquals(encode(args, false, "D'Angelo"), "danhila|danhilu|danzila|danzilu|nhila|nhilu|nzila|nzilu"); args.put("languageSet", "italian,greek,spanish");
assertEquals(encode(args, true, "Angelo"), "YngYlo|Yngilo|angYlo|angilo|anilo|anxilo|anzilo|ongYlo|ongilo|onilo|onxilo|onzilo"); args.put("ruleType", "EXACT"); assertEquals(encode(args, true, "Angelo"), "andZelo|angelo|anhelo|anxelo"); assertEquals(encode(args, true, "D'Angelo"), "dandZelo|dangelo|danhelo|danxelo"); args.put("languageSet", "italian,greek,spanish"); assertEquals(encode(args, true, "Angelo"), "angelo|anxelo"); assertEquals(encode(args, true, "1234"), ""); assertEquals(encode(args, false, "Angelo"), "YngYlo|Yngilo|angYlo|angilo|anilo|anxilo|anzilo|ongYlo|ongilo|onilo|onxilo|onzilo"); args.put("ruleType", "EXACT"); assertEquals(encode(args, false, "Angelo"), "andZelo|angelo|anhelo|anxelo"); assertEquals(encode(args, false, "D'Angelo"), "dandZelo|dangelo|danhelo|danxelo"); args.put("languageSet", "italian,greek,spanish"); assertEquals(encode(args, false, "Angelo"), "angelo|anxelo"); assertEquals(encode(args, false, "1234"), ""); assertEquals(encode(args, true, "Angelo"), "YngYlo|Yngilo|angYlo|angilo|anilo|anxilo|anzilo|ongYlo|ongilo|onilo|onxilo|onzilo"); args.put("ruleType", "APPROX"); assertEquals(encode(args, true, "Angelo"), "YngYlo|Yngilo|angYlo|angilo|anilo|anxilo|anzilo|ongYlo|ongilo|onilo|onxilo|onzilo"); assertEquals(encode(args, true, "D'Angelo"), "dYngYlo|dYngilo|dangYlo|dangilo|danilo|danxilo|danzilo|dongYlo|dongilo|donilo|donxilo|donzilo"); args.put("languageSet", "italian,greek,spanish"); assertEquals(encode(args, true, "Angelo"), "angilo|anxilo|ongilo|onxilo"); assertEquals(encode(args, true, "1234"), ""); assertEquals(encode(args, false, "Angelo"), "YngYlo|Yngilo|angYlo|angilo|anilo|anxilo|anzilo|ongYlo|ongilo|onilo|onxilo|onzilo"); args.put("ruleType", "APPROX"); assertEquals(encode(args, false, "Angelo"), "YngYlo|Yngilo|angYlo|angilo|anilo|anxilo|anzilo|ongYlo|ongilo|onilo|onxilo|onzilo"); assertEquals(encode(args, false, "D'Angelo"), "dYngYlo|dYngilo|dangYlo|dangilo|danilo|danxilo|danzilo|dongYlo|dongilo|donilo|donxilo|donzilo"); args.put("languageSet", "italian,greek,spanish");