Functional Weave
Code in Rust

legal.court-fee@1.0.1

vectors.json

5,684 bytes · view raw

[
 {
  "name": "a GBP 300 claim is in the 'does not exceed 300' band: 35",
  "args": [
   {
    "minor": 30000,
    "currency": "GBP"
   },
   "paper",
   "2026-09-23"
  ],
  "expect": {
   "minor": 3500,
   "currency": "GBP"
  }
 },
 {
  "name": "one penny more is the next band: 50",
  "args": [
   {
    "minor": 30001,
    "currency": "GBP"
   },
   "paper",
   "2026-09-23"
  ],
  "expect": {
   "minor": 5000,
   "currency": "GBP"
  }
 },
 {
  "name": "GBP 1,200 is 80",
  "args": [
   {
    "minor": 120000,
    "currency": "GBP"
   },
   "paper",
   "2026-09-23"
  ],
  "expect": {
   "minor": 8000,
   "currency": "GBP"
  }
 },
 {
  "name": "GBP 4,999.99 is 205",
  "args": [
   {
    "minor": 499999,
    "currency": "GBP"
   },
   "paper",
   "2026-09-23"
  ],
  "expect": {
   "minor": 20500,
   "currency": "GBP"
  }
 },
 {
  "name": "GBP 10,000 exactly is still the flat 455",
  "args": [
   {
    "minor": 1000000,
    "currency": "GBP"
   },
   "paper",
   "2026-09-23"
  ],
  "expect": {
   "minor": 45500,
   "currency": "GBP"
  }
 },
 {
  "name": "GBP 10,000.01 is 5%, rounded down: 500.00",
  "args": [
   {
    "minor": 1000001,
    "currency": "GBP"
   },
   "paper",
   "2026-09-23"
  ],
  "expect": {
   "minor": 50000,
   "currency": "GBP"
  }
 },
 {
  "name": "5% of GBP 12,345.79 is 617.2895, rounded down to 617.28 (not up to 617.29)",
  "args": [
   {
    "minor": 1234579,
    "currency": "GBP"
   },
   "paper",
   "2026-09-23"
  ],
  "expect": {
   "minor": 61728,
   "currency": "GBP"
  }
 },
 {
  "name": "GBP 200,000 is 5%: exactly 10,000",
  "args": [
   {
    "minor": 20000000,
    "currency": "GBP"
   },
   "paper",
   "2026-09-23"
  ],
  "expect": {
   "minor": 1000000,
   "currency": "GBP"
  }
 },
 {
  "name": "over GBP 200,000 is a flat 10,000",
  "args": [
   {
    "minor": 75000000,
    "currency": "GBP"
   },
   "paper",
   "2026-09-23"
  ],
  "expect": {
   "minor": 1000000,
   "currency": "GBP"
  }
 },
 {
  "name": "online today pays the same as paper",
  "args": [
   {
    "minor": 25000,
    "currency": "GBP"
   },
   "online",
   "2026-09-23"
  ],
  "expect": {
   "minor": 3500,
   "currency": "GBP"
  }
 },
 {
  "name": "online today: GBP 50,000 is 5%",
  "args": [
   {
    "minor": 5000000,
    "currency": "GBP"
   },
   "online",
   "2026-09-23"
  ],
  "expect": {
   "minor": 250000,
   "currency": "GBP"
  }
 },
 {
  "name": "online on 17 May 2021 still had the lower fee 1.2: 25",
  "args": [
   {
    "minor": 25000,
    "currency": "GBP"
   },
   "online",
   "2021-05-17"
  ],
  "expect": {
   "minor": 2500,
   "currency": "GBP"
  }
 },
 {
  "name": "online from 18 May 2021 fee 1.2 is gone: 35",
  "args": [
   {
    "minor": 25000,
    "currency": "GBP"
   },
   "online",
   "2021-05-18"
  ],
  "expect": {
   "minor": 3500,
   "currency": "GBP"
  }
 },
 {
  "name": "online in 2020, GBP 7,500 was 410",
  "args": [
   {
    "minor": 750000,
    "currency": "GBP"
   },
   "online",
   "2020-06-01"
  ],
  "expect": {
   "minor": 41000,
   "currency": "GBP"
  }
 },
 {
  "name": "online in 2020, GBP 50,000 was 4.5%: 2,250",
  "args": [
   {
    "minor": 5000000,
    "currency": "GBP"
   },
   "online",
   "2020-06-01"
  ],
  "expect": {
   "minor": 225000,
   "currency": "GBP"
  }
 },
 {
  "name": "online in 2020, 4.5% of GBP 10,000.99 is 450.04455, rounded down",
  "args": [
   {
    "minor": 1000099,
    "currency": "GBP"
   },
   "online",
   "2020-06-01"
  ],
  "expect": {
   "minor": 45004,
   "currency": "GBP"
  }
 },
 {
  "name": "paper in 2020 was already 35 up to GBP 300",
  "args": [
   {
    "minor": 25000,
    "currency": "GBP"
   },
   "paper",
   "2020-06-01"
  ],
  "expect": {
   "minor": 3500,
   "currency": "GBP"
  }
 },
 {
  "name": "the first day of the 2015 bands",
  "args": [
   {
    "minor": 1500000,
    "currency": "GBP"
   },
   "paper",
   "2015-03-09"
  ],
  "expect": {
   "minor": 75000,
   "currency": "GBP"
  }
 },
 {
  "name": "an online claim over GBP 100,000 is an error",
  "args": [
   {
    "minor": 10000001,
    "currency": "GBP"
   },
   "online",
   "2026-09-23"
  ],
  "expectError": "cannot be issued online"
 },
 {
  "name": "an online claim over GBP 100,000 was an error under fee 1.2 too",
  "args": [
   {
    "minor": 15000000,
    "currency": "GBP"
   },
   "online",
   "2020-06-01"
  ],
  "expectError": "cannot be issued online"
 },
 {
  "name": "before 9 March 2015 there is no data",
  "args": [
   {
    "minor": 30000,
    "currency": "GBP"
   },
   "paper",
   "2015-03-08"
  ],
  "expectError": "court fee"
 },
 {
  "name": "a claim in euros is an error",
  "args": [
   {
    "minor": 30000,
    "currency": "EUR"
   },
   "paper",
   "2026-09-23"
  ],
  "expectError": "court fees are set for claims in GBP"
 },
 {
  "name": "a zero claim is an error",
  "args": [
   {
    "minor": 0,
    "currency": "GBP"
   },
   "paper",
   "2026-09-23"
  ],
  "expectError": "claim must be greater than zero"
 },
 {
  "name": "an unknown channel is an error",
  "args": [
   {
    "minor": 30000,
    "currency": "GBP"
   },
   "fax",
   "2026-09-23"
  ],
  "expectError": "unknown filing channel"
 },
 {
  "name": "a malformed date is an error",
  "args": [
   {
    "minor": 30000,
    "currency": "GBP"
   },
   "paper",
   "23/09/2026"
  ],
  "expectError": "onDate must be an ISO date"
 },
  {"name": "a date with a trailing newline is refused", "args": [{"minor": 30000, "currency": "GBP"}, "paper", "2026-09-23\n"], "expectError": "onDate must be an ISO date"},
  {"name": "a date in Arabic-Indic digits is refused", "args": [{"minor": 30000, "currency": "GBP"}, "paper", "٢٠٢٦-09-23"], "expectError": "onDate must be an ISO date"}
]