Functional Weave
Code in Rust

validation.uk-utr@2.0.0

vectors.json

2,799 bytes · view raw

[
  { "name": "HMRC's own valid test reference, remainder 0 so the check digit is 2", "args": ["2234567890"], "expect": { "valid": true, "normalised": "2234567890", "reason": null } },
  { "name": "another HMRC test reference, remainder 9 so the check digit is 2 again", "args": ["2108834503"], "expect": { "valid": true, "normalised": "2108834503", "reason": null } },
  { "name": "HMRC test reference with remainder 1, so the check digit is 1", "args": ["1097172564"], "expect": { "valid": true, "normalised": "1097172564", "reason": null } },
  { "name": "remainder 2 gives check digit 9", "args": ["9000000001"], "expect": { "valid": true, "normalised": "9000000001", "reason": null } },
  { "name": "spaced as HMRC letters print it", "args": ["22345 67890"], "expect": { "valid": true, "normalised": "2234567890", "reason": null } },
  { "name": "a trailing K, as Self Assessment online shows it", "args": ["2234567890K"], "expect": { "valid": true, "normalised": "2234567890", "reason": null } },
  { "name": "a leading lower-case k", "args": ["k1097172564"], "expect": { "valid": true, "normalised": "1097172564", "reason": null } },
  { "name": "a trailing lower-case k and stray spaces", "args": [" 1097172564k "], "expect": { "valid": true, "normalised": "1097172564", "reason": null } },
  { "name": "HMRC's example 1234567890 is deliberately not a valid reference", "args": ["1234567890"], "expect": { "valid": false, "normalised": null, "reason": "bad-check-digit" } },
  { "name": "a valid reference with two digits transposed", "args": ["2243567890"], "expect": { "valid": false, "normalised": null, "reason": "bad-check-digit" } },
  { "name": "thirteen digits: HMRC does not publish which three are extra, so they are not guessed", "args": ["1234567890123"], "expect": { "valid": false, "normalised": null, "reason": "thirteen-digits" } },
  { "name": "eleven digits", "args": ["12345678905"], "expect": { "valid": false, "normalised": null, "reason": "bad-length" } },
  { "name": "six digits", "args": ["123456"], "expect": { "valid": false, "normalised": null, "reason": "bad-length" } },
  { "name": "a K alone", "args": ["K"], "expect": { "valid": false, "normalised": null, "reason": "bad-length" } },
  { "name": "a letter after the trailing K", "args": ["1097172564KZ"], "expect": { "valid": false, "normalised": null, "reason": "bad-character" } },
  { "name": "K at both ends: only one is ever stripped", "args": ["K2234567890K"], "expect": { "valid": false, "normalised": null, "reason": "bad-character" } },
  { "name": "a hyphen is not accepted", "args": ["22345-67890"], "expect": { "valid": false, "normalised": null, "reason": "bad-character" } },
  { "name": "the empty string", "args": [""], "expect": { "valid": false, "normalised": null, "reason": "empty" } }
]