Functional Weave
Code in Rust

payroll.tax-code-parse@1.0.2

vectors.json

7,757 bytes · view raw

[
 {
  "name": "the standard personal allowance code",
  "args": [
   "1257L"
  ],
  "expect": {
   "code": "1257L",
   "region": "rest-of-uk",
   "kind": "allowance",
   "number": 1257,
   "suffix": "L",
   "annualAllowance": {
    "minor": 1257900,
    "currency": "GBP"
   },
   "cumulative": true
  }
 },
 {
  "name": "a Scottish taxpayer",
  "args": [
   "S1257L"
  ],
  "expect": {
   "code": "S1257L",
   "region": "scotland",
   "kind": "allowance",
   "number": 1257,
   "suffix": "L",
   "annualAllowance": {
    "minor": 1257900,
    "currency": "GBP"
   },
   "cumulative": true
  }
 },
 {
  "name": "a Welsh taxpayer",
  "args": [
   "C1257L"
  ],
  "expect": {
   "code": "C1257L",
   "region": "wales",
   "kind": "allowance",
   "number": 1257,
   "suffix": "L",
   "annualAllowance": {
    "minor": 1257900,
    "currency": "GBP"
   },
   "cumulative": true
  }
 },
 {
  "name": "lower case and stray spaces are tidied",
  "args": [
   "  s1257l "
  ],
  "expect": {
   "code": "S1257L",
   "region": "scotland",
   "kind": "allowance",
   "number": 1257,
   "suffix": "L",
   "annualAllowance": {
    "minor": 1257900,
    "currency": "GBP"
   },
   "cumulative": true
  }
 },
 {
  "name": "emergency code on a week 1 basis, with a space",
  "args": [
   "1257L W1"
  ],
  "expect": {
   "code": "1257L",
   "region": "rest-of-uk",
   "kind": "allowance",
   "number": 1257,
   "suffix": "L",
   "annualAllowance": {
    "minor": 1257900,
    "currency": "GBP"
   },
   "cumulative": false
  }
 },
 {
  "name": "month 1 basis written without a space",
  "args": [
   "1257LM1"
  ],
  "expect": {
   "code": "1257L",
   "region": "rest-of-uk",
   "kind": "allowance",
   "number": 1257,
   "suffix": "L",
   "annualAllowance": {
    "minor": 1257900,
    "currency": "GBP"
   },
   "cumulative": false
  }
 },
 {
  "name": "the X marker is also non-cumulative",
  "args": [
   "1257L X"
  ],
  "expect": {
   "code": "1257L",
   "region": "rest-of-uk",
   "kind": "allowance",
   "number": 1257,
   "suffix": "L",
   "annualAllowance": {
    "minor": 1257900,
    "currency": "GBP"
   },
   "cumulative": false
  }
 },
 {
  "name": "marriage allowance recipient suffix M",
  "args": [
   "1383M"
  ],
  "expect": {
   "code": "1383M",
   "region": "rest-of-uk",
   "kind": "allowance",
   "number": 1383,
   "suffix": "M",
   "annualAllowance": {
    "minor": 1383900,
    "currency": "GBP"
   },
   "cumulative": true
  }
 },
 {
  "name": "0T is no allowance at all, not 9 pounds",
  "args": [
   "0T"
  ],
  "expect": {
   "code": "0T",
   "region": "rest-of-uk",
   "kind": "allowance",
   "number": 0,
   "suffix": "T",
   "annualAllowance": {
    "minor": 0,
    "currency": "GBP"
   },
   "cumulative": true
  }
 },
 {
  "name": "code 1 is worth 19 pounds",
  "args": [
   "1L"
  ],
  "expect": {
   "code": "1L",
   "region": "rest-of-uk",
   "kind": "allowance",
   "number": 1,
   "suffix": "L",
   "annualAllowance": {
    "minor": 1900,
    "currency": "GBP"
   },
   "cumulative": true
  }
 },
 {
  "name": "a K code is a negative allowance",
  "args": [
   "K475"
  ],
  "expect": {
   "code": "K475",
   "region": "rest-of-uk",
   "kind": "negative-allowance",
   "number": 475,
   "suffix": null,
   "annualAllowance": {
    "minor": -475900,
    "currency": "GBP"
   },
   "cumulative": true
  }
 },
 {
  "name": "a Scottish K code on a month 1 basis",
  "args": [
   "SK475 M1"
  ],
  "expect": {
   "code": "SK475",
   "region": "scotland",
   "kind": "negative-allowance",
   "number": 475,
   "suffix": null,
   "annualAllowance": {
    "minor": -475900,
    "currency": "GBP"
   },
   "cumulative": false
  }
 },
 {
  "name": "BR taxes everything at the basic rate",
  "args": [
   "BR"
  ],
  "expect": {
   "code": "BR",
   "region": "rest-of-uk",
   "kind": "basic-rate",
   "number": 0,
   "suffix": null,
   "annualAllowance": {
    "minor": 0,
    "currency": "GBP"
   },
   "cumulative": true
  }
 },
 {
  "name": "Welsh BR on a week 1 basis",
  "args": [
   "CBR W1"
  ],
  "expect": {
   "code": "CBR",
   "region": "wales",
   "kind": "basic-rate",
   "number": 0,
   "suffix": null,
   "annualAllowance": {
    "minor": 0,
    "currency": "GBP"
   },
   "cumulative": false
  }
 },
 {
  "name": "D0 is the higher rate on everything",
  "args": [
   "D0"
  ],
  "expect": {
   "code": "D0",
   "region": "rest-of-uk",
   "kind": "d-rate",
   "number": 0,
   "suffix": null,
   "annualAllowance": {
    "minor": 0,
    "currency": "GBP"
   },
   "cumulative": true
  }
 },
 {
  "name": "SD2 is Scotland's advanced rate on everything",
  "args": [
   "SD2"
  ],
  "expect": {
   "code": "SD2",
   "region": "scotland",
   "kind": "d-rate",
   "number": 2,
   "suffix": null,
   "annualAllowance": {
    "minor": 0,
    "currency": "GBP"
   },
   "cumulative": true
  }
 },
 {
  "name": "NT means no tax",
  "args": [
   "NT"
  ],
  "expect": {
   "code": "NT",
   "region": "rest-of-uk",
   "kind": "no-tax",
   "number": 0,
   "suffix": null,
   "annualAllowance": {
    "minor": 0,
    "currency": "GBP"
   },
   "cumulative": true
  }
 },
 {
  "name": "a six-digit code",
  "args": [
   "999999T"
  ],
  "expect": {
   "code": "999999T",
   "region": "rest-of-uk",
   "kind": "allowance",
   "number": 999999,
   "suffix": "T",
   "annualAllowance": {
    "minor": 999999900,
    "currency": "GBP"
   },
   "cumulative": true
  }
 },
 {
  "name": "there is no Scottish NT",
  "args": [
   "SNT"
  ],
  "expectError": "there is no Scottish or Welsh NT code"
 },
 {
  "name": "there is no K0",
  "args": [
   "K0"
  ],
  "expectError": "unrecognised tax code"
 },
 {
  "name": "a withdrawn suffix is refused",
  "args": [
   "1257P"
  ],
  "expectError": "unrecognised tax code"
 },
 {
  "name": "a number without a suffix is refused",
  "args": [
   "1257"
  ],
  "expectError": "unrecognised tax code"
 },
 {
  "name": "0L is not issued",
  "args": [
   "0L"
  ],
  "expectError": "only issued as 0T"
 },
 {
  "name": "leading zeros are refused",
  "args": [
   "01257L"
  ],
  "expectError": "unrecognised tax code"
 },
 {
  "name": "an empty code is refused",
  "args": [
   "  "
  ],
  "expectError": "unrecognised tax code"
 },
 {
  "name": "a basis marker on its own is not a code",
  "args": [
   "W1"
  ],
  "expectError": "unrecognised tax code"
 },
 {
  "name": "a trailing newline is trimmed like any other space",
  "args": [
   "1257L\n"
  ],
  "expect": {
   "code": "1257L",
   "region": "rest-of-uk",
   "kind": "allowance",
   "number": 1257,
   "suffix": "L",
   "annualAllowance": {
    "minor": 1257900,
    "currency": "GBP"
   },
   "cumulative": true
  }
 },
 {
  "name": "a newline before the basis marker is a space",
  "args": [
   "1257L\nW1"
  ],
  "expect": {
   "code": "1257L",
   "region": "rest-of-uk",
   "kind": "allowance",
   "number": 1257,
   "suffix": "L",
   "annualAllowance": {
    "minor": 1257900,
    "currency": "GBP"
   },
   "cumulative": false
  }
 },
 {
  "name": "a no-break space is trimmed in every language",
  "args": [
   "1257L\u00a0"
  ],
  "expect": {
   "code": "1257L",
   "region": "rest-of-uk",
   "kind": "allowance",
   "number": 1257,
   "suffix": "L",
   "annualAllowance": {
    "minor": 1257900,
    "currency": "GBP"
   },
   "cumulative": true
  }
 },
 {
  "name": "a next-line control (U+0085) is not trimmed, so the code is refused",
  "args": [
   "1257L\u0085"
  ],
  "expectError": "unrecognised tax code"
 },
 {
  "name": "a unit separator (U+001F) is not trimmed, so the code is refused",
  "args": [
   "1257L\u001f"
  ],
  "expectError": "unrecognised tax code"
 },
 {
  "name": "a byte order mark (U+FEFF) is not trimmed, so the code is refused",
  "args": [
   "\ufeff1257L"
  ],
  "expectError": "unrecognised tax code"
 }
]