Skip to content

Commit 08f7d6e

Browse files
committed
Add examples to zoneinfo hypothesis tests
1 parent 933eea5 commit 08f7d6e

File tree

1 file changed

+50
-0
lines changed

1 file changed

+50
-0
lines changed

Lib/test/test_zoneinfo/test_zoneinfo_property.py

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,15 +70,38 @@ def valid_keys():
7070
return hypothesis.strategies.sampled_from(VALID_KEYS)
7171

7272

73+
KEY_EXAMPLES = [
74+
"Africa/Abidjan",
75+
"Africa/Casablanca",
76+
"America/Los_Angeles",
77+
"America/Santiago",
78+
"Asia/Tokyo",
79+
"Australia/Sydney",
80+
"Europe/Dublin",
81+
"Europe/Lisbon",
82+
"Europe/London",
83+
"Pacific/Kiritimati",
84+
"UTC",
85+
]
86+
87+
88+
def add_key_examples(f):
89+
for key in KEY_EXAMPLES:
90+
f = hypothesis.example(key)(f)
91+
return f
92+
93+
7394
class ZoneInfoTest(ZoneInfoTestBase):
7495
module = py_zoneinfo
7596

7697
@hypothesis.given(key=valid_keys())
98+
@add_key_examples
7799
def test_str(self, key):
78100
zi = self.klass(key)
79101
self.assertEqual(str(zi), key)
80102

81103
@hypothesis.given(key=valid_keys())
104+
@add_key_examples
82105
def test_key(self, key):
83106
zi = self.klass(key)
84107

@@ -89,6 +112,13 @@ def test_key(self, key):
89112
hypothesis.strategies.datetimes(), hypothesis.strategies.times()
90113
)
91114
)
115+
@hypothesis.example(dt=datetime.datetime.min)
116+
@hypothesis.example(dt=datetime.datetime.max)
117+
@hypothesis.example(dt=datetime.datetime(1970, 1, 1))
118+
@hypothesis.example(dt=datetime.datetime(2039, 1, 1))
119+
@hypothesis.example(dt=datetime.time(0))
120+
@hypothesis.example(dt=datetime.time(12, 0))
121+
@hypothesis.example(dt=datetime.time(23, 59, 59, 999999))
92122
def test_utc(self, dt):
93123
zi = self.klass("UTC")
94124
dt_zi = dt.replace(tzinfo=zi)
@@ -113,6 +143,7 @@ def setUp(self):
113143
super().setUp()
114144

115145
@hypothesis.given(key=valid_keys())
146+
@add_key_examples
116147
def test_pickle_unpickle_cache(self, key):
117148
zi = self.klass(key)
118149
pkl_str = pickle.dumps(zi)
@@ -121,6 +152,7 @@ def test_pickle_unpickle_cache(self, key):
121152
self.assertIs(zi, zi_rt)
122153

123154
@hypothesis.given(key=valid_keys())
155+
@add_key_examples
124156
def test_pickle_unpickle_no_cache(self, key):
125157
zi = self.klass.no_cache(key)
126158
pkl_str = pickle.dumps(zi)
@@ -130,6 +162,7 @@ def test_pickle_unpickle_no_cache(self, key):
130162
self.assertEqual(str(zi), str(zi_rt))
131163

132164
@hypothesis.given(key=valid_keys())
165+
@add_key_examples
133166
def test_pickle_unpickle_cache_multiple_rounds(self, key):
134167
"""Test that pickle/unpickle is idempotent."""
135168
zi_0 = self.klass(key)
@@ -147,6 +180,7 @@ def test_pickle_unpickle_cache_multiple_rounds(self, key):
147180
self.assertIs(zi_1, zi_2)
148181

149182
@hypothesis.given(key=valid_keys())
183+
@add_key_examples
150184
def test_pickle_unpickle_no_cache_multiple_rounds(self, key):
151185
"""Test that pickle/unpickle is idempotent."""
152186
zi_cache = self.klass(key)
@@ -178,13 +212,15 @@ class ZoneInfoCacheTest(ZoneInfoTestBase):
178212
module = py_zoneinfo
179213

180214
@hypothesis.given(key=valid_keys())
215+
@add_key_examples
181216
def test_cache(self, key):
182217
zi_0 = self.klass(key)
183218
zi_1 = self.klass(key)
184219

185220
self.assertIs(zi_0, zi_1)
186221

187222
@hypothesis.given(key=valid_keys())
223+
@add_key_examples
188224
def test_no_cache(self, key):
189225
zi_0 = self.klass.no_cache(key)
190226
zi_1 = self.klass.no_cache(key)
@@ -203,13 +239,26 @@ def _is_ambiguous(self, dt):
203239
return dt.replace(fold=not dt.fold).utcoffset() == dt.utcoffset()
204240

205241
@hypothesis.given(dt=hypothesis.strategies.datetimes(), key=valid_keys())
242+
@hypothesis.example(dt=datetime.datetime.min, key="America/New_York")
243+
@hypothesis.example(dt=datetime.datetime.max, key="America/New_York")
244+
@hypothesis.example(dt=datetime.datetime(1970, 1, 1), key="America/New_York")
245+
@hypothesis.example(dt=datetime.datetime(2020, 1, 1), key="Europe/Paris")
246+
@hypothesis.example(dt=datetime.datetime(2020, 6, 1), key="Europe/Paris")
206247
def test_same_str(self, dt, key):
207248
py_dt = dt.replace(tzinfo=py_zoneinfo.ZoneInfo(key))
208249
c_dt = dt.replace(tzinfo=c_zoneinfo.ZoneInfo(key))
209250

210251
self.assertEqual(str(py_dt), str(c_dt))
211252

212253
@hypothesis.given(dt=hypothesis.strategies.datetimes(), key=valid_keys())
254+
@hypothesis.example(dt=datetime.datetime(1970, 1, 1), key="America/New_York")
255+
@hypothesis.example(dt=datetime.datetime(2020, 2, 5), key="America/New_York")
256+
@hypothesis.example(dt=datetime.datetime(2020, 8, 12), key="America/New_York")
257+
@hypothesis.example(dt=datetime.datetime(2040, 1, 1), key="Africa/Casablanca")
258+
@hypothesis.example(dt=datetime.datetime(1970, 1, 1), key="Europe/Paris")
259+
@hypothesis.example(dt=datetime.datetime(2040, 1, 1), key="Europe/Paris")
260+
@hypothesis.example(dt=datetime.datetime.min, key="Asia/Tokyo")
261+
@hypothesis.example(dt=datetime.datetime.max, key="Asia/Tokyo")
213262
def test_same_offsets_and_names(self, dt, key):
214263
py_dt = dt.replace(tzinfo=py_zoneinfo.ZoneInfo(key))
215264
c_dt = dt.replace(tzinfo=c_zoneinfo.ZoneInfo(key))
@@ -294,6 +343,7 @@ def test_same_to_utc(self, dt, key):
294343
self.assertEqual(py_utc, c_utc)
295344

296345
@hypothesis.given(key=valid_keys())
346+
@add_key_examples
297347
def test_cross_module_pickle(self, key):
298348
py_zi = py_zoneinfo.ZoneInfo(key)
299349
c_zi = c_zoneinfo.ZoneInfo(key)

0 commit comments

Comments
 (0)