summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Bradshaw <robertwb@gmail.com>2017-08-24 16:00:55 -0700
committerRobert Bradshaw <robertwb@gmail.com>2017-08-24 16:37:03 -0700
commit8b93e9ecc283df28c09db2fbef2e76f55226e6bc (patch)
tree7d2066c9043d780a329e864789f31fe6503591d1
parentf0bc37688464646a85ea1ba49ad944c2b4096937 (diff)
downloadcython-8b93e9ecc283df28c09db2fbef2e76f55226e6bc.tar.gz
Update tests for new abs semantics.
See discussion at https://github.com/cython/cython/issues/1837
-rw-r--r--tests/run/builtin_abs.pyx55
1 files changed, 37 insertions, 18 deletions
diff --git a/tests/run/builtin_abs.pyx b/tests/run/builtin_abs.pyx
index bc1bd4466..7e7e720e6 100644
--- a/tests/run/builtin_abs.pyx
+++ b/tests/run/builtin_abs.pyx
@@ -31,25 +31,38 @@ def py_abs(a):
return abs(a)
@cython.test_assert_path_exists("//ReturnStatNode//NameNode[@entry.name = 'abs']",
- "//ReturnStatNode//NameNode[@entry.cname = '__Pyx_abs_int']")
+ "//ReturnStatNode//NameNode[@entry.cname = 'abs']")
+def sub_abs(int a):
+ """
+ >>> sub_abs(5)
+ (-5, 95)
+ >>> sub_abs(105)
+ (-105, -5)
+ """
+ return -abs(a), 100 - abs(a)
+
+@cython.test_assert_path_exists("//ReturnStatNode//NameNode[@entry.name = 'abs']",
+ "//ReturnStatNode//NameNode[@entry.cname = 'abs']")
def int_abs(int a):
"""
>>> int_abs(-5) == 5
True
>>> int_abs(-5.1) == 5
True
- >>> int_abs(-max_int-1) > 0
- True
- >>> int_abs(-max_int-1) == abs(-max_int-1) or (max_int, int_abs(-max_int-1), abs(-max_int-1))
- True
+ """
+# >>> int_abs(-max_int-1) > 0
+# True
+# >>> int_abs(-max_int-1) == abs(-max_int-1) or (max_int, int_abs(-max_int-1), abs(-max_int-1))
+# True
+ """
>>> int_abs(max_int) == abs(max_int) or (max_int, int_abs(max_int), abs(max_int))
True
"""
return abs(a)
@cython.test_assert_path_exists("//ReturnStatNode//NameNode[@entry.name = 'abs']")
-@cython.test_fail_if_path_exists("//ReturnStatNode//NameNode[@entry.cname = '__Pyx_abs_int']",
- "//ReturnStatNode//NameNode[@entry.cname = '__Pyx_abs_long']")
+@cython.test_fail_if_path_exists("//ReturnStatNode//NameNode[@entry.cname = 'abs']",
+ "//ReturnStatNode//NameNode[@entry.cname = 'labs']")
def uint_abs(unsigned int a):
"""
>>> uint_abs(max_int) == abs(max_int) or (max_int, uint_abs(max_int), abs(max_int))
@@ -58,29 +71,33 @@ def uint_abs(unsigned int a):
return abs(a)
@cython.test_assert_path_exists("//ReturnStatNode//NameNode[@entry.name = 'abs']",
- "//ReturnStatNode//NameNode[@entry.cname = '__Pyx_abs_long']")
+ "//ReturnStatNode//NameNode[@entry.cname = 'labs']")
def long_abs(long a):
"""
>>> long_abs(-5) == 5
True
>>> long_abs(-5.1) == 5
True
- >>> long_abs(-max_long-1) > 0
- True
- >>> long_abs(-max_long-1) == abs(-max_long-1) or (max_long, long_abs(-max_long-1), abs(-max_long-1))
- True
+ """
+# >>> long_abs(-max_long-1) > 0
+# True
+# >>> long_abs(-max_long-1) == abs(-max_long-1) or (max_long, long_abs(-max_long-1), abs(-max_long-1))
+# True
+ """
>>> long_abs(max_long) == abs(max_long) or (max_long, long_abs(max_long), abs(max_long))
True
"""
return abs(a)
@cython.test_assert_path_exists("//ReturnStatNode//NameNode[@entry.name = 'abs']")
-@cython.test_fail_if_path_exists("//ReturnStatNode//NameNode[@entry.cname = '__Pyx_abs_int']",
- "//ReturnStatNode//NameNode[@entry.cname = '__Pyx_abs_long']")
+@cython.test_fail_if_path_exists("//ReturnStatNode//NameNode[@entry.cname = 'abs']",
+ "//ReturnStatNode//NameNode[@entry.cname = 'labs']")
def ulong_abs(unsigned long a):
"""
>>> ulong_abs(max_long) == abs(max_long) or (max_int, ulong_abs(max_long), abs(max_long))
True
+ >>> ulong_abs(max_long + 5) == abs(max_long + 5) or (max_long + 5, ulong_abs(max_long + 5), abs(max_long + 5))
+ True
"""
return abs(a)
@@ -90,10 +107,12 @@ def long_long_abs(long long a):
"""
>>> long_long_abs(-(2**33)) == 2**33
True
- >>> long_long_abs(-max_long_long-1) > 0
- True
- >>> long_long_abs(-max_long_long-1) == abs(-max_long_long-1) or (max_long_long, long_long_abs(-max_long_long-1), abs(-max_long_long-1))
- True
+ """
+# >>> long_long_abs(-max_long_long-1) > 0
+# True
+# >>> long_long_abs(-max_long_long-1) == abs(-max_long_long-1) or (max_long_long, long_long_abs(-max_long_long-1), abs(-max_long_long-1))
+# True
+ """
>>> long_long_abs(max_long_long) == abs(max_long_long) or (max_long_long, long_long_abs(max_long_long), abs(max_long_long))
True
"""