Skip to content
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
TST: Change tests to more strictly (correctly) check for errors
The old tests seems not to have noticed all types of errors here.
It seems the `assert_no_warnings` context does not care about
exceptions.
  • Loading branch information
seberg committed Jul 12, 2021
commit 6d25b0efc6db2b13b9b682029be3b880202ae06a
28 changes: 17 additions & 11 deletions numpy/core/tests/test_umath.py
Original file line number Diff line number Diff line change
Expand Up @@ -458,11 +458,13 @@ def test_floor_division_errors(self, dtype):
# divide by zero error check
with np.errstate(divide='raise', invalid='ignore'):
assert_raises(FloatingPointError, np.floor_divide, fone, fzer)
with np.errstate(invalid='raise'):
assert_no_warnings(FloatingPointError, np.floor_divide, fnan, fone)
assert_no_warnings(FloatingPointError, np.floor_divide, fone, fnan)
assert_no_warnings(FloatingPointError, np.floor_divide, fnan, fzer)
assert_no_warnings(FloatingPointError, np.floor_divide, fzer, fnan)

# The following already contain a NaN and should not warn
with np.errstate(all='raise'):
np.floor_divide(fnan, fone)
np.floor_divide(fone, fnan)
np.floor_divide(fnan, fzer)
np.floor_divide(fzer, fnan)

@pytest.mark.parametrize('dtype', np.typecodes['Float'])
def test_floor_division_corner_cases(self, dtype):
Expand Down Expand Up @@ -588,12 +590,16 @@ def test_float_remainder_errors(self, dtype, fn):
fone = np.array(1.0, dtype=dtype)
finf = np.array(np.inf, dtype=dtype)
fnan = np.array(np.nan, dtype=dtype)
with np.errstate(invalid='raise'):
assert_raises(FloatingPointError, fn, fone, fzero)
assert_no_warnings(FloatingPointError, fn, fnan, fzero)
assert_no_warnings(FloatingPointError, fn, fzero, fnan)
assert_no_warnings(FloatingPointError, fn, fone, fnan)
assert_no_warnings(FloatingPointError, fn, fnan, fone)

# The following already contain a NaN and should not warn.
with np.errstate(all='raise'):
with pytest.raises(FloatingPointError,
match="invalid value"):
fn(fone, fzero)
fn(fnan, fzero)
fn(fzero, fnan)
fn(fone, fnan)
fn(fnan, fone)

def test_float_remainder_overflow(self):
a = np.finfo(np.float64).tiny
Expand Down