1
1
# Python test set -- math module
2
2
# XXXX Should not do tests around zero only
3
3
4
- from test .support import run_unittest , verbose , requires_IEEE_754
4
+ from test .support import verbose , requires_IEEE_754
5
5
from test import support
6
6
import unittest
7
7
import itertools
@@ -377,6 +377,24 @@ def testAtan2(self):
377
377
self .assertTrue (math .isnan (math .atan2 (NAN , INF )))
378
378
self .assertTrue (math .isnan (math .atan2 (NAN , NAN )))
379
379
380
+ # TODO: RUSTPYTHON
381
+ @unittest .expectedFailure
382
+ def testCbrt (self ):
383
+ self .assertRaises (TypeError , math .cbrt )
384
+ self .ftest ('cbrt(0)' , math .cbrt (0 ), 0 )
385
+ self .ftest ('cbrt(1)' , math .cbrt (1 ), 1 )
386
+ self .ftest ('cbrt(8)' , math .cbrt (8 ), 2 )
387
+ self .ftest ('cbrt(0.0)' , math .cbrt (0.0 ), 0.0 )
388
+ self .ftest ('cbrt(-0.0)' , math .cbrt (- 0.0 ), - 0.0 )
389
+ self .ftest ('cbrt(1.2)' , math .cbrt (1.2 ), 1.062658569182611 )
390
+ self .ftest ('cbrt(-2.6)' , math .cbrt (- 2.6 ), - 1.375068867074141 )
391
+ self .ftest ('cbrt(27)' , math .cbrt (27 ), 3 )
392
+ self .ftest ('cbrt(-1)' , math .cbrt (- 1 ), - 1 )
393
+ self .ftest ('cbrt(-27)' , math .cbrt (- 27 ), - 3 )
394
+ self .assertEqual (math .cbrt (INF ), INF )
395
+ self .assertEqual (math .cbrt (NINF ), NINF )
396
+ self .assertTrue (math .isnan (math .cbrt (NAN )))
397
+
380
398
def testCeil (self ):
381
399
self .assertRaises (TypeError , math .ceil )
382
400
self .assertEqual (int , type (math .ceil (0.5 )))
@@ -1209,6 +1227,8 @@ def testmodf(name, result, expected):
1209
1227
self .assertTrue (math .isnan (modf_nan [0 ]))
1210
1228
self .assertTrue (math .isnan (modf_nan [1 ]))
1211
1229
1230
+ # TODO: RUSTPYTHON
1231
+ @unittest .expectedFailure
1212
1232
def testPow (self ):
1213
1233
self .assertRaises (TypeError , math .pow )
1214
1234
self .ftest ('pow(0,1)' , math .pow (0 ,1 ), 0 )
@@ -1234,7 +1254,7 @@ def testPow(self):
1234
1254
self .assertRaises (ValueError , math .pow , 0. , - 2. )
1235
1255
self .assertRaises (ValueError , math .pow , 0. , - 2.3 )
1236
1256
self .assertRaises (ValueError , math .pow , 0. , - 3. )
1237
- self .assertRaises ( ValueError , math .pow , 0. , NINF )
1257
+ self .assertEqual ( math .pow ( 0. , NINF ), INF )
1238
1258
self .assertTrue (math .isnan (math .pow (0. , NAN )))
1239
1259
1240
1260
# pow(INF, x)
@@ -1260,7 +1280,7 @@ def testPow(self):
1260
1280
self .assertRaises (ValueError , math .pow , - 0. , - 2. )
1261
1281
self .assertRaises (ValueError , math .pow , - 0. , - 2.3 )
1262
1282
self .assertRaises (ValueError , math .pow , - 0. , - 3. )
1263
- self .assertRaises ( ValueError , math .pow , - 0. , NINF )
1283
+ self .assertEqual ( math .pow ( - 0. , NINF ), INF )
1264
1284
self .assertTrue (math .isnan (math .pow (- 0. , NAN )))
1265
1285
1266
1286
# pow(NINF, x)
@@ -1519,6 +1539,10 @@ def testSinh(self):
1519
1539
def testSqrt (self ):
1520
1540
self .assertRaises (TypeError , math .sqrt )
1521
1541
self .ftest ('sqrt(0)' , math .sqrt (0 ), 0 )
1542
+ self .ftest ('sqrt(0)' , math .sqrt (0.0 ), 0.0 )
1543
+ self .ftest ('sqrt(2.5)' , math .sqrt (2.5 ), 1.5811388300841898 )
1544
+ self .ftest ('sqrt(0.25)' , math .sqrt (0.25 ), 0.5 )
1545
+ self .ftest ('sqrt(25.25)' , math .sqrt (25.25 ), 5.024937810560445 )
1522
1546
self .ftest ('sqrt(1)' , math .sqrt (1 ), 1 )
1523
1547
self .ftest ('sqrt(4)' , math .sqrt (4 ), 2 )
1524
1548
self .assertEqual (math .sqrt (INF ), INF )
@@ -1808,16 +1832,22 @@ def test_prod(self):
1808
1832
self .assertRaises (TypeError , prod )
1809
1833
self .assertRaises (TypeError , prod , 42 )
1810
1834
self .assertRaises (TypeError , prod , ['a' , 'b' , 'c' ])
1811
- self .assertRaises (TypeError , prod , ['a' , 'b' , 'c' ], '' )
1812
- self .assertRaises (TypeError , prod , [b'a' , b'c' ], b'' )
1835
+ self .assertRaises (TypeError , prod , ['a' , 'b' , 'c' ], start = '' )
1836
+ self .assertRaises (TypeError , prod , [b'a' , b'c' ], start = b'' )
1813
1837
values = [bytearray (b'a' ), bytearray (b'b' )]
1814
- self .assertRaises (TypeError , prod , values , bytearray (b'' ))
1838
+ self .assertRaises (TypeError , prod , values , start = bytearray (b'' ))
1815
1839
self .assertRaises (TypeError , prod , [[1 ], [2 ], [3 ]])
1816
1840
self .assertRaises (TypeError , prod , [{2 :3 }])
1817
- self .assertRaises (TypeError , prod , [{2 :3 }]* 2 , {2 :3 })
1818
- self .assertRaises (TypeError , prod , [[1 ], [2 ], [3 ]], [])
1841
+ self .assertRaises (TypeError , prod , [{2 :3 }]* 2 , start = {2 :3 })
1842
+ self .assertRaises (TypeError , prod , [[1 ], [2 ], [3 ]], start = [])
1843
+
1844
+ # Some odd cases
1845
+ self .assertEqual (prod ([2 , 3 ], start = 'ab' ), 'abababababab' )
1846
+ self .assertEqual (prod ([2 , 3 ], start = [1 , 2 ]), [1 , 2 , 1 , 2 , 1 , 2 , 1 , 2 , 1 , 2 , 1 , 2 ])
1847
+ self .assertEqual (prod ([], start = {2 : 3 }), {2 :3 })
1848
+
1819
1849
with self .assertRaises (TypeError ):
1820
- prod ([10 , 20 ], [ 30 , 40 ] ) # start is a keyword-only argument
1850
+ prod ([10 , 20 ], 1 ) # start is a keyword-only argument
1821
1851
1822
1852
self .assertEqual (prod ([0 , 1 , 2 , 3 ]), 0 )
1823
1853
self .assertEqual (prod ([1 , 0 , 2 , 3 ]), 0 )
@@ -1877,8 +1907,8 @@ def testPerm(self):
1877
1907
perm = math .perm
1878
1908
factorial = math .factorial
1879
1909
# Test if factorial definition is satisfied
1880
- for n in range (100 ):
1881
- for k in range (n + 1 ):
1910
+ for n in range (500 ):
1911
+ for k in ( range (n + 1 ) if n < 100 else range ( 30 ) if n < 200 else range ( 10 ) ):
1882
1912
self .assertEqual (perm (n , k ),
1883
1913
factorial (n ) // factorial (n - k ))
1884
1914
@@ -1941,8 +1971,8 @@ def testComb(self):
1941
1971
comb = math .comb
1942
1972
factorial = math .factorial
1943
1973
# Test if factorial definition is satisfied
1944
- for n in range (100 ):
1945
- for k in range (n + 1 ):
1974
+ for n in range (500 ):
1975
+ for k in ( range (n + 1 ) if n < 100 else range ( 30 ) if n < 200 else range ( 10 ) ):
1946
1976
self .assertEqual (comb (n , k ), factorial (n )
1947
1977
// (factorial (k ) * factorial (n - k )))
1948
1978
@@ -2230,13 +2260,10 @@ def test_fractions(self):
2230
2260
self .assertAllNotClose (fraction_examples , rel_tol = 1e-9 )
2231
2261
2232
2262
2233
- def test_main ():
2234
- # from doctest import DocFileSuite
2235
- suite = unittest .TestSuite ()
2236
- suite .addTest (unittest .makeSuite (MathTests ))
2237
- suite .addTest (unittest .makeSuite (IsCloseTests ))
2238
- # suite.addTest(DocFileSuite("ieee754.txt"))
2239
- run_unittest (suite )
2263
+ def load_tests (loader , tests , pattern ):
2264
+ from doctest import DocFileSuite
2265
+ # tests.addTest(DocFileSuite("ieee754.txt"))
2266
+ return tests
2240
2267
2241
2268
if __name__ == '__main__' :
2242
- test_main ()
2269
+ unittest . main ()
0 commit comments