package parse import ( "testing" "git.makaay.nl/mauricem/go-parsekit/parse" ) func TestStartDateTime(t *testing.T) { parser := newParser() wrapper := func(p *parse.API) { parser.parseDateTime(p) } testParse(t, parser, wrapper, parseTest{"INVALID", "{}", "unexpected input (expected a date and/or time) at start of file"}) } func TestDateTime(t *testing.T) { for _, test := range []parseTest{ {`x=1979-05-27`, `{"x": 1979-05-27}`, ``}, {`x=00:00:00`, `{"x": 00:00:00}`, ``}, {`x=23:59:59`, `{"x": 23:59:59}`, ``}, {`x=12:10:08.12121212121212`, `{"x": 12:10:08.121212121}`, ``}, {`x=1979-05-28T01:01:01`, `{"x": 1979-05-28 01:01:01}`, ``}, {`x=1979-05-28 01:01:01`, `{"x": 1979-05-28 01:01:01}`, ``}, {`x=1979-05-27T07:32:00Z`, `{"x": 1979-05-27T07:32:00Z}`, ``}, {`x=1979-05-27 07:33:00Z`, `{"x": 1979-05-27T07:33:00Z}`, ``}, {`x=1979-05-27 07:34:00+07:00`, `{"x": 1979-05-27T07:34:00+07:00}`, ``}, {`x=1979-05-27 07:34:00-07:00`, `{"x": 1979-05-27T07:34:00-07:00}`, ``}, {`x=1985-03-31 23:59:59+00:00`, `{"x": 1985-03-31T23:59:59Z}`, ``}, {`x=2000-09-10 00:00:00.000000000+00:00`, `{"x": 2000-09-10T00:00:00Z}`, ``}, {`x=2003-11-01 01:02:03.999999999999+10:00`, `{"x": 2003-11-01T01:02:03.999999999+10:00}`, ``}, {`x=2007-12-25 04:00:04.1111-10:30`, `{"x": 2007-12-25T04:00:04.1111-10:30}`, ``}, {`x=2021-02-01 10:10:10.101010203040Z`, `{"x": 2021-02-01T10:10:10.101010203Z}`, ``}, // TODO ugly column, should be at start or at the actual wrong part {`x=2000-13-01`, `{}`, `invalid date/time value 2000-13-01: parsing time "2000-13-01": month out of range at line 1, column 13`}, {`x=2000-02-31`, `{}`, `invalid date/time value 2000-02-31: parsing time "2000-02-31": day out of range at line 1, column 13`}, {`x=25:01:01`, `{}`, `invalid date/time value 25:01:01: parsing time "25:01:01": hour out of range at line 1, column 11`}, } { p := newParser() testParse(t, p, p.startDocument, test) } }