Filed from PR #102 review thread (Ludo inline #102 (comment)).
Scope
Import battle-tested RFC 3339 (date-time) test vectors from an established parser's test corpus. Apply the same corpus to every SDK with an expires parser so ACCEPT and REJECT outcomes are mechanically aligned cross-SDK.
Authoritative sources to research
- RFC 3339 itself (Klyne / Newman): https://datatracker.ietf.org/doc/html/rfc3339
- Section 5.8: explicit examples (1985-04-12T23:20:50.52Z, 1996-12-19T16:39:57-08:00, etc).
- Section 5.6: grammar (date-time = full-date "T" full-time).
- Section 5.7: leap seconds (sec = 60 accepted).
- ISO 8601:2004 (RFC 3339 is a profile): https://www.iso.org/iso-8601-date-and-time-format.html
- Battle-tested parsers with their own test corpora:
- ICU (International Components for Unicode): https://unicode-org.github.io/icu/userguide/format_parse/datetime/
Edge cases the corpus MUST cover
- Leap second (sec=60) at 23:59:60Z (RFC 3339 sec 5.7).
- Lowercase t/z separators (RFC 3339 sec 5.6 allows both; ISO 8601 strict requires uppercase).
- Sub-microsecond fractional precision (7, 8, 9 fractional digits; PHP's %u format only accepts 6).
- Timezone offsets at boundary: +00:00, -00:00, +14:00 (max), -12:00 (min).
- Year 9999 + year 10000 (some parsers explode).
- Calendar validation: Feb 30, Sep 31, year 2000 leap, year 1900 non-leap.
- Month / hour / minute boundary: 00:00:00, 23:59:59 (without leap), 23:59:60 (with leap).
Current parsers to harmonize
Cross-SDK scope
Tests should assert ACCEPT and REJECT outcomes match across SDKs for each vector. Single PR that touches every language's RFC 3339 test file.
Out of scope
Do NOT propose fabricated vectors. Label as `m2-followup`.
Filed from PR #102 review thread (Ludo inline #102 (comment)).
Scope
Import battle-tested RFC 3339 (date-time) test vectors from an established parser's test corpus. Apply the same corpus to every SDK with an expires parser so ACCEPT and REJECT outcomes are mechanically aligned cross-SDK.
Authoritative sources to research
Edge cases the corpus MUST cover
Current parsers to harmonize
Cross-SDK scope
Tests should assert ACCEPT and REJECT outcomes match across SDKs for each vector. Single PR that touches every language's RFC 3339 test file.
Out of scope
Do NOT propose fabricated vectors. Label as `m2-followup`.