fork of indigo with slightly nicer lexgen
at main 2.4 kB view raw
1package syntax 2 3import ( 4 "bufio" 5 "fmt" 6 "os" 7 "testing" 8 9 "github.com/stretchr/testify/assert" 10) 11 12func TestInteropDatetimeValid(t *testing.T) { 13 assert := assert.New(t) 14 file, err := os.Open("testdata/datetime_syntax_valid.txt") 15 assert.NoError(err) 16 defer file.Close() 17 scanner := bufio.NewScanner(file) 18 for scanner.Scan() { 19 line := scanner.Text() 20 if len(line) == 0 || line[0] == '#' { 21 continue 22 } 23 _, err := ParseDatetimeTime(line) 24 if err != nil { 25 fmt.Println("GOOD: " + line) 26 } 27 assert.NoError(err) 28 } 29 assert.NoError(scanner.Err()) 30} 31 32func TestInteropDatetimeInvalid(t *testing.T) { 33 assert := assert.New(t) 34 file, err := os.Open("testdata/datetime_syntax_invalid.txt") 35 assert.NoError(err) 36 defer file.Close() 37 scanner := bufio.NewScanner(file) 38 for scanner.Scan() { 39 line := scanner.Text() 40 if len(line) == 0 || line[0] == '#' { 41 continue 42 } 43 _, err := ParseDatetime(line) 44 if err == nil { 45 fmt.Println("BAD: " + line) 46 } 47 assert.Error(err) 48 } 49 assert.NoError(scanner.Err()) 50} 51 52func TestInteropDatetimeTimeInvalid(t *testing.T) { 53 assert := assert.New(t) 54 file, err := os.Open("testdata/datetime_parse_invalid.txt") 55 assert.NoError(err) 56 defer file.Close() 57 scanner := bufio.NewScanner(file) 58 for scanner.Scan() { 59 line := scanner.Text() 60 if len(line) == 0 || line[0] == '#' { 61 continue 62 } 63 _, err := ParseDatetime(line) 64 if err == nil { 65 fmt.Println("BAD: " + line) 66 } 67 assert.Error(err) 68 _, err = ParseDatetimeTime(line) 69 if err == nil { 70 fmt.Println("BAD: " + line) 71 } 72 assert.Error(err) 73 } 74 assert.NoError(scanner.Err()) 75} 76 77func TestParseDatetimeLenient(t *testing.T) { 78 assert := assert.New(t) 79 80 valid := []string{ 81 "1985-04-12T23:20:50.123Z", 82 "1985-04-12T23:20:50.123", 83 "2023-08-27T19:07:00.186173", 84 "1985-04-12T23:20:50.123-00:00", 85 "1985-04-12T23:20:50.123+00:00", 86 "1985-04-12T23:20:50.123+0000", 87 "1985-04-12T23:20:50.123-0000", 88 "2023-11-12T11:20:01+0000", 89 } 90 for _, s := range valid { 91 _, err := ParseDatetimeLenient(s) 92 assert.NoError(err) 93 if err != nil { 94 fmt.Println(s) 95 } 96 } 97 98 invalid := []string{ 99 "1985-04-", 100 "", 101 "blah", 102 } 103 for _, s := range invalid { 104 _, err := ParseDatetimeLenient(s) 105 assert.Error(err) 106 } 107} 108 109func TestDatetimeNow(t *testing.T) { 110 assert := assert.New(t) 111 112 dt := DatetimeNow() 113 _, err := ParseDatetimeTime(dt.String()) 114 assert.NoError(err) 115}