Functional Weave
Code in Python

legal.court-deadline@1.0.1

vectors.json

5,441 bytes · view raw

[
 {
  "name": "CPR 2.8 example (i): 3 days before a hearing on Friday 20 October: Monday 16 October",
  "args": [
   "2023-10-20",
   3,
   "at-least-before",
   false,
   []
  ],
  "expect": {
   "date": "2023-10-16",
   "shortPeriod": true,
   "extended": false
  }
 },
 {
  "name": "CPR 2.8(4) example: 3 days before a hearing on Monday 20 October: Tuesday 14 October",
  "args": [
   "2025-10-20",
   3,
   "at-least-before",
   false,
   []
  ],
  "expect": {
   "date": "2025-10-14",
   "shortPeriod": true,
   "extended": false
  }
 },
 {
  "name": "CPR 2.8 example (ii): at least 28 days after notice on 1 October: 30 October",
  "args": [
   "2023-10-01",
   28,
   "at-least-after",
   false,
   []
  ],
  "expect": {
   "date": "2023-10-30",
   "shortPeriod": false,
   "extended": false
  }
 },
 {
  "name": "CPR 2.8 example (iii): within 14 days of service on 2 October: 16 October",
  "args": [
   "2023-10-02",
   14,
   "within",
   false,
   []
  ],
  "expect": {
   "date": "2023-10-16",
   "shortPeriod": false,
   "extended": false
  }
 },
 {
  "name": "5 days over Easter skip Good Friday, the weekend and Easter Monday",
  "args": [
   "2026-04-02",
   5,
   "within",
   false,
   []
  ],
  "expect": {
   "date": "2026-04-13",
   "shortPeriod": true,
   "extended": false
  }
 },
 {
  "name": "5 days over Christmas and New Year skip both years' bank holidays",
  "args": [
   "2025-12-23",
   5,
   "within",
   false,
   []
  ],
  "expect": {
   "date": "2026-01-02",
   "shortPeriod": true,
   "extended": false
  }
 },
 {
  "name": "6 days is not a short period: Easter counts, calendar days only",
  "args": [
   "2026-04-03",
   6,
   "within",
   false,
   []
  ],
  "expect": {
   "date": "2026-04-09",
   "shortPeriod": false,
   "extended": false
  }
 },
 {
  "name": "a 7-day period ending on a Saturday stays there for an act out of court",
  "args": [
   "2026-09-12",
   7,
   "within",
   false,
   []
  ],
  "expect": {
   "date": "2026-09-19",
   "shortPeriod": false,
   "extended": false
  }
 },
 {
  "name": "the same period for filing at court moves to Monday (CPR 2.8(5))",
  "args": [
   "2026-09-12",
   7,
   "within",
   true,
   []
  ],
  "expect": {
   "date": "2026-09-21",
   "shortPeriod": false,
   "extended": true
  }
 },
 {
  "name": "14 days ending on the August bank holiday: filing is in time on Tuesday",
  "args": [
   "2026-08-17",
   14,
   "within",
   true,
   []
  ],
  "expect": {
   "date": "2026-09-01",
   "shortPeriod": false,
   "extended": true
  }
 },
 {
  "name": "the court office's own closure days move a filing deadline further",
  "args": [
   "2026-12-15",
   14,
   "within",
   true,
   [
    "2026-12-29",
    "2026-12-30"
   ]
  ],
  "expect": {
   "date": "2026-12-31",
   "shortPeriod": false,
   "extended": true
  }
 },
 {
  "name": "a filing deadline on an open day is not moved",
  "args": [
   "2026-09-01",
   14,
   "within",
   true,
   [
    "2026-09-16"
   ]
  ],
  "expect": {
   "date": "2026-09-15",
   "shortPeriod": false,
   "extended": false
  }
 },
 {
  "name": "at least 3 days after notice on a Friday: the clear days are Monday to Wednesday",
  "args": [
   "2026-09-18",
   3,
   "at-least-after",
   false,
   []
  ],
  "expect": {
   "date": "2026-09-24",
   "shortPeriod": true,
   "extended": false
  }
 },
 {
  "name": "3 days before a Thursday hearing: Monday to Wednesday are clear, so literally the Sunday",
  "args": [
   "2026-09-24",
   3,
   "at-least-before",
   false,
   []
  ],
  "expect": {
   "date": "2026-09-20",
   "shortPeriod": true,
   "extended": false
  }
 },
 {
  "name": "7 clear days before a hearing count every calendar day",
  "args": [
   "2026-09-24",
   7,
   "at-least-before",
   false,
   []
  ],
  "expect": {
   "date": "2026-09-16",
   "shortPeriod": false,
   "extended": false
  }
 },
 {
  "name": "a short period triggered on a Saturday starts counting on Monday",
  "args": [
   "2026-09-19",
   2,
   "within",
   false,
   []
  ],
  "expect": {
   "date": "2026-09-22",
   "shortPeriod": true,
   "extended": false
  }
 },
 {
  "name": "1 day within, from a Friday: Monday",
  "args": [
   "2026-09-18",
   1,
   "within",
   false,
   []
  ],
  "expect": {
   "date": "2026-09-21",
   "shortPeriod": true,
   "extended": false
  }
 },
 {
  "name": "zero days is an error",
  "args": [
   "2026-09-18",
   0,
   "within",
   false,
   []
  ],
  "expectError": "days must be an integer of at least 1"
 },
 {
  "name": "CPR 2.8(5) cannot move a before-deadline later",
  "args": [
   "2026-09-24",
   3,
   "at-least-before",
   true,
   []
  ],
  "expectError": "atCourtOffice applies only to a within period"
 },
 {
  "name": "closed days without atCourtOffice are an error, not ignored",
  "args": [
   "2026-09-01",
   14,
   "within",
   false,
   [
    "2026-09-15"
   ]
  ],
  "expectError": "courtClosedDays only apply when atCourtOffice is true"
 },
 {
  "name": "a short period in a year without published bank holidays is an error",
  "args": [
   "2029-03-01",
   3,
   "within",
   false,
   []
  ],
  "expectError": "no bank holiday data"
 },
 {
  "name": "an impossible trigger date is an error",
  "args": [
   "2026-02-30",
   3,
   "within",
   false,
   []
  ],
  "expectError": "not a real calendar date"
 },
 {
  "name": "an unknown rule is an error",
  "args": [
   "2026-09-18",
   3,
   "by",
   false,
   []
  ],
  "expectError": "unknown deadline rule"
 }
]