@@ -183,22 +183,50 @@ func TestMalformedTZData(t *testing.T) {
183
183
}
184
184
}
185
185
186
- func TestLoadLocationFromTZDataSlim (t * testing.T ) {
187
- // A 2020b slim tzdata for Europe/Berlin
188
- tzData := "TZif2\x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x01 \x00 \x00 \x00 \x01 \x00 \x00 \x00 \x00 \x00 \x00 \x00 TZif2\x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 <\x00 \x00 \x00 \x04 \x00 \x00 \x00 \x12 \xff \xff \xff \xff o\xa2 a\xf8 \xff \xff \xff \xff \x9b \f \x17 `\xff \xff \xff \xff \x9b \xd5 \xda \xf0 \xff \xff \xff \xff \x9c ٮ\x90 \xff \xff \xff \xff \x9d \xa4 \xb5 \x90 \xff \xff \xff \xff \x9e \xb9 \x90 \x90 \xff \xff \xff \xff \x9f \x84 \x97 \x90 \xff \xff \xff \xff \xc8 \t q\x90 \xff \xff \xff \xff \xcc \xe7 K\x10 \xff \xff \xff \xff ͩ\x17 \x90 \xff \xff \xff \xff \u03a2 C\x10 \xff \xff \xff \xff ϒ4\x10 \xff \xff \xff \xff Ђ%\x10 \xff \xff \xff \xff \xd1 r\x16 \x10 \xff \xff \xff \xff Ѷ\x96 \x00 \xff \xff \xff \xff \xd2 X\xbe \x80 \xff \xff \xff \xff ҡO\x10 \xff \xff \xff \xff \xd3 c\x1b \x90 \xff \xff \xff \xff \xd4 K#\x90 \xff \xff \xff \xff \xd5 9\xd1 \xff \xff \xff \xff \xd5 g\xe7 \x90 \xff \xff \xff \xff ըs\x00 \xff \xff \xff \xff \xd6 )\xb4 \x10 \xff \xff \xff \xff \xd7 ,\x1a \x10 \xff \xff \xff \xff \xd8 \t \x96 \x10 \xff \xff \xff \xff \xd9 \x02 \xc1 \x90 \xff \xff \xff \xff \xd9 \xe9 x\x10 \x00 \x00 \x00 \x00 \x13 MD\x10 \x00 \x00 \x00 \x00 \x14 3\xfa \x90 \x00 \x00 \x00 \x00 \x15 #\xeb \x90 \x00 \x00 \x00 \x00 \x16 \x13 ܐ\x00 \x00 \x00 \x00 \x17 \x03 ͐\x00 \x00 \x00 \x00 \x17 \xf3 \xbe \x90 \x00 \x00 \x00 \x00 \x18 㯐\x00 \x00 \x00 \x00 \x19 Ӡ\x90 \x00 \x00 \x00 \x00 \x1a Ñ\x90 \x00 \x00 \x00 \x00 \x1b \xbc \xbd \x10 \x00 \x00 \x00 \x00 \x1c \xac \xae \x10 \x00 \x00 \x00 \x00 \x1d \x9c \x9f \x10 \x00 \x00 \x00 \x00 \x1e \x8c \x90 \x10 \x00 \x00 \x00 \x00 \x1f |\x81 \x10 \x00 \x00 \x00 \x00 lr\x10 \x00 \x00 \x00 \x00 !\\ c\x10 \x00 \x00 \x00 \x00 \" LT\x10 \x00 \x00 \x00 \x00 #<E\x10 \x00 \x00 \x00 \x00 $,6\x10 \x00 \x00 \x00 \x00 %\x1c '\x10 \x00 \x00 \x00 \x00 &\f \x18 \x10 \x00 \x00 \x00 \x00 '\x05 C\x90 \x00 \x00 \x00 \x00 '\xf5 4\x90 \x00 \x00 \x00 \x00 (\xe5 %\x90 \x00 \x00 \x00 \x00 )\xd5 \x16 \x90 \x00 \x00 \x00 \x00 *\xc5 \a \x90 \x00 \x00 \x00 \x00 +\xb4 \xf8 \x90 \x00 \x00 \x00 \x00 ,\xa4 \xe9 \x90 \x00 \x00 \x00 \x00 -\x94 ڐ\x00 \x00 \x00 \x00 .\x84 ː\x00 \x00 \x00 \x00 /t\xbc \x90 \x00 \x00 \x00 \x00 0d\xad \x90 \x00 \x00 \x00 \x00 1]\xd9 \x10 \x02 \x01 \x02 \x01 \x02 \x01 \x02 \x01 \x02 \x01 \x02 \x01 \x02 \x01 \x03 \x01 \x02 \x01 \x02 \x01 \x03 \x01 \x02 \x01 \x02 \x01 \x02 \x01 \x02 \x01 \x02 \x01 \x02 \x01 \x02 \x01 \x02 \x01 \x02 \x01 \x02 \x01 \x02 \x01 \x02 \x01 \x02 \x01 \x02 \x01 \x02 \x01 \x02 \x01 \x02 \x01 \x02 \x01 \x02 \x01 \x00 \x00 \f \x88 \x00 \x00 \x00 \x00 \x1c \x01 \x04 \x00 \x00 \x0e \x10 \x00 \t \x00 \x00 *0\x01 \r LMT\x00 CEST\x00 CET\x00 CEMT\x00 \n CET-1CEST,M3.5.0,M10.5.0/3\n "
186
+ var slimTests = []struct {
187
+ zoneName string
188
+ tzData string
189
+ wantName string
190
+ wantOffset int
191
+ }{
192
+ {
193
+ // 2020b slim tzdata for Europe/Berlin.
194
+ zoneName : "Europe/Berlin" ,
195
+ tzData : "TZif2\x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x01 \x00 \x00 \x00 \x01 \x00 \x00 \x00 \x00 \x00 \x00 \x00 TZif2\x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 <\x00 \x00 \x00 \x04 \x00 \x00 \x00 \x12 \xff \xff \xff \xff o\xa2 a\xf8 \xff \xff \xff \xff \x9b \f \x17 `\xff \xff \xff \xff \x9b \xd5 \xda \xf0 \xff \xff \xff \xff \x9c ٮ\x90 \xff \xff \xff \xff \x9d \xa4 \xb5 \x90 \xff \xff \xff \xff \x9e \xb9 \x90 \x90 \xff \xff \xff \xff \x9f \x84 \x97 \x90 \xff \xff \xff \xff \xc8 \t q\x90 \xff \xff \xff \xff \xcc \xe7 K\x10 \xff \xff \xff \xff ͩ\x17 \x90 \xff \xff \xff \xff \u03a2 C\x10 \xff \xff \xff \xff ϒ4\x10 \xff \xff \xff \xff Ђ%\x10 \xff \xff \xff \xff \xd1 r\x16 \x10 \xff \xff \xff \xff Ѷ\x96 \x00 \xff \xff \xff \xff \xd2 X\xbe \x80 \xff \xff \xff \xff ҡO\x10 \xff \xff \xff \xff \xd3 c\x1b \x90 \xff \xff \xff \xff \xd4 K#\x90 \xff \xff \xff \xff \xd5 9\xd1 \xff \xff \xff \xff \xd5 g\xe7 \x90 \xff \xff \xff \xff ըs\x00 \xff \xff \xff \xff \xd6 )\xb4 \x10 \xff \xff \xff \xff \xd7 ,\x1a \x10 \xff \xff \xff \xff \xd8 \t \x96 \x10 \xff \xff \xff \xff \xd9 \x02 \xc1 \x90 \xff \xff \xff \xff \xd9 \xe9 x\x10 \x00 \x00 \x00 \x00 \x13 MD\x10 \x00 \x00 \x00 \x00 \x14 3\xfa \x90 \x00 \x00 \x00 \x00 \x15 #\xeb \x90 \x00 \x00 \x00 \x00 \x16 \x13 ܐ\x00 \x00 \x00 \x00 \x17 \x03 ͐\x00 \x00 \x00 \x00 \x17 \xf3 \xbe \x90 \x00 \x00 \x00 \x00 \x18 㯐\x00 \x00 \x00 \x00 \x19 Ӡ\x90 \x00 \x00 \x00 \x00 \x1a Ñ\x90 \x00 \x00 \x00 \x00 \x1b \xbc \xbd \x10 \x00 \x00 \x00 \x00 \x1c \xac \xae \x10 \x00 \x00 \x00 \x00 \x1d \x9c \x9f \x10 \x00 \x00 \x00 \x00 \x1e \x8c \x90 \x10 \x00 \x00 \x00 \x00 \x1f |\x81 \x10 \x00 \x00 \x00 \x00 lr\x10 \x00 \x00 \x00 \x00 !\\ c\x10 \x00 \x00 \x00 \x00 \" LT\x10 \x00 \x00 \x00 \x00 #<E\x10 \x00 \x00 \x00 \x00 $,6\x10 \x00 \x00 \x00 \x00 %\x1c '\x10 \x00 \x00 \x00 \x00 &\f \x18 \x10 \x00 \x00 \x00 \x00 '\x05 C\x90 \x00 \x00 \x00 \x00 '\xf5 4\x90 \x00 \x00 \x00 \x00 (\xe5 %\x90 \x00 \x00 \x00 \x00 )\xd5 \x16 \x90 \x00 \x00 \x00 \x00 *\xc5 \a \x90 \x00 \x00 \x00 \x00 +\xb4 \xf8 \x90 \x00 \x00 \x00 \x00 ,\xa4 \xe9 \x90 \x00 \x00 \x00 \x00 -\x94 ڐ\x00 \x00 \x00 \x00 .\x84 ː\x00 \x00 \x00 \x00 /t\xbc \x90 \x00 \x00 \x00 \x00 0d\xad \x90 \x00 \x00 \x00 \x00 1]\xd9 \x10 \x02 \x01 \x02 \x01 \x02 \x01 \x02 \x01 \x02 \x01 \x02 \x01 \x02 \x01 \x03 \x01 \x02 \x01 \x02 \x01 \x03 \x01 \x02 \x01 \x02 \x01 \x02 \x01 \x02 \x01 \x02 \x01 \x02 \x01 \x02 \x01 \x02 \x01 \x02 \x01 \x02 \x01 \x02 \x01 \x02 \x01 \x02 \x01 \x02 \x01 \x02 \x01 \x02 \x01 \x02 \x01 \x02 \x01 \x02 \x01 \x00 \x00 \f \x88 \x00 \x00 \x00 \x00 \x1c \x01 \x04 \x00 \x00 \x0e \x10 \x00 \t \x00 \x00 *0\x01 \r LMT\x00 CEST\x00 CET\x00 CEMT\x00 \n CET-1CEST,M3.5.0,M10.5.0/3\n " ,
196
+ wantName : "CET" ,
197
+ wantOffset : 3600 ,
198
+ },
199
+ {
200
+ // 2021a slim tzdata for America/Nuuk.
201
+ zoneName : "America/Nuuk" ,
202
+ tzData : "TZif3\x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x01 \x00 \x00 \x00 \x01 \x00 \x00 \x00 \x00 \x00 \x00 \x00 TZif3\x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \" \x00 \x00 \x00 \x03 \x00 \x00 \x00 \f \xff \xff \xff \xff \x9b \x80 h\x00 \x00 \x00 \x00 \x00 \x13 M|P\x00 \x00 \x00 \x00 \x14 3\xfa \x90 \x00 \x00 \x00 \x00 \x15 #\xeb \x90 \x00 \x00 \x00 \x00 \x16 \x13 ܐ\x00 \x00 \x00 \x00 \x17 \x03 ͐\x00 \x00 \x00 \x00 \x17 \xf3 \xbe \x90 \x00 \x00 \x00 \x00 \x18 㯐\x00 \x00 \x00 \x00 \x19 Ӡ\x90 \x00 \x00 \x00 \x00 \x1a Ñ\x90 \x00 \x00 \x00 \x00 \x1b \xbc \xbd \x10 \x00 \x00 \x00 \x00 \x1c \xac \xae \x10 \x00 \x00 \x00 \x00 \x1d \x9c \x9f \x10 \x00 \x00 \x00 \x00 \x1e \x8c \x90 \x10 \x00 \x00 \x00 \x00 \x1f |\x81 \x10 \x00 \x00 \x00 \x00 lr\x10 \x00 \x00 \x00 \x00 !\\ c\x10 \x00 \x00 \x00 \x00 \" LT\x10 \x00 \x00 \x00 \x00 #<E\x10 \x00 \x00 \x00 \x00 $,6\x10 \x00 \x00 \x00 \x00 %\x1c '\x10 \x00 \x00 \x00 \x00 &\f \x18 \x10 \x00 \x00 \x00 \x00 '\x05 C\x90 \x00 \x00 \x00 \x00 '\xf5 4\x90 \x00 \x00 \x00 \x00 (\xe5 %\x90 \x00 \x00 \x00 \x00 )\xd5 \x16 \x90 \x00 \x00 \x00 \x00 *\xc5 \a \x90 \x00 \x00 \x00 \x00 +\xb4 \xf8 \x90 \x00 \x00 \x00 \x00 ,\xa4 \xe9 \x90 \x00 \x00 \x00 \x00 -\x94 ڐ\x00 \x00 \x00 \x00 .\x84 ː\x00 \x00 \x00 \x00 /t\xbc \x90 \x00 \x00 \x00 \x00 0d\xad \x90 \x00 \x00 \x00 \x00 1]\xd9 \x10 \x01 \x02 \x01 \x02 \x01 \x02 \x01 \x02 \x01 \x02 \x01 \x02 \x01 \x02 \x01 \x02 \x01 \x02 \x01 \x02 \x01 \x02 \x01 \x02 \x01 \x02 \x01 \x02 \x01 \x02 \x01 \x02 \x01 \x02 \xff \xff π\x00 \x00 \xff \xff \xd5 \xd0 \x00 \x04 \xff \xff \xe3 \xe0 \x01 \b LMT\x00 -03\x00 -02\x00 \n <-03>3<-02>,M3.5.0/-2,M10.5.0/-1\n " ,
203
+ wantName : "-03" ,
204
+ wantOffset : - 10800 ,
205
+ },
206
+ {
207
+ // 2021a slim tzdata for Asia/Gaza.
208
+ zoneName : "Asia/Gaza" ,
209
+ tzData : "TZif3\x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x01 \x00 \x00 \x00 \x01 \x00 \x00 \x00 \x00 \x00 \x00 \x00 TZif3\x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 \x00 s\x00 \x00 \x00 \x05 \x00 \x00 \x00 \x15 \xff \xff \xff \xff }\xbd J\xb0 \xff \xff \xff \xff \xc8 Y\xcf \x00 \xff \xff \xff \xff \xc8 \xfa \xa6 \x00 \xff \xff \xff \xff \xc9 8\x9c \x80 \xff \xff \xff \xff \xcc \xe5 \xeb \x80 \xff \xff \xff \xff ͬ\xfe \x00 \xff \xff \xff \xff \xce \xc7 \x1f \x00 \xff \xff \xff \xff Ϗ\x83 \x00 \xff \xff \xff \xff Щ\xa4 \x00 \xff \xff \xff \xff ф}\x00 \xff \xff \xff \xff Ҋ׀\xff \xff \xff \xff \xd3 e\xb0 \x80 \xff \xff \xff \xff \xd4 l\v \x00 \xff \xff \xff \xff \xe8 6c`\xff \xff \xff \xff \xe8 \xf4 -P\xff \xff \xff \xff \xea \v \xb9 `\xff \xff \xff \xff \xea \xd5 `\xd0 \xff \xff \xff \xff \xeb \xec \xfa \xf0 \xff \xff \xff \xff \xec \xb5 m\x00 \xff \xff \xff \xff \xed \xcf \u007f \xf0 \xff \xff \xff \xff \xee \x97 \xf2 \x00 \xff \xff \xff \xff ﰳp\xff \xff \xff \xff \xf0 y%\x80 \xff \xff \xff \xff \xf1 \x91 \xe6 \xf0 \xff \xff \xff \xff \xf2 ZY\x00 \xff \xff \xff \xff \xf3 s\x1a p\xff \xff \xff \xff \xf4 ;\x8c \x80 \xff \xff \xff \xff \xf5 U\x9f p\xff \xff \xff \xff \xf6 \x1e \x11 \x80 \xff \xff \xff \xff \xf7 6\xd2 \xf0 \xff \xff \xff \xff \xf7 \xff E\x00 \xff \xff \xff \xff \xf9 \x18 \x06 p\xff \xff \xff \xff \xf9 \xe1 \xca \x00 \xff \xff \xff \xff \xfa \xf9 9\xf0 \xff \xff \xff \xff \xfb 'BP\x00 \x00 \x00 \x00 \b |\x8b \xe0 \x00 \x00 \x00 \x00 \b \xfd \xb0 \xd0 \x00 \x00 \x00 \x00 \t \xf6 \xea `\x00 \x00 \x00 \x00 \n \xa6 3\xd0 \x00 \x00 \x00 \x00 \x13 \xe9 \xfc `\x00 \x00 \x00 \x00 \x14 ![`\x00 \x00 \x00 \x00 \x1a \xfa \xc6 `\x00 \x00 \x00 \x00 \x1b \x8e n`\x00 \x00 \x00 \x00 \x1c \xbe \xf8 \xe0 \x00 \x00 \x00 \x00 \x1d w|\xd0 \x00 \x00 \x00 \x00 \x1e \xcc \xff `\x00 \x00 \x00 \x00 \x1f `\x99 P\x00 \x00 \x00 \x00 \x82 \xb1 `\x00 \x00 \x00 \x00 !I\xb5 \xd0 \x00 \x00 \x00 \x00 \" ^\x9e \xe0 \x00 \x00 \x00 \x00 # ]P\x00 \x00 \x00 \x00 $Z0`\x00 \x00 \x00 \x00 %\x00 ?P\x00 \x00 \x00 \x00 &\v \xed \xe0 \x00 \x00 \x00 \x00 &\xd6 \xe6 \xd0 \x00 \x00 \x00 \x00 '\xeb \xcf \xe0 \x00 \x00 \x00 \x00 (\xc0 \x03 P\x00 \x00 \x00 \x00 )\xd4 \xec `\x00 \x00 \x00 \x00 *\xa9 \x1f \xd0 \x00 \x00 \x00 \x00 +\xbb e\xe0 \x00 \x00 \x00 \x00 ,\x89 \x01 \xd0 \x00 \x00 \x00 \x00 -\x9b G\xe0 \x00 \x00 \x00 \x00 ._\xa9 P\x00 \x00 \x00 \x00 /{)\xe0 \x00 \x00 \x00 \x00 0H\xc5 \xd0 \x00 \x00 \x00 \x00 0\xe7 \a \xe0 \x00 \x00 \x00 \x00 1dF`\x00 \x00 \x00 \x00 2A\xc2 `\x00 \x00 \x00 \x00 3D(`\x00 \x00 \x00 \x00 4!\xa4 `\x00 \x00 \x00 \x00 5$\n `\x00 \x00 \x00 \x00 6\x01 \x86 `\x00 \x00 \x00 \x00 7\x16 a`\x00 \x00 \x00 \x00 8\x06 DP\x00 \x00 \x00 \x00 8\xff }\xe0 \x00 \x00 \x00 \x00 9\xef `\xd0 \x00 \x00 \x00 \x00 :\xdf _\xe0 \x00 \x00 \x00 \x00 ;\xcf B\xd0 \x00 \x00 \x00 \x00 <\xbf A\xe0 \x00 \x00 \x00 \x00 =\xaf $\xd0 \x00 \x00 \x00 \x00 >\x9f #\xe0 \x00 \x00 \x00 \x00 ?\x8f \x06 \xd0 \x00 \x00 \x00 \x00 @\u007f \x05 \xe0 \x00 \x00 \x00 \x00 A\\ \x81 \xe0 \x00 \x00 \x00 \x00 B^\xe7 \xe0 \x00 \x00 \x00 \x00 CA\xb7 \xf0 \x00 \x00 \x00 \x00 D-\xa6 `\x00 \x00 \x00 \x00 E\x12 \xfd P\x00 \x00 \x00 \x00 F\x0e \xd9 \xe0 \x00 \x00 \x00 \x00 F\xe8 op\x00 \x00 \x00 \x00 G\xec \x18 \xe0 \x00 \x00 \x00 \x00 H\xb7 \x11 \xd0 \x00 \x00 \x00 \x00 I\xcb \xfa \xe0 \x00 \x00 \x00 \x00 J\xa0 <`\x00 \x00 \x00 \x00 K\xad .\x9c \x00 \x00 \x00 \x00 La\xbd \xd0 \x00 \x00 \x00 \x00 M\x94 \xf9 \x9c \x00 \x00 \x00 \x00 N5\xc2 P\x00 \x00 \x00 \x00 Ot\xdb `\x00 \x00 \x00 \x00 P[\x91 \xe0 \x00 \x00 \x00 \x00 QT\xbd `\x00 \x00 \x00 \x00 RD\xa0 P\x00 \x00 \x00 \x00 S4\x9f `\x00 \x00 \x00 \x00 TIlP\x00 \x00 \x00 \x00 U\x15 \xd2 \xe0 \x00 \x00 \x00 \x00 V)\\ `\x00 \x00 \x00 \x00 V\xf5 \xc2 \xf0 \x00 \x00 \x00 \x00 X\x13 \xca `\x00 \x00 \x00 \x00 Xդ\xf0 \x00 \x00 \x00 \x00 Y\xf3 \xac `\x00 \x00 \x00 \x00 Z\xb5 \x86 \xf0 \x00 \x00 \x00 \x00 [ӎ`\x00 \x00 \x00 \x00 \\ \x9d C\xe0 \x00 \x00 \x00 \x00 ]\xb3 bP\x00 \x00 \x00 \x00 ^~w`\x02 \x01 \x02 \x01 \x02 \x01 \x02 \x01 \x02 \x01 \x02 \x01 \x02 \x01 \x02 \x01 \x02 \x01 \x02 \x01 \x02 \x01 \x02 \x01 \x02 \x01 \x02 \x01 \x02 \x01 \x02 \x01 \x02 \x01 \x04 \x03 \x04 \x03 \x04 \x03 \x04 \x03 \x04 \x03 \x04 \x03 \x04 \x03 \x04 \x03 \x04 \x03 \x04 \x03 \x04 \x03 \x04 \x03 \x04 \x03 \x04 \x03 \x04 \x03 \x04 \x02 \x01 \x02 \x01 \x02 \x01 \x02 \x01 \x02 \x01 \x02 \x01 \x02 \x01 \x02 \x01 \x02 \x01 \x02 \x01 \x02 \x01 \x02 \x01 \x02 \x01 \x02 \x01 \x02 \x01 \x02 \x01 \x02 \x01 \x02 \x01 \x02 \x01 \x02 \x01 \x02 \x01 \x02 \x01 \x02 \x01 \x02 \x01 \x02 \x01 \x00 \x00 P\x00 \x00 \x00 \x00 *0\x01 \x04 \x00 \x00 \x1c \x00 \t \x00 \x00 *0\x01 \r \x00 \x00 \x1c \x00 \x11 LMT\x00 EEST\x00 EET\x00 IDT\x00 IST\x00 \n EET-2EEST,M3.4.4/48,M10.4.4/49\n " ,
210
+ wantName : "EET" ,
211
+ wantOffset : 7200 ,
212
+ },
213
+ }
189
214
190
- reference , err := time .LoadLocationFromTZData ("Europe/Berlin" , []byte (tzData ))
191
- if err != nil {
192
- t .Fatal (err )
193
- }
215
+ func TestLoadLocationFromTZDataSlim (t * testing.T ) {
216
+ for _ , test := range slimTests {
217
+ reference , err := time .LoadLocationFromTZData (test .zoneName , []byte (test .tzData ))
218
+ if err != nil {
219
+ t .Fatal (err )
220
+ }
194
221
195
- d := time .Date (2020 , time .October , 29 , 15 , 30 , 0 , 0 , reference )
196
- tzName , tzOffset := d .Zone ()
197
- if want := "CET" ; tzName != want {
198
- t .Errorf ("Zone name == %s, want %s" , tzName , want )
199
- }
200
- if want := 3600 ; tzOffset != want {
201
- t .Errorf ("Zone offset == %d, want %d" , tzOffset , want )
222
+ d := time .Date (2020 , time .October , 29 , 15 , 30 , 0 , 0 , reference )
223
+ tzName , tzOffset := d .Zone ()
224
+ if tzName != test .wantName {
225
+ t .Errorf ("Zone name == %s, want %s" , tzName , test .wantName )
226
+ }
227
+ if tzOffset != test .wantOffset {
228
+ t .Errorf ("Zone offset == %d, want %d" , tzOffset , test .wantOffset )
229
+ }
202
230
}
203
231
}
204
232
@@ -263,7 +291,8 @@ func TestTzsetOffset(t *testing.T) {
263
291
{"+08" , 8 * 60 * 60 , "" , true },
264
292
{"-01:02:03" , - 1 * 60 * 60 - 2 * 60 - 3 , "" , true },
265
293
{"01" , 1 * 60 * 60 , "" , true },
266
- {"100" , 0 , "" , false },
294
+ {"100" , 100 * 60 * 60 , "" , true },
295
+ {"1000" , 0 , "" , false },
267
296
{"8PDT" , 8 * 60 * 60 , "PDT" , true },
268
297
} {
269
298
off , out , ok := time .TzsetOffset (test .in )
@@ -288,6 +317,7 @@ func TestTzsetRule(t *testing.T) {
288
317
{"30/03:00:00" , time.Rule {Kind : time .RuleDOY , Day : 30 , Time : 3 * 60 * 60 }, "" , true },
289
318
{"M4.5.6/03:00:00" , time.Rule {Kind : time .RuleMonthWeekDay , Mon : 4 , Week : 5 , Day : 6 , Time : 3 * 60 * 60 }, "" , true },
290
319
{"M4.5.7/03:00:00" , time.Rule {}, "" , false },
320
+ {"M4.5.6/-04" , time.Rule {Kind : time .RuleMonthWeekDay , Mon : 4 , Week : 5 , Day : 6 , Time : - 4 * 60 * 60 }, "" , true },
291
321
} {
292
322
r , out , ok := time .TzsetRule (test .in )
293
323
if r != test .r || out != test .out || ok != test .ok {
0 commit comments