Names and identity test values
Names that break assumptions about what a "normal" name looks like. 12 values, each with what it breaks and what a correct application does instead.
Type them one at a time with AltShiftN
in the palette, or take them all into a script with nkb emit names-identity.
Surname Null
names-identity/surname-null
Null
Null
- 4 graphemes
- 4 code points
- 4 bytes
- 4 UTF-16 units
- What it breaks
- A real surname that every layer treating text loosely turns into an absent value; the record loses its name on save.
- What a correct application does
- Stored and displayed as a four-letter surname, distinct from an empty field.
Single name only
names-identity/single-name
Suharto
Suharto
- 7 graphemes
- 7 code points
- 7 bytes
- 7 UTF-16 units
- What it breaks
- People with one name exist; a form requiring both parts cannot represent them at all.
- What a correct application does
- Accepted with one name filled in, without inventing a placeholder for the other.
Surname with an apostrophe
names-identity/apostrophe-surname
O'Brien
O'Brien
- 7 graphemes
- 7 code points
- 7 bytes
- 7 UTF-16 units
- What it breaks
- The apostrophe breaks query construction, name splitting and sorting; the most common real surname that breaks forms.
- What a correct application does
- Stored, displayed, searched and sorted exactly as written.
Two surnames without a hyphen
names-identity/two-surnames
GarcíaMárquez
García Márquez
- 14 graphemes
- 14 code points
- 16 bytes
- 14 UTF-16 units
- What it breaks
- Two surnames without a hyphen; splitting on the space produces a wrong first name.
- What a correct application does
- Kept as one surname; splitting, if any, is a deliberate feature rather than a guess.
Surname with lowercase particles
names-identity/particle-prefix
vanderBerg
van der Berg
- 12 graphemes
- 12 code points
- 12 bytes
- 12 UTF-16 units
- What it breaks
- Lowercase particles break capitalisation, sorting and any rule assuming a surname starts with a capital letter.
- What a correct application does
- Stored as written; sorting rules stated rather than assumed.
One-letter name
names-identity/single-letter-name
X
X
- 1 grapheme
- 1 code point
- 1 byte
- 1 UTF-16 unit
- What it breaks
- A one-letter name is legal in several countries and rejected by nearly every minimum-length rule.
- What a correct application does
- Accepted, or the minimum stated with a reason.
Surname in capitals
names-identity/all-caps-surname
KOWALSKI
KOWALSKI
- 8 graphemes
- 8 code points
- 8 bytes
- 8 UTF-16 units
- What it breaks
- Names written in capitals, common on documents; auto-capitalisation turns them into something else.
- What a correct application does
- Stored as entered; automatic capitalisation, if any, is visible and reversible.
Digit in a name
names-identity/digits-in-name
John3
John3
- 5 graphemes
- 5 code points
- 5 bytes
- 5 UTF-16 units
- What it breaks
- Digits in a name break validators that allow letters only, and those validators reject legitimate users.
- What a correct application does
- Accepted, or a stated rule explaining the restriction.
Name of 120 characters
names-identity/very-long-name
120 × a
- 120 graphemes
- 120 code points
- 120 bytes
- 120 UTF-16 units
- What it breaks
- Long names hit column limits and layouts sized for a typical name.
- What a correct application does
- Accepted up to a stated limit and displayed without breaking the layout.
Title typed into the name
names-identity/title-inside
DrJanKowalski
Dr Jan Kowalski
- 15 graphemes
- 15 code points
- 15 bytes
- 15 UTF-16 units
- What it breaks
- Titles typed into a name field break salutations and duplicate detection.
- What a correct application does
- Stored as written; the salutation composed without assuming the field contains only a name.
Hyphenated given name
names-identity/hyphen-first-name
Anna-Maria
Anna-Maria
- 10 graphemes
- 10 code points
- 10 bytes
- 10 UTF-16 units
- What it breaks
- A hyphenated given name splits into two in systems assuming one word per field.
- What a correct application does
- Kept as one given name.
Surname True
names-identity/surname-true
True
True
- 4 graphemes
- 4 code points
- 4 bytes
- 4 UTF-16 units
- What it breaks
- The same failure as Null in a different form, and one that also breaks configuration files.
- What a correct application does
- Stored and displayed as written.