Functional Weave
Code in TypeScript

validation.uk-ni-number@2.0.0

vectors.json

3,279 bytes · view raw

[
  { "name": "a well-formed number", "args": ["AB123456C"], "expect": { "valid": true, "normalised": "AB123456C", "reason": null } },
  { "name": "lower case and spaced as printed on a letter", "args": ["ab 12 34 56 c"], "expect": { "valid": true, "normalised": "AB123456C", "reason": null } },
  { "name": "stray leading and trailing spaces", "args": ["  JG103759A "], "expect": { "valid": true, "normalised": "JG103759A", "reason": null } },
  { "name": "each suffix A to D is allowed; D here", "args": ["CE000001D"], "expect": { "valid": true, "normalised": "CE000001D", "reason": null } },
  { "name": "O may start a prefix: it is only barred as the second letter", "args": ["OA123456B"], "expect": { "valid": true, "normalised": "OA123456B", "reason": null } },
  { "name": "HMRC's own example QQ 12 34 56 A is deliberately not a valid number", "args": ["QQ 12 34 56 A"], "expect": { "valid": false, "normalised": null, "reason": "bad-prefix" } },
  { "name": "D is never a first letter", "args": ["DA123456A"], "expect": { "valid": false, "normalised": null, "reason": "bad-prefix" } },
  { "name": "V is never a second letter", "args": ["AV123456A"], "expect": { "valid": false, "normalised": null, "reason": "bad-prefix" } },
  { "name": "O is never a second letter, so the OO administrative prefix fails", "args": ["OO123456A"], "expect": { "valid": false, "normalised": null, "reason": "bad-prefix" } },
  { "name": "GB is a barred prefix although both letters are allowed", "args": ["GB123456A"], "expect": { "valid": false, "normalised": null, "reason": "bad-prefix" } },
  { "name": "TN, the retired temporary-number prefix, is barred", "args": ["TN123456A"], "expect": { "valid": false, "normalised": null, "reason": "bad-prefix" } },
  { "name": "ZZ is barred", "args": ["ZZ123456A"], "expect": { "valid": false, "normalised": null, "reason": "bad-prefix" } },
  { "name": "NK is barred", "args": ["NK123456A"], "expect": { "valid": false, "normalised": null, "reason": "bad-prefix" } },
  { "name": "E is not a suffix", "args": ["AB123456E"], "expect": { "valid": false, "normalised": null, "reason": "bad-suffix" } },
  { "name": "the old PP999999P pension reporting reference fails on its suffix", "args": ["PP999999P"], "expect": { "valid": false, "normalised": null, "reason": "bad-suffix" } },
  { "name": "a missing suffix is too short", "args": ["AB123456"], "expect": { "valid": false, "normalised": null, "reason": "bad-length" } },
  { "name": "a digit where a prefix letter belongs", "args": ["A1123456C"], "expect": { "valid": false, "normalised": null, "reason": "bad-format" } },
  { "name": "a letter among the six digits", "args": ["AB12345CD"], "expect": { "valid": false, "normalised": null, "reason": "bad-format" } },
  { "name": "hyphens are not a NINO separator", "args": ["AB-12-34-56-C"], "expect": { "valid": false, "normalised": null, "reason": "bad-character" } },
  { "name": "a non-ASCII letter", "args": ["ÅB123456C"], "expect": { "valid": false, "normalised": null, "reason": "bad-character" } },
  { "name": "the empty string", "args": [""], "expect": { "valid": false, "normalised": null, "reason": "empty" } },
  { "name": "only spaces", "args": ["   "], "expect": { "valid": false, "normalised": null, "reason": "empty" } }
]