Functional Weave
Code in TypeScript

health.nhs-number-format@1.0.0

vectors.json

1,570 bytes · view raw

[
  { "name": "ten plain digits are spaced 3-3-4", "args": ["9434765919"], "expect": "943 476 5919" },
  { "name": "an already formatted number comes back unchanged", "args": ["943 476 5919"], "expect": "943 476 5919" },
  { "name": "hyphens are replaced by spaces", "args": ["943-476-5919"], "expect": "943 476 5919" },
  { "name": "stray and doubled spaces are normalised", "args": [" 94 34 76  5919 "], "expect": "943 476 5919" },
  { "name": "another valid number", "args": ["4010232137"], "expect": "401 023 2137" },
  { "name": "a check digit of 0: remainder 0 gives 11, which means 0", "args": ["4000000020"], "expect": "400 000 0020" },
  { "name": "a wrong check digit is refused, not formatted", "args": ["9434765918"], "expectError": "not a valid NHS number (bad-check-digit)" },
  { "name": "nine digits are refused", "args": ["943476591"], "expectError": "not a valid NHS number (bad-length)" },
  { "name": "eleven digits are refused", "args": ["94347659190"], "expectError": "not a valid NHS number (bad-length)" },
  { "name": "a letter is refused", "args": ["943476591A"], "expectError": "not a valid NHS number (bad-character)" },
  { "name": "an empty string is refused", "args": [""], "expectError": "not a valid NHS number (empty)" },
  { "name": "0000000000 passes the arithmetic but is a placeholder", "args": ["0000000000"], "expectError": "not a valid NHS number (placeholder)" },
  { "name": "a number with no possible check digit (remainder 1) is refused", "args": ["1000000010"], "expectError": "not a valid NHS number (bad-check-digit)" }
]