From 698ce9f272c8e09e0a2c291a6ee9b8812369b370 Mon Sep 17 00:00:00 2001 From: Juan Cruz Viotti Date: Wed, 22 Oct 2025 16:15:48 -0400 Subject: [PATCH] Add some more ISO 8601-1:2019 interval tests Signed-off-by: Juan Cruz Viotti --- .../start-end-calendar-extended.test.json | 145 ++++++++++++++++++ .../start-end-ordinal-basic.test.json | 135 ++++++++++++++++ .../start-end-ordinal-extended.test.json | 135 ++++++++++++++++ .../interval/start-end-week-basic.test.json | 145 ++++++++++++++++++ .../start-end-week-extended.test.json | 145 ++++++++++++++++++ 5 files changed, 705 insertions(+) diff --git a/test/iso/datetime/2019/interval/start-end-calendar-extended.test.json b/test/iso/datetime/2019/interval/start-end-calendar-extended.test.json index 214443ca..4ddd947a 100644 --- a/test/iso/datetime/2019/interval/start-end-calendar-extended.test.json +++ b/test/iso/datetime/2019/interval/start-end-calendar-extended.test.json @@ -346,6 +346,151 @@ "description": "Valid - reversed order (end before start is syntactically valid per ISO 8601)", "data": "1985-06-25T10:30:00/1985-04-12T23:20:50", "valid": true + }, + { + "description": "Invalid - start hour 99", + "data": "1985-04-12T99:20:50/1985-06-25T10:30:00", + "valid": false + }, + { + "description": "Invalid - end hour 99", + "data": "1985-04-12T23:20:50/1985-06-25T99:30:00", + "valid": false + }, + { + "description": "Invalid - start minute 99", + "data": "1985-04-12T23:99:50/1985-06-25T10:30:00", + "valid": false + }, + { + "description": "Invalid - end minute 99", + "data": "1985-04-12T23:20:50/1985-06-25T10:99:00", + "valid": false + }, + { + "description": "Invalid - start second 99", + "data": "1985-04-12T23:20:99/1985-06-25T10:30:00", + "valid": false + }, + { + "description": "Invalid - end second 99", + "data": "1985-04-12T23:20:50/1985-06-25T10:30:99", + "valid": false + }, + { + "description": "Invalid - letter in start year", + "data": "I985-04-12T23:20:50/1985-06-25T10:30:00", + "valid": false + }, + { + "description": "Invalid - letter in end year", + "data": "1985-04-12T23:20:50/I985-06-25T10:30:00", + "valid": false + }, + { + "description": "Invalid - letter in start month", + "data": "1985-0I-12T23:20:50/1985-06-25T10:30:00", + "valid": false + }, + { + "description": "Invalid - letter in end month", + "data": "1985-04-12T23:20:50/1985-0I-25T10:30:00", + "valid": false + }, + { + "description": "Invalid - letter in start day", + "data": "1985-04-I2T23:20:50/1985-06-25T10:30:00", + "valid": false + }, + { + "description": "Invalid - letter in end day", + "data": "1985-04-12T23:20:50/1985-06-I5T10:30:00", + "valid": false + }, + { + "description": "Invalid - letter in start hour", + "data": "1985-04-12TI3:20:50/1985-06-25T10:30:00", + "valid": false + }, + { + "description": "Invalid - letter in end hour", + "data": "1985-04-12T23:20:50/1985-06-25TI0:30:00", + "valid": false + }, + { + "description": "Invalid - letter in start minute", + "data": "1985-04-12T23:I0:50/1985-06-25T10:30:00", + "valid": false + }, + { + "description": "Invalid - letter in end minute", + "data": "1985-04-12T23:20:50/1985-06-25T10:I0:00", + "valid": false + }, + { + "description": "Invalid - letter in start second", + "data": "1985-04-12T23:20:I0/1985-06-25T10:30:00", + "valid": false + }, + { + "description": "Invalid - letter in end second", + "data": "1985-04-12T23:20:50/1985-06-25T10:30:I0", + "valid": false + }, + { + "description": "Invalid - too short start datetime", + "data": "1985-04-12T23:20:5/1985-06-25T10:30:00", + "valid": false + }, + { + "description": "Invalid - too short end datetime", + "data": "1985-04-12T23:20:50/1985-06-25T10:30:0", + "valid": false + }, + { + "description": "Invalid - too long start datetime", + "data": "1985-04-12T23:20:500/1985-06-25T10:30:00", + "valid": false + }, + { + "description": "Invalid - too long end datetime", + "data": "1985-04-12T23:20:50/1985-06-25T10:30:000", + "valid": false + }, + { + "description": "Invalid - extra character at start", + "data": "X1985-04-12T23:20:50/1985-06-25T10:30:00", + "valid": false + }, + { + "description": "Invalid - extra character at end", + "data": "1985-04-12T23:20:50/1985-06-25T10:30:00X", + "valid": false + }, + { + "description": "Invalid - extra character in middle", + "data": "1985-04-12T23:20:50X/1985-06-25T10:30:00", + "valid": false + }, + { + "description": "Invalid - space in start date", + "data": "1985-04- 12T23:20:50/1985-06-25T10:30:00", + "valid": false + }, + { + "description": "Invalid - space in end date", + "data": "1985-04-12T23:20:50/1985-06- 25T10:30:00", + "valid": false + }, + { + "description": "Invalid - space in start time", + "data": "1985-04-12T23: 20:50/1985-06-25T10:30:00", + "valid": false + }, + { + "description": "Invalid - space in end time", + "data": "1985-04-12T23:20:50/1985-06-25T10: 30:00", + "valid": false } ] } diff --git a/test/iso/datetime/2019/interval/start-end-ordinal-basic.test.json b/test/iso/datetime/2019/interval/start-end-ordinal-basic.test.json index 6d866b29..f0c8ed8e 100644 --- a/test/iso/datetime/2019/interval/start-end-ordinal-basic.test.json +++ b/test/iso/datetime/2019/interval/start-end-ordinal-basic.test.json @@ -276,6 +276,141 @@ "description": "Invalid - week date format instead of ordinal in end", "data": "1985102T232050/1985W261T103000", "valid": false + }, + { + "description": "Invalid - start hour 99", + "data": "1985102T992050/1985176T103000", + "valid": false + }, + { + "description": "Invalid - end hour 99", + "data": "1985102T232050/1985176T993000", + "valid": false + }, + { + "description": "Invalid - start minute 99", + "data": "1985102T239950/1985176T103000", + "valid": false + }, + { + "description": "Invalid - end minute 99", + "data": "1985102T232050/1985176T109900", + "valid": false + }, + { + "description": "Invalid - start second 99", + "data": "1985102T232099/1985176T103000", + "valid": false + }, + { + "description": "Invalid - end second 99", + "data": "1985102T232050/1985176T103099", + "valid": false + }, + { + "description": "Invalid - letter in start year", + "data": "I985102T232050/1985176T103000", + "valid": false + }, + { + "description": "Invalid - letter in end year", + "data": "1985102T232050/I985176T103000", + "valid": false + }, + { + "description": "Invalid - letter in start day", + "data": "1985I02T232050/1985176T103000", + "valid": false + }, + { + "description": "Invalid - letter in end day", + "data": "1985102T232050/1985I76T103000", + "valid": false + }, + { + "description": "Invalid - letter in start hour", + "data": "1985102TI32050/1985176T103000", + "valid": false + }, + { + "description": "Invalid - letter in end hour", + "data": "1985102T232050/1985176TI03000", + "valid": false + }, + { + "description": "Invalid - letter in start minute", + "data": "1985102T23I050/1985176T103000", + "valid": false + }, + { + "description": "Invalid - letter in end minute", + "data": "1985102T232050/1985176T10I000", + "valid": false + }, + { + "description": "Invalid - letter in start second", + "data": "1985102T2320I0/1985176T103000", + "valid": false + }, + { + "description": "Invalid - letter in end second", + "data": "1985102T232050/1985176T1030I0", + "valid": false + }, + { + "description": "Invalid - too short start datetime", + "data": "1985102T23205/1985176T103000", + "valid": false + }, + { + "description": "Invalid - too short end datetime", + "data": "1985102T232050/1985176T10300", + "valid": false + }, + { + "description": "Invalid - too long start datetime", + "data": "1985102T2320500/1985176T103000", + "valid": false + }, + { + "description": "Invalid - too long end datetime", + "data": "1985102T232050/1985176T1030000", + "valid": false + }, + { + "description": "Invalid - extra character at start", + "data": "X1985102T232050/1985176T103000", + "valid": false + }, + { + "description": "Invalid - extra character at end", + "data": "1985102T232050/1985176T103000X", + "valid": false + }, + { + "description": "Invalid - extra character in middle", + "data": "1985102T232050X/1985176T103000", + "valid": false + }, + { + "description": "Invalid - space in start date", + "data": "1985 102T232050/1985176T103000", + "valid": false + }, + { + "description": "Invalid - space in end date", + "data": "1985102T232050/1985 176T103000", + "valid": false + }, + { + "description": "Invalid - space in start time", + "data": "1985102T23 2050/1985176T103000", + "valid": false + }, + { + "description": "Invalid - space in end time", + "data": "1985102T232050/1985176T10 3000", + "valid": false } ] } diff --git a/test/iso/datetime/2019/interval/start-end-ordinal-extended.test.json b/test/iso/datetime/2019/interval/start-end-ordinal-extended.test.json index 930dc0a9..25f5e5fd 100644 --- a/test/iso/datetime/2019/interval/start-end-ordinal-extended.test.json +++ b/test/iso/datetime/2019/interval/start-end-ordinal-extended.test.json @@ -261,6 +261,141 @@ "description": "Invalid - week date format instead of ordinal in end", "data": "1985-102T23:20:50/1985-W26-1T10:30:00", "valid": false + }, + { + "description": "Invalid - start hour 99", + "data": "1985-102T99:20:50/1985-176T10:30:00", + "valid": false + }, + { + "description": "Invalid - end hour 99", + "data": "1985-102T23:20:50/1985-176T99:30:00", + "valid": false + }, + { + "description": "Invalid - start minute 99", + "data": "1985-102T23:99:50/1985-176T10:30:00", + "valid": false + }, + { + "description": "Invalid - end minute 99", + "data": "1985-102T23:20:50/1985-176T10:99:00", + "valid": false + }, + { + "description": "Invalid - start second 99", + "data": "1985-102T23:20:99/1985-176T10:30:00", + "valid": false + }, + { + "description": "Invalid - end second 99", + "data": "1985-102T23:20:50/1985-176T10:30:99", + "valid": false + }, + { + "description": "Invalid - letter in start year", + "data": "I985-102T23:20:50/1985-176T10:30:00", + "valid": false + }, + { + "description": "Invalid - letter in end year", + "data": "1985-102T23:20:50/I985-176T10:30:00", + "valid": false + }, + { + "description": "Invalid - letter in start day", + "data": "1985-I02T23:20:50/1985-176T10:30:00", + "valid": false + }, + { + "description": "Invalid - letter in end day", + "data": "1985-102T23:20:50/1985-I76T10:30:00", + "valid": false + }, + { + "description": "Invalid - letter in start hour", + "data": "1985-102TI3:20:50/1985-176T10:30:00", + "valid": false + }, + { + "description": "Invalid - letter in end hour", + "data": "1985-102T23:20:50/1985-176TI0:30:00", + "valid": false + }, + { + "description": "Invalid - letter in start minute", + "data": "1985-102T23:I0:50/1985-176T10:30:00", + "valid": false + }, + { + "description": "Invalid - letter in end minute", + "data": "1985-102T23:20:50/1985-176T10:I0:00", + "valid": false + }, + { + "description": "Invalid - letter in start second", + "data": "1985-102T23:20:I0/1985-176T10:30:00", + "valid": false + }, + { + "description": "Invalid - letter in end second", + "data": "1985-102T23:20:50/1985-176T10:30:I0", + "valid": false + }, + { + "description": "Invalid - too short start datetime", + "data": "1985-102T23:20:5/1985-176T10:30:00", + "valid": false + }, + { + "description": "Invalid - too short end datetime", + "data": "1985-102T23:20:50/1985-176T10:30:0", + "valid": false + }, + { + "description": "Invalid - too long start datetime", + "data": "1985-102T23:20:500/1985-176T10:30:00", + "valid": false + }, + { + "description": "Invalid - too long end datetime", + "data": "1985-102T23:20:50/1985-176T10:30:000", + "valid": false + }, + { + "description": "Invalid - extra character at start", + "data": "X1985-102T23:20:50/1985-176T10:30:00", + "valid": false + }, + { + "description": "Invalid - extra character at end", + "data": "1985-102T23:20:50/1985-176T10:30:00X", + "valid": false + }, + { + "description": "Invalid - extra character in middle", + "data": "1985-102T23:20:50X/1985-176T10:30:00", + "valid": false + }, + { + "description": "Invalid - space in start date", + "data": "1985- 102T23:20:50/1985-176T10:30:00", + "valid": false + }, + { + "description": "Invalid - space in end date", + "data": "1985-102T23:20:50/1985- 176T10:30:00", + "valid": false + }, + { + "description": "Invalid - space in start time", + "data": "1985-102T23: 20:50/1985-176T10:30:00", + "valid": false + }, + { + "description": "Invalid - space in end time", + "data": "1985-102T23:20:50/1985-176T10: 30:00", + "valid": false } ] } diff --git a/test/iso/datetime/2019/interval/start-end-week-basic.test.json b/test/iso/datetime/2019/interval/start-end-week-basic.test.json index 568c7369..8ae6f2ec 100644 --- a/test/iso/datetime/2019/interval/start-end-week-basic.test.json +++ b/test/iso/datetime/2019/interval/start-end-week-basic.test.json @@ -276,6 +276,151 @@ "description": "Valid - reversed order (end before start is syntactically valid per ISO 8601)", "data": "1985W261T103000/1985W155T232050", "valid": true + }, + { + "description": "Invalid - start hour 99", + "data": "1985W155T992050/1985W261T103000", + "valid": false + }, + { + "description": "Invalid - end hour 99", + "data": "1985W155T232050/1985W261T993000", + "valid": false + }, + { + "description": "Invalid - start minute 99", + "data": "1985W155T239950/1985W261T103000", + "valid": false + }, + { + "description": "Invalid - end minute 99", + "data": "1985W155T232050/1985W261T109900", + "valid": false + }, + { + "description": "Invalid - start second 99", + "data": "1985W155T232099/1985W261T103000", + "valid": false + }, + { + "description": "Invalid - end second 99", + "data": "1985W155T232050/1985W261T103099", + "valid": false + }, + { + "description": "Invalid - letter in start year", + "data": "I985W155T232050/1985W261T103000", + "valid": false + }, + { + "description": "Invalid - letter in end year", + "data": "1985W155T232050/I985W261T103000", + "valid": false + }, + { + "description": "Invalid - letter in start week", + "data": "1985WI55T232050/1985W261T103000", + "valid": false + }, + { + "description": "Invalid - letter in end week", + "data": "1985W155T232050/1985WI61T103000", + "valid": false + }, + { + "description": "Invalid - letter in start day", + "data": "1985W15IT232050/1985W261T103000", + "valid": false + }, + { + "description": "Invalid - letter in end day", + "data": "1985W155T232050/1985W26IT103000", + "valid": false + }, + { + "description": "Invalid - letter in start hour", + "data": "1985W155TI32050/1985W261T103000", + "valid": false + }, + { + "description": "Invalid - letter in end hour", + "data": "1985W155T232050/1985W261TI03000", + "valid": false + }, + { + "description": "Invalid - letter in start minute", + "data": "1985W155T23I050/1985W261T103000", + "valid": false + }, + { + "description": "Invalid - letter in end minute", + "data": "1985W155T232050/1985W261T10I000", + "valid": false + }, + { + "description": "Invalid - letter in start second", + "data": "1985W155T2320I0/1985W261T103000", + "valid": false + }, + { + "description": "Invalid - letter in end second", + "data": "1985W155T232050/1985W261T1030I0", + "valid": false + }, + { + "description": "Invalid - too short start datetime", + "data": "1985W155T23205/1985W261T103000", + "valid": false + }, + { + "description": "Invalid - too short end datetime", + "data": "1985W155T232050/1985W261T10300", + "valid": false + }, + { + "description": "Invalid - too long start datetime", + "data": "1985W155T2320500/1985W261T103000", + "valid": false + }, + { + "description": "Invalid - too long end datetime", + "data": "1985W155T232050/1985W261T1030000", + "valid": false + }, + { + "description": "Invalid - extra character at start", + "data": "X1985W155T232050/1985W261T103000", + "valid": false + }, + { + "description": "Invalid - extra character at end", + "data": "1985W155T232050/1985W261T103000X", + "valid": false + }, + { + "description": "Invalid - extra character in middle", + "data": "1985W155T232050X/1985W261T103000", + "valid": false + }, + { + "description": "Invalid - space in start date", + "data": "1985W15 5T232050/1985W261T103000", + "valid": false + }, + { + "description": "Invalid - space in end date", + "data": "1985W155T232050/1985W26 1T103000", + "valid": false + }, + { + "description": "Invalid - space in start time", + "data": "1985W155T23 2050/1985W261T103000", + "valid": false + }, + { + "description": "Invalid - space in end time", + "data": "1985W155T232050/1985W261T10 3000", + "valid": false } ] } diff --git a/test/iso/datetime/2019/interval/start-end-week-extended.test.json b/test/iso/datetime/2019/interval/start-end-week-extended.test.json index 150cfab6..40e4a922 100644 --- a/test/iso/datetime/2019/interval/start-end-week-extended.test.json +++ b/test/iso/datetime/2019/interval/start-end-week-extended.test.json @@ -296,6 +296,151 @@ "description": "Valid - reversed order (end before start is syntactically valid per ISO 8601)", "data": "1985-W26-1T10:30:00/1985-W15-5T23:20:50", "valid": true + }, + { + "description": "Invalid - start hour 99", + "data": "1985-W15-5T99:20:50/1985-W26-1T10:30:00", + "valid": false + }, + { + "description": "Invalid - end hour 99", + "data": "1985-W15-5T23:20:50/1985-W26-1T99:30:00", + "valid": false + }, + { + "description": "Invalid - start minute 99", + "data": "1985-W15-5T23:99:50/1985-W26-1T10:30:00", + "valid": false + }, + { + "description": "Invalid - end minute 99", + "data": "1985-W15-5T23:20:50/1985-W26-1T10:99:00", + "valid": false + }, + { + "description": "Invalid - start second 99", + "data": "1985-W15-5T23:20:99/1985-W26-1T10:30:00", + "valid": false + }, + { + "description": "Invalid - end second 99", + "data": "1985-W15-5T23:20:50/1985-W26-1T10:30:99", + "valid": false + }, + { + "description": "Invalid - letter in start year", + "data": "I985-W15-5T23:20:50/1985-W26-1T10:30:00", + "valid": false + }, + { + "description": "Invalid - letter in end year", + "data": "1985-W15-5T23:20:50/I985-W26-1T10:30:00", + "valid": false + }, + { + "description": "Invalid - letter in start week", + "data": "1985-WI5-5T23:20:50/1985-W26-1T10:30:00", + "valid": false + }, + { + "description": "Invalid - letter in end week", + "data": "1985-W15-5T23:20:50/1985-WI6-1T10:30:00", + "valid": false + }, + { + "description": "Invalid - letter in start day", + "data": "1985-W15-IT23:20:50/1985-W26-1T10:30:00", + "valid": false + }, + { + "description": "Invalid - letter in end day", + "data": "1985-W15-5T23:20:50/1985-W26-IT10:30:00", + "valid": false + }, + { + "description": "Invalid - letter in start hour", + "data": "1985-W15-5TI3:20:50/1985-W26-1T10:30:00", + "valid": false + }, + { + "description": "Invalid - letter in end hour", + "data": "1985-W15-5T23:20:50/1985-W26-1TI0:30:00", + "valid": false + }, + { + "description": "Invalid - letter in start minute", + "data": "1985-W15-5T23:I0:50/1985-W26-1T10:30:00", + "valid": false + }, + { + "description": "Invalid - letter in end minute", + "data": "1985-W15-5T23:20:50/1985-W26-1T10:I0:00", + "valid": false + }, + { + "description": "Invalid - letter in start second", + "data": "1985-W15-5T23:20:I0/1985-W26-1T10:30:00", + "valid": false + }, + { + "description": "Invalid - letter in end second", + "data": "1985-W15-5T23:20:50/1985-W26-1T10:30:I0", + "valid": false + }, + { + "description": "Invalid - too short start datetime", + "data": "1985-W15-5T23:20:5/1985-W26-1T10:30:00", + "valid": false + }, + { + "description": "Invalid - too short end datetime", + "data": "1985-W15-5T23:20:50/1985-W26-1T10:30:0", + "valid": false + }, + { + "description": "Invalid - too long start datetime", + "data": "1985-W15-5T23:20:500/1985-W26-1T10:30:00", + "valid": false + }, + { + "description": "Invalid - too long end datetime", + "data": "1985-W15-5T23:20:50/1985-W26-1T10:30:000", + "valid": false + }, + { + "description": "Invalid - extra character at start", + "data": "X1985-W15-5T23:20:50/1985-W26-1T10:30:00", + "valid": false + }, + { + "description": "Invalid - extra character at end", + "data": "1985-W15-5T23:20:50/1985-W26-1T10:30:00X", + "valid": false + }, + { + "description": "Invalid - extra character in middle", + "data": "1985-W15-5T23:20:50X/1985-W26-1T10:30:00", + "valid": false + }, + { + "description": "Invalid - space in start date", + "data": "1985-W15- 5T23:20:50/1985-W26-1T10:30:00", + "valid": false + }, + { + "description": "Invalid - space in end date", + "data": "1985-W15-5T23:20:50/1985-W26- 1T10:30:00", + "valid": false + }, + { + "description": "Invalid - space in start time", + "data": "1985-W15-5T23: 20:50/1985-W26-1T10:30:00", + "valid": false + }, + { + "description": "Invalid - space in end time", + "data": "1985-W15-5T23:20:50/1985-W26-1T10: 30:00", + "valid": false } ] }