Functional Weave
Code in Rust

dates.bank-holidays@1.0.1

vectors.json

13,225 bytes · view raw

[
  {
    "name": "England and Wales 2022: the Platinum Jubilee moved the spring holiday and added one, and the state funeral added another",
    "args": [
      "england-and-wales",
      2022
    ],
    "expect": [
      {
        "date": "2022-01-03",
        "title": "New Year’s Day",
        "substitute": true
      },
      {
        "date": "2022-04-15",
        "title": "Good Friday",
        "substitute": false
      },
      {
        "date": "2022-04-18",
        "title": "Easter Monday",
        "substitute": false
      },
      {
        "date": "2022-05-02",
        "title": "Early May bank holiday",
        "substitute": false
      },
      {
        "date": "2022-06-02",
        "title": "Spring bank holiday",
        "substitute": false
      },
      {
        "date": "2022-06-03",
        "title": "Platinum Jubilee bank holiday",
        "substitute": false
      },
      {
        "date": "2022-08-29",
        "title": "Summer bank holiday",
        "substitute": false
      },
      {
        "date": "2022-09-19",
        "title": "Bank Holiday for the State Funeral of Queen Elizabeth II",
        "substitute": false
      },
      {
        "date": "2022-12-26",
        "title": "Boxing Day",
        "substitute": false
      },
      {
        "date": "2022-12-27",
        "title": "Christmas Day",
        "substitute": true
      }
    ]
  },
  {
    "name": "England and Wales 2023, with the coronation bank holiday",
    "args": [
      "england-and-wales",
      2023
    ],
    "expect": [
      {
        "date": "2023-01-02",
        "title": "New Year’s Day",
        "substitute": true
      },
      {
        "date": "2023-04-07",
        "title": "Good Friday",
        "substitute": false
      },
      {
        "date": "2023-04-10",
        "title": "Easter Monday",
        "substitute": false
      },
      {
        "date": "2023-05-01",
        "title": "Early May bank holiday",
        "substitute": false
      },
      {
        "date": "2023-05-08",
        "title": "Bank holiday for the coronation of King Charles III",
        "substitute": false
      },
      {
        "date": "2023-05-29",
        "title": "Spring bank holiday",
        "substitute": false
      },
      {
        "date": "2023-08-28",
        "title": "Summer bank holiday",
        "substitute": false
      },
      {
        "date": "2023-12-25",
        "title": "Christmas Day",
        "substitute": false
      },
      {
        "date": "2023-12-26",
        "title": "Boxing Day",
        "substitute": false
      }
    ]
  },
  {
    "name": "England and Wales 2026: Boxing Day falls on a Saturday so the substitute is Monday 28 December",
    "args": [
      "england-and-wales",
      2026
    ],
    "expect": [
      {
        "date": "2026-01-01",
        "title": "New Year’s Day",
        "substitute": false
      },
      {
        "date": "2026-04-03",
        "title": "Good Friday",
        "substitute": false
      },
      {
        "date": "2026-04-06",
        "title": "Easter Monday",
        "substitute": false
      },
      {
        "date": "2026-05-04",
        "title": "Early May bank holiday",
        "substitute": false
      },
      {
        "date": "2026-05-25",
        "title": "Spring bank holiday",
        "substitute": false
      },
      {
        "date": "2026-08-31",
        "title": "Summer bank holiday",
        "substitute": false
      },
      {
        "date": "2026-12-25",
        "title": "Christmas Day",
        "substitute": false
      },
      {
        "date": "2026-12-28",
        "title": "Boxing Day",
        "substitute": true
      }
    ]
  },
  {
    "name": "England and Wales 2019, the first year gov.uk publishes",
    "args": [
      "england-and-wales",
      2019
    ],
    "expect": [
      {
        "date": "2019-01-01",
        "title": "New Year’s Day",
        "substitute": false
      },
      {
        "date": "2019-04-19",
        "title": "Good Friday",
        "substitute": false
      },
      {
        "date": "2019-04-22",
        "title": "Easter Monday",
        "substitute": false
      },
      {
        "date": "2019-05-06",
        "title": "Early May bank holiday",
        "substitute": false
      },
      {
        "date": "2019-05-27",
        "title": "Spring bank holiday",
        "substitute": false
      },
      {
        "date": "2019-08-26",
        "title": "Summer bank holiday",
        "substitute": false
      },
      {
        "date": "2019-12-25",
        "title": "Christmas Day",
        "substitute": false
      },
      {
        "date": "2019-12-26",
        "title": "Boxing Day",
        "substitute": false
      }
    ]
  },
  {
    "name": "England and Wales 2028, the last year gov.uk publishes",
    "args": [
      "england-and-wales",
      2028
    ],
    "expect": [
      {
        "date": "2028-01-03",
        "title": "New Year’s Day",
        "substitute": true
      },
      {
        "date": "2028-04-14",
        "title": "Good Friday",
        "substitute": false
      },
      {
        "date": "2028-04-17",
        "title": "Easter Monday",
        "substitute": false
      },
      {
        "date": "2028-05-01",
        "title": "Early May bank holiday",
        "substitute": false
      },
      {
        "date": "2028-05-29",
        "title": "Spring bank holiday",
        "substitute": false
      },
      {
        "date": "2028-08-28",
        "title": "Summer bank holiday",
        "substitute": false
      },
      {
        "date": "2028-12-25",
        "title": "Christmas Day",
        "substitute": false
      },
      {
        "date": "2028-12-26",
        "title": "Boxing Day",
        "substitute": false
      }
    ]
  },
  {
    "name": "Scotland 2026: 2 January and St Andrew’s Day, no Easter Monday, and the one-off World Cup bank holiday",
    "args": [
      "scotland",
      2026
    ],
    "expect": [
      {
        "date": "2026-01-01",
        "title": "New Year’s Day",
        "substitute": false
      },
      {
        "date": "2026-01-02",
        "title": "2nd January",
        "substitute": false
      },
      {
        "date": "2026-04-03",
        "title": "Good Friday",
        "substitute": false
      },
      {
        "date": "2026-05-04",
        "title": "Early May bank holiday",
        "substitute": false
      },
      {
        "date": "2026-05-25",
        "title": "Spring bank holiday",
        "substitute": false
      },
      {
        "date": "2026-06-15",
        "title": "World Cup bank holiday",
        "substitute": false
      },
      {
        "date": "2026-08-03",
        "title": "Summer bank holiday",
        "substitute": false
      },
      {
        "date": "2026-11-30",
        "title": "St Andrew’s Day",
        "substitute": false
      },
      {
        "date": "2026-12-25",
        "title": "Christmas Day",
        "substitute": false
      },
      {
        "date": "2026-12-28",
        "title": "Boxing Day",
        "substitute": true
      }
    ]
  },
  {
    "name": "Scotland 2020: the early May holiday moved to Friday 8 May for VE day",
    "args": [
      "scotland",
      2020
    ],
    "expect": [
      {
        "date": "2020-01-01",
        "title": "New Year’s Day",
        "substitute": false
      },
      {
        "date": "2020-01-02",
        "title": "2nd January",
        "substitute": false
      },
      {
        "date": "2020-04-10",
        "title": "Good Friday",
        "substitute": false
      },
      {
        "date": "2020-05-08",
        "title": "Early May bank holiday (VE day)",
        "substitute": false
      },
      {
        "date": "2020-05-25",
        "title": "Spring bank holiday",
        "substitute": false
      },
      {
        "date": "2020-08-03",
        "title": "Summer bank holiday",
        "substitute": false
      },
      {
        "date": "2020-11-30",
        "title": "St Andrew’s Day",
        "substitute": false
      },
      {
        "date": "2020-12-25",
        "title": "Christmas Day",
        "substitute": false
      },
      {
        "date": "2020-12-28",
        "title": "Boxing Day",
        "substitute": true
      }
    ]
  },
  {
    "name": "Scotland 2022: New Year and 2 January both substituted",
    "args": [
      "scotland",
      2022
    ],
    "expect": [
      {
        "date": "2022-01-03",
        "title": "New Year’s Day",
        "substitute": true
      },
      {
        "date": "2022-01-04",
        "title": "2nd January",
        "substitute": true
      },
      {
        "date": "2022-04-15",
        "title": "Good Friday",
        "substitute": false
      },
      {
        "date": "2022-05-02",
        "title": "Early May bank holiday",
        "substitute": false
      },
      {
        "date": "2022-06-02",
        "title": "Spring bank holiday",
        "substitute": false
      },
      {
        "date": "2022-06-03",
        "title": "Platinum Jubilee bank holiday",
        "substitute": false
      },
      {
        "date": "2022-08-01",
        "title": "Summer bank holiday",
        "substitute": false
      },
      {
        "date": "2022-09-19",
        "title": "Bank Holiday for the State Funeral of Queen Elizabeth II",
        "substitute": false
      },
      {
        "date": "2022-11-30",
        "title": "St Andrew’s Day",
        "substitute": false
      },
      {
        "date": "2022-12-26",
        "title": "Boxing Day",
        "substitute": false
      },
      {
        "date": "2022-12-27",
        "title": "Christmas Day",
        "substitute": true
      }
    ]
  },
  {
    "name": "Northern Ireland 2025: the Battle of the Boyne substituted to Monday 14 July",
    "args": [
      "northern-ireland",
      2025
    ],
    "expect": [
      {
        "date": "2025-01-01",
        "title": "New Year’s Day",
        "substitute": false
      },
      {
        "date": "2025-03-17",
        "title": "St Patrick’s Day",
        "substitute": false
      },
      {
        "date": "2025-04-18",
        "title": "Good Friday",
        "substitute": false
      },
      {
        "date": "2025-04-21",
        "title": "Easter Monday",
        "substitute": false
      },
      {
        "date": "2025-05-05",
        "title": "Early May bank holiday",
        "substitute": false
      },
      {
        "date": "2025-05-26",
        "title": "Spring bank holiday",
        "substitute": false
      },
      {
        "date": "2025-07-14",
        "title": "Battle of the Boyne (Orangemen’s Day)",
        "substitute": true
      },
      {
        "date": "2025-08-25",
        "title": "Summer bank holiday",
        "substitute": false
      },
      {
        "date": "2025-12-25",
        "title": "Christmas Day",
        "substitute": false
      },
      {
        "date": "2025-12-26",
        "title": "Boxing Day",
        "substitute": false
      }
    ]
  },
  {
    "name": "Northern Ireland 2024: St Patrick’s Day substituted to Monday 18 March",
    "args": [
      "northern-ireland",
      2024
    ],
    "expect": [
      {
        "date": "2024-01-01",
        "title": "New Year’s Day",
        "substitute": false
      },
      {
        "date": "2024-03-18",
        "title": "St Patrick’s Day",
        "substitute": true
      },
      {
        "date": "2024-03-29",
        "title": "Good Friday",
        "substitute": false
      },
      {
        "date": "2024-04-01",
        "title": "Easter Monday",
        "substitute": false
      },
      {
        "date": "2024-05-06",
        "title": "Early May bank holiday",
        "substitute": false
      },
      {
        "date": "2024-05-27",
        "title": "Spring bank holiday",
        "substitute": false
      },
      {
        "date": "2024-07-12",
        "title": "Battle of the Boyne (Orangemen’s Day)",
        "substitute": false
      },
      {
        "date": "2024-08-26",
        "title": "Summer bank holiday",
        "substitute": false
      },
      {
        "date": "2024-12-25",
        "title": "Christmas Day",
        "substitute": false
      },
      {
        "date": "2024-12-26",
        "title": "Boxing Day",
        "substitute": false
      }
    ]
  },
  {
    "name": "a year before the published calendar is an error, not an empty list",
    "args": [
      "england-and-wales",
      2018
    ],
    "expectError": "no bank holiday data for england-and-wales in 2018"
  },
  {
    "name": "a year after the published calendar is an error, not an empty list",
    "args": [
      "scotland",
      2029
    ],
    "expectError": "no bank holiday data for scotland in 2029"
  },
  {
    "name": "Wales is not its own region in the gov.uk calendar",
    "args": [
      "wales",
      2026
    ],
    "expectError": "unknown region \"wales\""
  },
  {
    "name": "a two-letter code is not a region",
    "args": [
      "GB",
      2026
    ],
    "expectError": "unknown region \"GB\""
  },
  {
    "name": "a fractional year is an error",
    "args": [
      "scotland",
      2026.5
    ],
    "expectError": "year must be an integer"
  }
]