Functional Weave
Code in Rust

banking.bacs-processing-date@1.0.0

vectors.json

4,159 bytes · view raw

[
  {
    "name": "a Wednesday before the cutoff",
    "args": [
      "2026-09-23",
      false
    ],
    "expect": {
      "inputDay": "2026-09-23",
      "processingDay": "2026-09-24",
      "entryDay": "2026-09-25"
    }
  },
  {
    "name": "a Wednesday after the cutoff joins Thursday's cycle",
    "args": [
      "2026-09-23",
      true
    ],
    "expect": {
      "inputDay": "2026-09-24",
      "processingDay": "2026-09-25",
      "entryDay": "2026-09-28"
    }
  },
  {
    "name": "a Friday submission arrives on Tuesday",
    "args": [
      "2026-09-25",
      false
    ],
    "expect": {
      "inputDay": "2026-09-25",
      "processingDay": "2026-09-28",
      "entryDay": "2026-09-29"
    }
  },
  {
    "name": "a Saturday submission waits for Monday",
    "args": [
      "2026-09-26",
      false
    ],
    "expect": {
      "inputDay": "2026-09-28",
      "processingDay": "2026-09-29",
      "entryDay": "2026-09-30"
    }
  },
  {
    "name": "the cutoff does not matter on a non-processing day",
    "args": [
      "2026-09-26",
      true
    ],
    "expect": {
      "inputDay": "2026-09-28",
      "processingDay": "2026-09-29",
      "entryDay": "2026-09-30"
    }
  },
  {
    "name": "Easter: Thursday before Good Friday processes on Tuesday",
    "args": [
      "2026-04-02",
      false
    ],
    "expect": {
      "inputDay": "2026-04-02",
      "processingDay": "2026-04-07",
      "entryDay": "2026-04-08"
    }
  },
  {
    "name": "a file sent on Good Friday starts on the Tuesday after Easter Monday",
    "args": [
      "2026-04-03",
      false
    ],
    "expect": {
      "inputDay": "2026-04-07",
      "processingDay": "2026-04-08",
      "entryDay": "2026-04-09"
    }
  },
  {
    "name": "Christmas 2026: the substitute Boxing Day is skipped too",
    "args": [
      "2026-12-23",
      false
    ],
    "expect": {
      "inputDay": "2026-12-23",
      "processingDay": "2026-12-24",
      "entryDay": "2026-12-29"
    }
  },
  {
    "name": "Christmas Eve after the cutoff",
    "args": [
      "2026-12-24",
      true
    ],
    "expect": {
      "inputDay": "2026-12-29",
      "processingDay": "2026-12-30",
      "entryDay": "2026-12-31"
    }
  },
  {
    "name": "New Year's Eve runs into next year's calendar",
    "args": [
      "2026-12-31",
      false
    ],
    "expect": {
      "inputDay": "2026-12-31",
      "processingDay": "2027-01-04",
      "entryDay": "2027-01-05"
    }
  },
  {
    "name": "the summer bank holiday Monday is skipped",
    "args": [
      "2026-08-28",
      false
    ],
    "expect": {
      "inputDay": "2026-08-28",
      "processingDay": "2026-09-01",
      "entryDay": "2026-09-02"
    }
  },
  {
    "name": "Christmas 2027 falls at a weekend, both substitute days skipped",
    "args": [
      "2027-12-24",
      false
    ],
    "expect": {
      "inputDay": "2027-12-24",
      "processingDay": "2027-12-29",
      "entryDay": "2027-12-30"
    }
  },
  {
    "name": "a December cycle inside the last published year needs no later data",
    "args": [
      "2028-12-22",
      false
    ],
    "expect": {
      "inputDay": "2028-12-22",
      "processingDay": "2028-12-27",
      "entryDay": "2028-12-28"
    }
  },
  {
    "name": "the first published year",
    "args": [
      "2019-01-02",
      false
    ],
    "expect": {
      "inputDay": "2019-01-02",
      "processingDay": "2019-01-03",
      "entryDay": "2019-01-04"
    }
  },
  {
    "name": "a cycle that runs past the published calendar is an error",
    "args": [
      "2028-12-29",
      false
    ],
    "expectError": "no bank holiday data for england-and-wales in 2029"
  },
  {
    "name": "a year before the published calendar is an error",
    "args": [
      "2018-06-01",
      false
    ],
    "expectError": "no bank holiday data for england-and-wales in 2018"
  },
  {
    "name": "a malformed date is an error",
    "args": [
      "2026-9-23",
      false
    ],
    "expectError": "is not an ISO date"
  },
  {
    "name": "an impossible date is an error",
    "args": [
      "2026-02-30",
      false
    ],
    "expectError": "not a real calendar date"
  }
]