41 lines
1.9 KiB
Go
41 lines
1.9 KiB
Go
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)
|
|
}
|
|
}
|