feat(parser): support // as multi-person separator in parseReceivers
Pre-splits input on "//" before existing logic so each segment is processed independently through the full pipeline (und/u splitting, last-name distribution, etc.). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -149,6 +149,38 @@ class PersonNameParserTest {
|
||||
assertThat(result).containsExactlyInAnyOrder("Clara Cram", "Eugenie de Gruyter");
|
||||
}
|
||||
|
||||
// --- parseReceivers — // separator ---
|
||||
|
||||
@Test
|
||||
void slashSeparator_twoIndependentFullNames() {
|
||||
assertThat(PersonNameParser.parseReceivers("Charl.Blomquist//Tante Lolly"))
|
||||
.containsExactly("Charl.Blomquist", "Tante Lolly");
|
||||
}
|
||||
|
||||
@Test
|
||||
void slashSeparator_abbreviatedFirstName() {
|
||||
assertThat(PersonNameParser.parseReceivers("Walter de Gruyter//Eugenie de Gruyter"))
|
||||
.containsExactly("Walter de Gruyter", "Eugenie de Gruyter");
|
||||
}
|
||||
|
||||
@Test
|
||||
void slashSeparator_withSpacesAroundSlashes() {
|
||||
assertThat(PersonNameParser.parseReceivers(" Herbert Cram // Eugenie de Gruyter "))
|
||||
.containsExactly("Herbert Cram", "Eugenie de Gruyter");
|
||||
}
|
||||
|
||||
@Test
|
||||
void slashSeparator_segmentContainsUnd() {
|
||||
assertThat(PersonNameParser.parseReceivers("Herbert und Clara Cram//Eugenie de Gruyter"))
|
||||
.containsExactly("Herbert Cram", "Clara Cram", "Eugenie de Gruyter");
|
||||
}
|
||||
|
||||
@Test
|
||||
void slashSeparator_trailingSlash() {
|
||||
assertThat(PersonNameParser.parseReceivers("Herbert Cram//"))
|
||||
.containsExactly("Herbert Cram");
|
||||
}
|
||||
|
||||
@Test
|
||||
void parseReceivers_returnsEmpty_whenAllPartsAreFamilie() {
|
||||
// All parts filtered out → nameParts.isEmpty() = true → return List.of()
|
||||
|
||||
Reference in New Issue
Block a user