Skip to content

Commit 036b13d

Browse files
committed
Merge branch 'feature/fix-almost-equal'
2 parents 9579de2 + f5450c1 commit 036b13d

File tree

3 files changed

+63
-3
lines changed

3 files changed

+63
-3
lines changed

NEWS.rst

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,16 @@ API Additions
66

77
* Add assert_not_almost_equal().
88

9+
Improvements
10+
------------
11+
12+
* assert_almost_equal(): Raise ValueError if diff <= 0.
13+
914
Bug Fixes
1015
---------
1116

17+
* assert_almost_equal() would never fail if a delta was supplied and the
18+
second number was smaller than the first.
1219
* Use fail() instead of raise AssertionError in a few assertions.
1320

1421
News in asserts 0.7.2

asserts/__init__.py

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -167,12 +167,14 @@ def assert_almost_equal(first, second, places=None, msg=None, delta=None):
167167
AssertionError: 5 != 5.001 within 7 places
168168
>>> assert_almost_equal(5, 5.001, places=2)
169169
>>> assert_almost_equal(5, 5.001, delta=0.1)
170-
171170
"""
171+
172172
if delta is not None and places is not None:
173173
raise TypeError("'places' and 'delta' are mutually exclusive")
174174
if delta is not None:
175-
diff = second - first
175+
if delta <= 0:
176+
raise ValueError("delta must be larger than 0")
177+
diff = abs(second - first)
176178
success = diff < delta
177179
detail_msg = "with delta={}".format(delta)
178180
else:
@@ -213,7 +215,9 @@ def assert_not_almost_equal(first, second, places=None, msg=None, delta=None):
213215
if delta is not None and places is not None:
214216
raise TypeError("'places' and 'delta' are mutually exclusive")
215217
if delta is not None:
216-
diff = second - first
218+
if delta <= 0:
219+
raise ValueError("delta must be larger than 0")
220+
diff = abs(second - first)
217221
success = diff >= delta
218222
detail_msg = "with delta={}".format(delta)
219223
else:

test_asserts.py

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -195,6 +195,9 @@ def test_assert_almost_equal__similar__places(self):
195195
def test_assert_almost_equal__similar__delta(self):
196196
assert_almost_equal(5, 5.001, delta=0.1)
197197

198+
def test_assert_almost_equal__similar__delta_reverse(self):
199+
assert_almost_equal(5, 5.001, delta=0.1)
200+
198201
def test_assert_almost_equal__not_similar__default_message(self):
199202
with _assert_raises_assertion("5 != 5.0001 within 7 places"):
200203
assert_almost_equal(5, 5.0001)
@@ -207,6 +210,10 @@ def test_assert_almost_equal__not_similar__delta__default_message(self):
207210
with _assert_raises_assertion("5 != 6 with delta=0.1"):
208211
assert_almost_equal(5, 6, delta=0.1)
209212

213+
def test_assert_almost_equal__not_similar__delta_reverse(self):
214+
with _assert_raises_assertion("6 != 5 with delta=0.3"):
215+
assert_almost_equal(6, 5, delta=0.3)
216+
210217
def test_assert_almost_equal__not_similar__custom_message(self):
211218
with _assert_raises_assertion("test message"):
212219
assert_almost_equal(5, -5, msg="test message")
@@ -227,6 +234,22 @@ def test_assert_almost_equal__places_and_delta(self):
227234
else:
228235
raise AssertionError("TypeError not raised")
229236

237+
def test_assert_almost_equal__delta_eq_0(self):
238+
try:
239+
assert_almost_equal(5, 5, delta=0)
240+
except ValueError:
241+
pass
242+
else:
243+
raise AssertionError("ValueError not raised")
244+
245+
def test_assert_almost_equal__delta_lt_0(self):
246+
try:
247+
assert_almost_equal(5, 5, delta=-1)
248+
except ValueError:
249+
pass
250+
else:
251+
raise AssertionError("ValueError not raised")
252+
230253
# assert_not_almost_equal()
231254

232255
def test_assert_not_almost_equal__same(self):
@@ -245,9 +268,19 @@ def test_assert_not_almost_equal__similar__delta(self):
245268
with _assert_raises_assertion("5 == 5.1 with delta=0.1"):
246269
assert_not_almost_equal(5, 5.1, delta=0.1)
247270

271+
def test_assert_not_almost_equal__similar__delta_reverse(self):
272+
with _assert_raises_assertion("5 != 6 with delta=0.3"):
273+
assert_almost_equal(5, 6, delta=0.3)
274+
248275
def test_assert_not_almost_equal__not_similar(self):
249276
assert_not_almost_equal(5, 5.0001)
250277

278+
def test_assert_not_almost_equal__not_similar__delta(self):
279+
assert_not_almost_equal(5, 5.1, delta=0.05)
280+
281+
def test_assert_not_almost_equal__not_similar__delta_reverse(self):
282+
assert_not_almost_equal(5.1, 5, delta=0.05)
283+
251284
def test_assert_not_almost_equal__not_similar__custom_message(self):
252285
with _assert_raises_assertion("custom message"):
253286
assert_not_almost_equal(5, 5, msg="custom message")
@@ -268,6 +301,22 @@ def test_assert_not_almost_equal__places_and_delta(self):
268301
else:
269302
raise AssertionError("TypeError not raised")
270303

304+
def test_not_assert_almost_equal__delta_eq_0(self):
305+
try:
306+
assert_not_almost_equal(5, 5, delta=0)
307+
except ValueError:
308+
pass
309+
else:
310+
raise AssertionError("ValueError not raised")
311+
312+
def test_not_assert_almost_equal__delta_lt_0(self):
313+
try:
314+
assert_not_almost_equal(5, 5, delta=-1)
315+
except ValueError:
316+
pass
317+
else:
318+
raise AssertionError("ValueError not raised")
319+
271320
# assert_less()
272321

273322
def test_assert_less(self):

0 commit comments

Comments
 (0)