diff options
author | Andrew Svetlov <andrew.svetlov@gmail.com> | 2013-04-12 20:21:01 (GMT) |
---|---|---|
committer | Andrew Svetlov <andrew.svetlov@gmail.com> | 2013-04-12 20:21:01 (GMT) |
commit | a2dfc35a1341fc73a074cda9190bb99a821f8095 (patch) | |
tree | 86184e48b0199a381cebd099e2304fa635d3b621 /Lib/test/test_random.py | |
parent | 7b2c8bb833780a6f6a0b5480f65d27248d7b3b53 (diff) | |
download | cpython-a2dfc35a1341fc73a074cda9190bb99a821f8095.zip cpython-a2dfc35a1341fc73a074cda9190bb99a821f8095.tar.gz cpython-a2dfc35a1341fc73a074cda9190bb99a821f8095.tar.bz2 |
Issue #13355: Raise ValueError on random.triangular call with invalid params.
Initial patch by Yuriy Senko.
Diffstat (limited to 'Lib/test/test_random.py')
-rw-r--r-- | Lib/test/test_random.py | 32 |
1 files changed, 31 insertions, 1 deletions
diff --git a/Lib/test/test_random.py b/Lib/test/test_random.py index c3ab7d2..7b4b110 100644 --- a/Lib/test/test_random.py +++ b/Lib/test/test_random.py @@ -46,6 +46,36 @@ class TestBasicOps(unittest.TestCase): self.assertRaises(TypeError, self.gen.seed, 1, 2, 3, 4) self.assertRaises(TypeError, type(self.gen), []) + def test_triangular(self): + # Check that triangular() correctly handles bad input. See issue 13355. + + # mode > high. + with self.assertRaises(ValueError): + random.triangular(mode=2) + with self.assertRaises(ValueError): + random.triangular(low=1, high=10, mode=11) + with self.assertRaises(ValueError): + random.triangular(low=1, high=1, mode=11) + + # mode < low. + with self.assertRaises(ValueError): + random.triangular(mode=-1) + with self.assertRaises(ValueError): + random.triangular(low=1, high=10, mode=0) + with self.assertRaises(ValueError): + random.triangular(low=1, high=1, mode=0) + + # low > high + with self.assertRaises(ValueError): + random.triangular(low=5, high=2) + with self.assertRaises(ValueError): + random.triangular(low=5, high=2, mode=1) + with self.assertRaises(ValueError): + random.triangular(low=-2, high=-5) + + self.assertEqual(random.triangular(low=10, high=10), 10) + self.assertEqual(random.triangular(low=10, high=10, mode=10), 10) + def test_choice(self): choice = self.gen.choice with self.assertRaises(IndexError): @@ -489,7 +519,7 @@ class TestDistributions(unittest.TestCase): for variate, args, expected in [ (g.uniform, (10.0, 10.0), 10.0), (g.triangular, (10.0, 10.0), 10.0), - #(g.triangular, (10.0, 10.0, 10.0), 10.0), + (g.triangular, (10.0, 10.0, 10.0), 10.0), (g.expovariate, (float('inf'),), 0.0), (g.vonmisesvariate, (3.0, float('inf')), 3.0), (g.gauss, (10.0, 0.0), 10.0), |