summaryrefslogtreecommitdiff
path: root/numpy/lib/tests
diff options
context:
space:
mode:
Diffstat (limited to 'numpy/lib/tests')
-rw-r--r--numpy/lib/tests/test_function_base.py49
-rw-r--r--numpy/lib/tests/test_utils.py20
2 files changed, 63 insertions, 6 deletions
diff --git a/numpy/lib/tests/test_function_base.py b/numpy/lib/tests/test_function_base.py
index b4e928273..9ba0be56a 100644
--- a/numpy/lib/tests/test_function_base.py
+++ b/numpy/lib/tests/test_function_base.py
@@ -2423,6 +2423,15 @@ class TestBincount:
assert_equal(sys.getrefcount(np.dtype(np.intp)), intp_refcount)
assert_equal(sys.getrefcount(np.dtype(np.double)), double_refcount)
+ @pytest.mark.parametrize("vals", [[[2, 2]], 2])
+ def test_error_not_1d(self, vals):
+ # Test that values has to be 1-D (both as array and nested list)
+ vals_arr = np.asarray(vals)
+ with assert_raises(ValueError):
+ np.bincount(vals_arr)
+ with assert_raises(ValueError):
+ np.bincount(vals)
+
class TestInterp:
@@ -3350,12 +3359,50 @@ class TestAdd_newdoc:
@pytest.mark.skipif(sys.flags.optimize == 2, reason="Python running -OO")
@pytest.mark.xfail(IS_PYPY, reason="PyPy does not modify tp_doc")
def test_add_doc(self):
- # test np.add_newdoc
+ # test that np.add_newdoc did attach a docstring successfully:
tgt = "Current flat index into the array."
assert_equal(np.core.flatiter.index.__doc__[:len(tgt)], tgt)
assert_(len(np.core.ufunc.identity.__doc__) > 300)
assert_(len(np.lib.index_tricks.mgrid.__doc__) > 300)
+ @pytest.mark.skipif(sys.flags.optimize == 2, reason="Python running -OO")
+ def test_errors_are_ignored(self):
+ prev_doc = np.core.flatiter.index.__doc__
+ # nothing changed, but error ignored, this should probably
+ # give a warning (or even error) in the future.
+ np.add_newdoc("numpy.core", "flatiter", ("index", "bad docstring"))
+ assert prev_doc == np.core.flatiter.index.__doc__
+
+
+class TestAddDocstring():
+ # Test should possibly be moved, but it also fits to be close to
+ # the newdoc tests...
+ @pytest.mark.skipif(sys.flags.optimize == 2, reason="Python running -OO")
+ @pytest.mark.skipif(IS_PYPY, reason="PyPy does not modify tp_doc")
+ def test_add_same_docstring(self):
+ # test for attributes (which are C-level defined)
+ np.add_docstring(np.ndarray.flat, np.ndarray.flat.__doc__)
+ # And typical functions:
+ def func():
+ """docstring"""
+ return
+
+ np.add_docstring(func, func.__doc__)
+
+ @pytest.mark.skipif(sys.flags.optimize == 2, reason="Python running -OO")
+ def test_different_docstring_fails(self):
+ # test for attributes (which are C-level defined)
+ with assert_raises(RuntimeError):
+ np.add_docstring(np.ndarray.flat, "different docstring")
+ # And typical functions:
+ def func():
+ """docstring"""
+ return
+
+ with assert_raises(RuntimeError):
+ np.add_docstring(func, "different docstring")
+
+
class TestSortComplex:
@pytest.mark.parametrize("type_in, type_out", [
diff --git a/numpy/lib/tests/test_utils.py b/numpy/lib/tests/test_utils.py
index c96bf795a..261cfef5d 100644
--- a/numpy/lib/tests/test_utils.py
+++ b/numpy/lib/tests/test_utils.py
@@ -49,7 +49,7 @@ def old_func5(self, x):
Bizarre indentation.
"""
return x
-new_func5 = deprecate(old_func5)
+new_func5 = deprecate(old_func5, message="This function is\ndeprecated.")
def old_func6(self, x):
@@ -74,10 +74,20 @@ def test_deprecate_fn():
@pytest.mark.skipif(sys.flags.optimize == 2, reason="-OO discards docstrings")
-def test_deprecate_help_indentation():
- _compare_docs(old_func4, new_func4)
- _compare_docs(old_func5, new_func5)
- _compare_docs(old_func6, new_func6)
+@pytest.mark.parametrize('old_func, new_func', [
+ (old_func4, new_func4),
+ (old_func5, new_func5),
+ (old_func6, new_func6),
+])
+def test_deprecate_help_indentation(old_func, new_func):
+ _compare_docs(old_func, new_func)
+ # Ensure we don't mess up the indentation
+ for knd, func in (('old', old_func), ('new', new_func)):
+ for li, line in enumerate(func.__doc__.split('\n')):
+ if li == 0:
+ assert line.startswith(' ') or not line.startswith(' '), knd
+ elif line:
+ assert line.startswith(' '), knd
def _compare_docs(old_func, new_func):