@@ -2146,55 +2146,157 @@ func TestRegexOptimizer(t *testing.T) {
2146
2146
}
2147
2147
}
2148
2148
2149
- func TestDefaultUTCTimeZone (t * testing.T ) {
2150
- env := testEnv (t , Variable ("x" , TimestampType ), DefaultUTCTimeZone (true ))
2151
- out , err := interpret (t , env , `
2152
- x.getFullYear() == 1970
2153
- && x.getMonth() == 0
2154
- && x.getDayOfYear() == 0
2155
- && x.getDayOfMonth() == 0
2156
- && x.getDate() == 1
2157
- && x.getDayOfWeek() == 4
2158
- && x.getHours() == 2
2159
- && x.getMinutes() == 5
2160
- && x.getSeconds() == 6
2161
- && x.getMilliseconds() == 1
2162
- && x.getFullYear('-07:30') == 1969
2163
- && x.getDayOfYear('-07:30') == 364
2164
- && x.getMonth('-07:30') == 11
2165
- && x.getDayOfMonth('-07:30') == 30
2166
- && x.getDate('-07:30') == 31
2167
- && x.getDayOfWeek('-07:30') == 3
2168
- && x.getHours('-07:30') == 18
2169
- && x.getMinutes('-07:30') == 35
2170
- && x.getSeconds('-07:30') == 6
2171
- && x.getMilliseconds('-07:30') == 1
2172
- && x.getFullYear('23:15') == 1970
2173
- && x.getDayOfYear('23:15') == 1
2174
- && x.getMonth('23:15') == 0
2175
- && x.getDayOfMonth('23:15') == 1
2176
- && x.getDate('23:15') == 2
2177
- && x.getDayOfWeek('23:15') == 5
2178
- && x.getHours('23:15') == 1
2179
- && x.getMinutes('23:15') == 20
2180
- && x.getSeconds('23:15') == 6
2181
- && x.getMilliseconds('23:15') == 1` ,
2182
- map [string ]any {
2183
- "x" : time .Unix (7506 , 1000000 ).Local (),
2184
- })
2185
- if err != nil {
2186
- t .Fatalf ("prg.Eval() failed: %v" , err )
2149
+ func TestDefaultUTCTimeZoneDisabled (t * testing.T ) {
2150
+ testEnvs := []struct {
2151
+ name string
2152
+ env * Env
2153
+ }{
2154
+ {"default" , testEnv (t , Variable ("x" , TimestampType ))},
2155
+ {"enabled" , testEnv (t , Variable ("x" , TimestampType ), DefaultUTCTimeZone (true ))},
2156
+ {"disabled" , testEnv (t , Variable ("x" , TimestampType ), DefaultUTCTimeZone (false ))},
2157
+ }
2158
+ exprs := []struct {
2159
+ name string
2160
+ value string
2161
+ envOut map [string ]ref.Val
2162
+ }{
2163
+ {
2164
+ name : "default-timezone" ,
2165
+ value : `
2166
+ x.getFullYear() == 1970
2167
+ && x.getMonth() == 0
2168
+ && x.getDayOfYear() == 0
2169
+ && x.getDayOfMonth() == 0
2170
+ && x.getDate() == 1
2171
+ && x.getDayOfWeek() == 4
2172
+ && x.getHours() == 2
2173
+ && x.getMinutes() == 5
2174
+ && x.getSeconds() == 6
2175
+ && x.getMilliseconds() == 1` ,
2176
+ envOut : map [string ]ref.Val {
2177
+ "default" : types .True ,
2178
+ "enabled" : types .True ,
2179
+ "disabled" : types .False ,
2180
+ },
2181
+ },
2182
+ {
2183
+ name : "default-local-year" ,
2184
+ value : `x.getFullYear()` ,
2185
+ envOut : map [string ]ref.Val {
2186
+ "default" : types .Int (1970 ),
2187
+ "enabled" : types .Int (1970 ),
2188
+ "disabled" : types .Int (1969 ),
2189
+ },
2190
+ },
2191
+ {
2192
+ name : "default-local-day-of-year" ,
2193
+ value : `x.getDayOfYear()` ,
2194
+ envOut : map [string ]ref.Val {
2195
+ "default" : types .Int (0 ),
2196
+ "enabled" : types .Int (0 ),
2197
+ "disabled" : types .Int (364 ),
2198
+ },
2199
+ },
2200
+ {
2201
+ name : "default-local-month" ,
2202
+ value : `x.getMonth()` ,
2203
+ envOut : map [string ]ref.Val {
2204
+ "default" : types .Int (0 ),
2205
+ "enabled" : types .Int (0 ),
2206
+ "disabled" : types .Int (11 ),
2207
+ },
2208
+ },
2209
+ {
2210
+ name : "default-local-day-of-month" ,
2211
+ value : `
2212
+ x.getDayOfMonth() == 30
2213
+ && x.getDate() == 31` ,
2214
+ envOut : map [string ]ref.Val {
2215
+ "default" : types .False ,
2216
+ "enabled" : types .False ,
2217
+ "disabled" : types .True ,
2218
+ },
2219
+ },
2220
+ {
2221
+ name : "default-local-dates" ,
2222
+ value : `x.getDayOfWeek()` ,
2223
+ envOut : map [string ]ref.Val {
2224
+ "default" : types .Int (4 ),
2225
+ "enabled" : types .Int (4 ),
2226
+ "disabled" : types .Int (3 ),
2227
+ },
2228
+ },
2229
+ {
2230
+ name : "default-local-times" ,
2231
+ value : `
2232
+ x.getHours() == 18
2233
+ && x.getMinutes() == 5
2234
+ && x.getSeconds() == 6
2235
+ && x.getMilliseconds() == 1` ,
2236
+ envOut : map [string ]ref.Val {
2237
+ "default" : types .False ,
2238
+ "enabled" : types .False ,
2239
+ "disabled" : types .True ,
2240
+ },
2241
+ },
2242
+ {
2243
+ name : "explicit" ,
2244
+ value : `
2245
+ x.getFullYear('-07:30') == 1969
2246
+ && x.getDayOfYear('-07:30') == 364
2247
+ && x.getMonth('-07:30') == 11
2248
+ && x.getDayOfMonth('-07:30') == 30
2249
+ && x.getDate('-07:30') == 31
2250
+ && x.getDayOfWeek('-07:30') == 3
2251
+ && x.getHours('-07:30') == 18
2252
+ && x.getMinutes('-07:30') == 35
2253
+ && x.getSeconds('-07:30') == 6
2254
+ && x.getMilliseconds('-07:30') == 1
2255
+ && x.getFullYear('23:15') == 1970
2256
+ && x.getDayOfYear('23:15') == 1
2257
+ && x.getMonth('23:15') == 0
2258
+ && x.getDayOfMonth('23:15') == 1
2259
+ && x.getDate('23:15') == 2
2260
+ && x.getDayOfWeek('23:15') == 5
2261
+ && x.getHours('23:15') == 1
2262
+ && x.getMinutes('23:15') == 20
2263
+ && x.getSeconds('23:15') == 6
2264
+ && x.getMilliseconds('23:15') == 1` ,
2265
+ envOut : map [string ]ref.Val {
2266
+ "default" : types .True ,
2267
+ "enabled" : types .True ,
2268
+ "disabled" : types .True ,
2269
+ },
2270
+ },
2187
2271
}
2188
- if out != types .True {
2189
- t .Errorf ("Eval() got %v, wanted true" , out )
2272
+
2273
+ offset , _ := time .ParseDuration ("-8h" )
2274
+ vars := map [string ]any {
2275
+ "x" : time .Unix (7506 , 1000000 ).In (time .FixedZone ("" , int (offset .Seconds ()))),
2276
+ }
2277
+ for _ , e := range testEnvs {
2278
+ te := e
2279
+ for _ , expr := range exprs {
2280
+ ex := expr
2281
+ t .Run (fmt .Sprintf ("%s/%s" , te .name , ex .name ), func (t * testing.T ) {
2282
+ env := te .env
2283
+ expr := ex .value
2284
+ out , err := interpret (t , env , expr , vars )
2285
+ if err != nil {
2286
+ t .Fatal (err )
2287
+ }
2288
+ if out .Equal (ex .envOut [te .name ]) != types .True {
2289
+ t .Errorf ("interpret got %v, wanted %v" , out , ex .envOut [te .name ])
2290
+ }
2291
+ })
2292
+ }
2190
2293
}
2191
2294
}
2192
2295
2193
2296
func TestDefaultUTCTimeZoneExtension (t * testing.T ) {
2194
2297
env := testEnv (t ,
2195
2298
Variable ("x" , TimestampType ),
2196
2299
Variable ("y" , DurationType ),
2197
- DefaultUTCTimeZone (true ),
2198
2300
)
2199
2301
env , err := env .Extend ()
2200
2302
if err != nil {
@@ -2220,7 +2322,7 @@ func TestDefaultUTCTimeZoneExtension(t *testing.T) {
2220
2322
}
2221
2323
2222
2324
func TestDefaultUTCTimeZoneError (t * testing.T ) {
2223
- env := testEnv (t , Variable ("x" , TimestampType ), DefaultUTCTimeZone ( true ) )
2325
+ env := testEnv (t , Variable ("x" , TimestampType ))
2224
2326
out , err := interpret (t , env , `
2225
2327
x.getFullYear(':xx') == 1969
2226
2328
|| x.getDayOfYear('xx:') == 364
0 commit comments