fix: reject an out-of-range date-time offset
Assisted-by: GLM 5.3 Flash
This commit is contained in:
@@ -380,6 +380,34 @@ func TestRejectsInvalidNumbers(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestParseRejectsOffsetOutOfRange(t *testing.T) {
|
||||
for _, tok := range []string{
|
||||
"1979-05-27T07:32:00+00:60",
|
||||
"1979-05-27T07:32:00-00:99",
|
||||
"1979-05-27T07:32:00+24:00",
|
||||
"1979-05-27T07:32:00+99:99",
|
||||
} {
|
||||
if _, err := Parse([]byte("v = " + tok + "\n")); err == nil {
|
||||
t.Errorf("%q: expected an error, got none", tok)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestParseAcceptsOffsetBounds(t *testing.T) {
|
||||
tree, err := Parse([]byte("a = 1979-05-27T07:32:00+23:59\nb = 1979-05-27T07:32:00-23:59\n"))
|
||||
if err != nil {
|
||||
t.Fatalf("parse: %v", err)
|
||||
}
|
||||
a := tree["a"].(time.Time)
|
||||
if _, offset := a.Zone(); offset != 23*3600+59*60 {
|
||||
t.Fatalf("a offset = %d, want %d", offset, 23*3600+59*60)
|
||||
}
|
||||
b := tree["b"].(time.Time)
|
||||
if _, offset := b.Zone(); offset != -(23*3600 + 59*60) {
|
||||
t.Fatalf("b offset = %d", offset)
|
||||
}
|
||||
}
|
||||
|
||||
func TestAcceptsNumberEdgeCases(t *testing.T) {
|
||||
cases := map[string]any{
|
||||
"0": int64(0),
|
||||
|
||||
Reference in New Issue
Block a user