summaryrefslogtreecommitdiffstats
path: root/Modules/_decimal/tests
diff options
context:
space:
mode:
authorStefan Krah <skrah@bytereef.org>2012-12-15 21:33:33 (GMT)
committerStefan Krah <skrah@bytereef.org>2012-12-15 21:33:33 (GMT)
commit040e3118267bda53b34e35470f7ef0f6dc40cfad (patch)
treeca2534dbb95f20231207ebbd596f7fb0f8b222e0 /Modules/_decimal/tests
parent618c2e13ca410f342bb057e62e24478b585744aa (diff)
downloadcpython-040e3118267bda53b34e35470f7ef0f6dc40cfad.zip
cpython-040e3118267bda53b34e35470f7ef0f6dc40cfad.tar.gz
cpython-040e3118267bda53b34e35470f7ef0f6dc40cfad.tar.bz2
Issue #15783: Except for the number methods, the C version of decimal now
supports all None default values present in decimal.py. These values were largely undocumented.
Diffstat (limited to 'Modules/_decimal/tests')
-rw-r--r--Modules/_decimal/tests/deccheck.py34
-rw-r--r--Modules/_decimal/tests/randdec.py18
2 files changed, 52 insertions, 0 deletions
diff --git a/Modules/_decimal/tests/deccheck.py b/Modules/_decimal/tests/deccheck.py
index c8da4d0..751ba57 100644
--- a/Modules/_decimal/tests/deccheck.py
+++ b/Modules/_decimal/tests/deccheck.py
@@ -36,6 +36,7 @@ from copy import copy
from collections import defaultdict
from test.support import import_fresh_module
from randdec import randfloat, all_unary, all_binary, all_ternary
+from randdec import unary_optarg, binary_optarg, ternary_optarg
from formathelper import rand_format, rand_locale
C = import_fresh_module('decimal', fresh=['_decimal'])
@@ -834,6 +835,17 @@ def test_unary(method, prec, exp_range, restricted_range, itr, stat):
except VerifyError as err:
log(err)
+ if not method.startswith('__'):
+ for op in unary_optarg(prec, exp_range, itr):
+ t = TestSet(method, op)
+ try:
+ if not convert(t):
+ continue
+ callfuncs(t)
+ verify(t, stat)
+ except VerifyError as err:
+ log(err)
+
def test_binary(method, prec, exp_range, restricted_range, itr, stat):
"""Iterate a binary function through many test cases."""
if method in BinaryRestricted:
@@ -848,6 +860,17 @@ def test_binary(method, prec, exp_range, restricted_range, itr, stat):
except VerifyError as err:
log(err)
+ if not method.startswith('__'):
+ for op in binary_optarg(prec, exp_range, itr):
+ t = TestSet(method, op)
+ try:
+ if not convert(t):
+ continue
+ callfuncs(t)
+ verify(t, stat)
+ except VerifyError as err:
+ log(err)
+
def test_ternary(method, prec, exp_range, restricted_range, itr, stat):
"""Iterate a ternary function through many test cases."""
if method in TernaryRestricted:
@@ -862,6 +885,17 @@ def test_ternary(method, prec, exp_range, restricted_range, itr, stat):
except VerifyError as err:
log(err)
+ if not method.startswith('__'):
+ for op in ternary_optarg(prec, exp_range, itr):
+ t = TestSet(method, op)
+ try:
+ if not convert(t):
+ continue
+ callfuncs(t)
+ verify(t, stat)
+ except VerifyError as err:
+ log(err)
+
def test_format(method, prec, exp_range, restricted_range, itr, stat):
"""Iterate the __format__ method through many test cases."""
for op in all_unary(prec, exp_range, itr):
diff --git a/Modules/_decimal/tests/randdec.py b/Modules/_decimal/tests/randdec.py
index 80858bf..ca0f0d1 100644
--- a/Modules/_decimal/tests/randdec.py
+++ b/Modules/_decimal/tests/randdec.py
@@ -527,6 +527,11 @@ def all_unary(prec, exp_range, itr):
for _ in range(100):
yield (randtuple(prec, exp_range),)
+def unary_optarg(prec, exp_range, itr):
+ for _ in range(100):
+ yield randdec(prec, exp_range), None
+ yield randdec(prec, exp_range), None, None
+
def all_binary(prec, exp_range, itr):
for a, b in bin_close_to_pow10(prec, exp_range, itr):
yield a, b
@@ -543,6 +548,11 @@ def all_binary(prec, exp_range, itr):
for _ in range(100):
yield randdec(prec, exp_range), randdec(prec, exp_range)
+def binary_optarg(prec, exp_range, itr):
+ for _ in range(100):
+ yield randdec(prec, exp_range), randdec(prec, exp_range), None
+ yield randdec(prec, exp_range), randdec(prec, exp_range), None, None
+
def all_ternary(prec, exp_range, itr):
for a, b, c in tern_close_numbers(prec, exp_range, -exp_range, itr):
yield a, b, c
@@ -557,3 +567,11 @@ def all_ternary(prec, exp_range, itr):
b = randdec(prec, 2*exp_range)
c = randdec(prec, 2*exp_range)
yield a, b, c
+
+def ternary_optarg(prec, exp_range, itr):
+ for _ in range(100):
+ a = randdec(prec, 2*exp_range)
+ b = randdec(prec, 2*exp_range)
+ c = randdec(prec, 2*exp_range)
+ yield a, b, c, None
+ yield a, b, c, None, None