1a4ea603b055533e71920a088acb1c106e4895dbdThomas Hellerimport unittest 2d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchakaimport math 3d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchakaimport sys 4a4ea603b055533e71920a088acb1c106e4895dbdThomas Hellerfrom test import test_support 576249ea4a7ab1cb0fa41d967b2fb8975916cb955Serhiy Storchaka# Skip this test if the _testcapi module isn't available. 676249ea4a7ab1cb0fa41d967b2fb8975916cb955Serhiy Storchakatest_support.import_module('_testcapi') 7ea837931cf393aa0373ccfa1849b2a3d6e3cc6eaChristian Heimesfrom _testcapi import getargs_keywords 8c5f05e45cffa16f45f1332cec531c045893f928fChristian Heimesimport warnings 9a4ea603b055533e71920a088acb1c106e4895dbdThomas Heller 10a4ea603b055533e71920a088acb1c106e4895dbdThomas Heller""" 11a4ea603b055533e71920a088acb1c106e4895dbdThomas Heller> How about the following counterproposal. This also changes some of 12a4ea603b055533e71920a088acb1c106e4895dbdThomas Heller> the other format codes to be a little more regular. 13a4ea603b055533e71920a088acb1c106e4895dbdThomas Heller> 14a4ea603b055533e71920a088acb1c106e4895dbdThomas Heller> Code C type Range check 15a4ea603b055533e71920a088acb1c106e4895dbdThomas Heller> 16a4ea603b055533e71920a088acb1c106e4895dbdThomas Heller> b unsigned char 0..UCHAR_MAX 17bbb931bebd9237183ee8bb0b5e90cf2ecb3fd046Guido van Rossum> h signed short SHRT_MIN..SHRT_MAX 18a4ea603b055533e71920a088acb1c106e4895dbdThomas Heller> B unsigned char none ** 19a4ea603b055533e71920a088acb1c106e4895dbdThomas Heller> H unsigned short none ** 20a4ea603b055533e71920a088acb1c106e4895dbdThomas Heller> k * unsigned long none 21a4ea603b055533e71920a088acb1c106e4895dbdThomas Heller> I * unsigned int 0..UINT_MAX 22a4ea603b055533e71920a088acb1c106e4895dbdThomas Heller 23a4ea603b055533e71920a088acb1c106e4895dbdThomas Heller 24a4ea603b055533e71920a088acb1c106e4895dbdThomas Heller> i int INT_MIN..INT_MAX 25a4ea603b055533e71920a088acb1c106e4895dbdThomas Heller> l long LONG_MIN..LONG_MAX 26a4ea603b055533e71920a088acb1c106e4895dbdThomas Heller 27a4ea603b055533e71920a088acb1c106e4895dbdThomas Heller> K * unsigned long long none 28a4ea603b055533e71920a088acb1c106e4895dbdThomas Heller> L long long LLONG_MIN..LLONG_MAX 29a4ea603b055533e71920a088acb1c106e4895dbdThomas Heller 30a4ea603b055533e71920a088acb1c106e4895dbdThomas Heller> Notes: 31a4ea603b055533e71920a088acb1c106e4895dbdThomas Heller> 32a4ea603b055533e71920a088acb1c106e4895dbdThomas Heller> * New format codes. 33a4ea603b055533e71920a088acb1c106e4895dbdThomas Heller> 34a4ea603b055533e71920a088acb1c106e4895dbdThomas Heller> ** Changed from previous "range-and-a-half" to "none"; the 35a4ea603b055533e71920a088acb1c106e4895dbdThomas Heller> range-and-a-half checking wasn't particularly useful. 36a4ea603b055533e71920a088acb1c106e4895dbdThomas Heller 37a4ea603b055533e71920a088acb1c106e4895dbdThomas HellerPlus a C API or two, e.g. PyInt_AsLongMask() -> 38a4ea603b055533e71920a088acb1c106e4895dbdThomas Hellerunsigned long and PyInt_AsLongLongMask() -> unsigned 39a4ea603b055533e71920a088acb1c106e4895dbdThomas Hellerlong long (if that exists). 40a4ea603b055533e71920a088acb1c106e4895dbdThomas Heller""" 41a4ea603b055533e71920a088acb1c106e4895dbdThomas Heller 42a4ea603b055533e71920a088acb1c106e4895dbdThomas HellerLARGE = 0x7FFFFFFF 43a4ea603b055533e71920a088acb1c106e4895dbdThomas HellerVERY_LARGE = 0xFF0000121212121212121242L 44a4ea603b055533e71920a088acb1c106e4895dbdThomas Heller 45a4ea603b055533e71920a088acb1c106e4895dbdThomas Hellerfrom _testcapi import UCHAR_MAX, USHRT_MAX, UINT_MAX, ULONG_MAX, INT_MAX, \ 46b5e348b305760b9d0d04669fe66602610b6e00faMark Dickinson INT_MIN, LONG_MIN, LONG_MAX, PY_SSIZE_T_MIN, PY_SSIZE_T_MAX, \ 47d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchaka SHRT_MIN, SHRT_MAX, FLT_MIN, FLT_MAX, DBL_MIN, DBL_MAX 48d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchaka 49d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy StorchakaDBL_MAX_EXP = sys.float_info.max_exp 50d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy StorchakaINF = float('inf') 51d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy StorchakaNAN = float('nan') 52a4ea603b055533e71920a088acb1c106e4895dbdThomas Heller 531f70221b861a3714735251d57695b2f472d0599bZachary Waretry: 541f70221b861a3714735251d57695b2f472d0599bZachary Ware from _testcapi import getargs_L, getargs_K 551f70221b861a3714735251d57695b2f472d0599bZachary Wareexcept ImportError: 561f70221b861a3714735251d57695b2f472d0599bZachary Ware _PY_LONG_LONG_available = False 571f70221b861a3714735251d57695b2f472d0599bZachary Wareelse: 581f70221b861a3714735251d57695b2f472d0599bZachary Ware _PY_LONG_LONG_available = True 591f70221b861a3714735251d57695b2f472d0599bZachary Ware 60a4ea603b055533e71920a088acb1c106e4895dbdThomas Heller# fake, they are not defined in Python's header files 61a4ea603b055533e71920a088acb1c106e4895dbdThomas HellerLLONG_MAX = 2**63-1 62a4ea603b055533e71920a088acb1c106e4895dbdThomas HellerLLONG_MIN = -2**63 63a4ea603b055533e71920a088acb1c106e4895dbdThomas HellerULLONG_MAX = 2**64-1 64a4ea603b055533e71920a088acb1c106e4895dbdThomas Heller 65a4ea603b055533e71920a088acb1c106e4895dbdThomas Hellerclass Long: 66a4ea603b055533e71920a088acb1c106e4895dbdThomas Heller def __int__(self): 67a4ea603b055533e71920a088acb1c106e4895dbdThomas Heller return 99L 68a4ea603b055533e71920a088acb1c106e4895dbdThomas Heller 69a4ea603b055533e71920a088acb1c106e4895dbdThomas Hellerclass Int: 70a4ea603b055533e71920a088acb1c106e4895dbdThomas Heller def __int__(self): 71a4ea603b055533e71920a088acb1c106e4895dbdThomas Heller return 99 72a4ea603b055533e71920a088acb1c106e4895dbdThomas Heller 73d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchaka 74d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchakaclass Float: 75d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchaka def __float__(self): 76d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchaka return 4.25 77d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchaka 78d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchakaclass FloatSubclass(float): 79d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchaka pass 80d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchaka 81d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchakaclass FloatSubclass2(float): 82d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchaka def __float__(self): 83d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchaka return 4.25 84d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchaka 85d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchakaclass BadFloat: 86d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchaka def __float__(self): 87d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchaka return 687 88d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchaka 89d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchakaclass BadFloat2: 90d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchaka def __float__(self): 91d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchaka return FloatSubclass(4.25) 92d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchaka 93d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchakaclass BadFloat3(float): 94d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchaka def __float__(self): 95d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchaka return FloatSubclass(4.25) 96d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchaka 97d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchaka 98d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchakaclass Complex: 99d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchaka def __complex__(self): 100d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchaka return 4.25+0.5j 101d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchaka 102d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchakaclass ComplexSubclass(complex): 103d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchaka pass 104d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchaka 105d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchakaclass ComplexSubclass2(complex): 106d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchaka def __complex__(self): 107d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchaka return 4.25+0.5j 108d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchaka 109d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchakaclass BadComplex: 110d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchaka def __complex__(self): 111d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchaka return 1.25 112d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchaka 113d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchakaclass BadComplex2: 114d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchaka def __complex__(self): 115d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchaka return ComplexSubclass(4.25+0.5j) 116d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchaka 117d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchakaclass BadComplex3(complex): 118d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchaka def __complex__(self): 119d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchaka return ComplexSubclass(4.25+0.5j) 120d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchaka 121d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchaka 122c6a7c96a8f9249739ca5f70f6b48eacf1b00fd36Serhiy Storchakaclass TupleSubclass(tuple): 123c6a7c96a8f9249739ca5f70f6b48eacf1b00fd36Serhiy Storchaka pass 124c6a7c96a8f9249739ca5f70f6b48eacf1b00fd36Serhiy Storchaka 125c6a7c96a8f9249739ca5f70f6b48eacf1b00fd36Serhiy Storchakaclass DictSubclass(dict): 126c6a7c96a8f9249739ca5f70f6b48eacf1b00fd36Serhiy Storchaka pass 127c6a7c96a8f9249739ca5f70f6b48eacf1b00fd36Serhiy Storchaka 128a4ea603b055533e71920a088acb1c106e4895dbdThomas Hellerclass Unsigned_TestCase(unittest.TestCase): 129a4ea603b055533e71920a088acb1c106e4895dbdThomas Heller def test_b(self): 13054aa5781d50adf2ab2168399c2f6d16ccff0a5aaThomas Heller from _testcapi import getargs_b 131a4ea603b055533e71920a088acb1c106e4895dbdThomas Heller # b returns 'unsigned char', and does range checking (0 ... UCHAR_MAX) 1321b34d2552c2cb2369130291a8a9ae973753b4072Mark Dickinson self.assertRaises(TypeError, getargs_b, 3.14) 1335c8da86f3a515ce1a6d5f27fd15e3c5f4d8e931eBenjamin Peterson self.assertEqual(99, getargs_b(Long())) 1345c8da86f3a515ce1a6d5f27fd15e3c5f4d8e931eBenjamin Peterson self.assertEqual(99, getargs_b(Int())) 135a4ea603b055533e71920a088acb1c106e4895dbdThomas Heller 13654aa5781d50adf2ab2168399c2f6d16ccff0a5aaThomas Heller self.assertRaises(OverflowError, getargs_b, -1) 1375c8da86f3a515ce1a6d5f27fd15e3c5f4d8e931eBenjamin Peterson self.assertEqual(0, getargs_b(0)) 1385c8da86f3a515ce1a6d5f27fd15e3c5f4d8e931eBenjamin Peterson self.assertEqual(UCHAR_MAX, getargs_b(UCHAR_MAX)) 13954aa5781d50adf2ab2168399c2f6d16ccff0a5aaThomas Heller self.assertRaises(OverflowError, getargs_b, UCHAR_MAX + 1) 140a4ea603b055533e71920a088acb1c106e4895dbdThomas Heller 1415c8da86f3a515ce1a6d5f27fd15e3c5f4d8e931eBenjamin Peterson self.assertEqual(42, getargs_b(42)) 1425c8da86f3a515ce1a6d5f27fd15e3c5f4d8e931eBenjamin Peterson self.assertEqual(42, getargs_b(42L)) 14354aa5781d50adf2ab2168399c2f6d16ccff0a5aaThomas Heller self.assertRaises(OverflowError, getargs_b, VERY_LARGE) 144a4ea603b055533e71920a088acb1c106e4895dbdThomas Heller 145a4ea603b055533e71920a088acb1c106e4895dbdThomas Heller def test_B(self): 14654aa5781d50adf2ab2168399c2f6d16ccff0a5aaThomas Heller from _testcapi import getargs_B 147a4ea603b055533e71920a088acb1c106e4895dbdThomas Heller # B returns 'unsigned char', no range checking 1481b34d2552c2cb2369130291a8a9ae973753b4072Mark Dickinson self.assertRaises(TypeError, getargs_B, 3.14) 1495c8da86f3a515ce1a6d5f27fd15e3c5f4d8e931eBenjamin Peterson self.assertEqual(99, getargs_B(Long())) 1505c8da86f3a515ce1a6d5f27fd15e3c5f4d8e931eBenjamin Peterson self.assertEqual(99, getargs_B(Int())) 151a4ea603b055533e71920a088acb1c106e4895dbdThomas Heller 1525c8da86f3a515ce1a6d5f27fd15e3c5f4d8e931eBenjamin Peterson self.assertEqual(UCHAR_MAX, getargs_B(-1)) 1535c8da86f3a515ce1a6d5f27fd15e3c5f4d8e931eBenjamin Peterson self.assertEqual(UCHAR_MAX, getargs_B(-1L)) 1545c8da86f3a515ce1a6d5f27fd15e3c5f4d8e931eBenjamin Peterson self.assertEqual(0, getargs_B(0)) 1555c8da86f3a515ce1a6d5f27fd15e3c5f4d8e931eBenjamin Peterson self.assertEqual(UCHAR_MAX, getargs_B(UCHAR_MAX)) 1565c8da86f3a515ce1a6d5f27fd15e3c5f4d8e931eBenjamin Peterson self.assertEqual(0, getargs_B(UCHAR_MAX+1)) 157a4ea603b055533e71920a088acb1c106e4895dbdThomas Heller 1585c8da86f3a515ce1a6d5f27fd15e3c5f4d8e931eBenjamin Peterson self.assertEqual(42, getargs_B(42)) 1595c8da86f3a515ce1a6d5f27fd15e3c5f4d8e931eBenjamin Peterson self.assertEqual(42, getargs_B(42L)) 1605c8da86f3a515ce1a6d5f27fd15e3c5f4d8e931eBenjamin Peterson self.assertEqual(UCHAR_MAX & VERY_LARGE, getargs_B(VERY_LARGE)) 161a4ea603b055533e71920a088acb1c106e4895dbdThomas Heller 162a4ea603b055533e71920a088acb1c106e4895dbdThomas Heller def test_H(self): 16354aa5781d50adf2ab2168399c2f6d16ccff0a5aaThomas Heller from _testcapi import getargs_H 164a4ea603b055533e71920a088acb1c106e4895dbdThomas Heller # H returns 'unsigned short', no range checking 1651b34d2552c2cb2369130291a8a9ae973753b4072Mark Dickinson self.assertRaises(TypeError, getargs_H, 3.14) 1665c8da86f3a515ce1a6d5f27fd15e3c5f4d8e931eBenjamin Peterson self.assertEqual(99, getargs_H(Long())) 1675c8da86f3a515ce1a6d5f27fd15e3c5f4d8e931eBenjamin Peterson self.assertEqual(99, getargs_H(Int())) 168a4ea603b055533e71920a088acb1c106e4895dbdThomas Heller 1695c8da86f3a515ce1a6d5f27fd15e3c5f4d8e931eBenjamin Peterson self.assertEqual(USHRT_MAX, getargs_H(-1)) 1705c8da86f3a515ce1a6d5f27fd15e3c5f4d8e931eBenjamin Peterson self.assertEqual(0, getargs_H(0)) 1715c8da86f3a515ce1a6d5f27fd15e3c5f4d8e931eBenjamin Peterson self.assertEqual(USHRT_MAX, getargs_H(USHRT_MAX)) 1725c8da86f3a515ce1a6d5f27fd15e3c5f4d8e931eBenjamin Peterson self.assertEqual(0, getargs_H(USHRT_MAX+1)) 173a4ea603b055533e71920a088acb1c106e4895dbdThomas Heller 1745c8da86f3a515ce1a6d5f27fd15e3c5f4d8e931eBenjamin Peterson self.assertEqual(42, getargs_H(42)) 1755c8da86f3a515ce1a6d5f27fd15e3c5f4d8e931eBenjamin Peterson self.assertEqual(42, getargs_H(42L)) 176a4ea603b055533e71920a088acb1c106e4895dbdThomas Heller 1775c8da86f3a515ce1a6d5f27fd15e3c5f4d8e931eBenjamin Peterson self.assertEqual(VERY_LARGE & USHRT_MAX, getargs_H(VERY_LARGE)) 178a4ea603b055533e71920a088acb1c106e4895dbdThomas Heller 179a4ea603b055533e71920a088acb1c106e4895dbdThomas Heller def test_I(self): 18054aa5781d50adf2ab2168399c2f6d16ccff0a5aaThomas Heller from _testcapi import getargs_I 181a4ea603b055533e71920a088acb1c106e4895dbdThomas Heller # I returns 'unsigned int', no range checking 1821b34d2552c2cb2369130291a8a9ae973753b4072Mark Dickinson self.assertRaises(TypeError, getargs_I, 3.14) 1835c8da86f3a515ce1a6d5f27fd15e3c5f4d8e931eBenjamin Peterson self.assertEqual(99, getargs_I(Long())) 1845c8da86f3a515ce1a6d5f27fd15e3c5f4d8e931eBenjamin Peterson self.assertEqual(99, getargs_I(Int())) 185a4ea603b055533e71920a088acb1c106e4895dbdThomas Heller 1865c8da86f3a515ce1a6d5f27fd15e3c5f4d8e931eBenjamin Peterson self.assertEqual(UINT_MAX, getargs_I(-1)) 1875c8da86f3a515ce1a6d5f27fd15e3c5f4d8e931eBenjamin Peterson self.assertEqual(0, getargs_I(0)) 1885c8da86f3a515ce1a6d5f27fd15e3c5f4d8e931eBenjamin Peterson self.assertEqual(UINT_MAX, getargs_I(UINT_MAX)) 1895c8da86f3a515ce1a6d5f27fd15e3c5f4d8e931eBenjamin Peterson self.assertEqual(0, getargs_I(UINT_MAX+1)) 190a4ea603b055533e71920a088acb1c106e4895dbdThomas Heller 1915c8da86f3a515ce1a6d5f27fd15e3c5f4d8e931eBenjamin Peterson self.assertEqual(42, getargs_I(42)) 1925c8da86f3a515ce1a6d5f27fd15e3c5f4d8e931eBenjamin Peterson self.assertEqual(42, getargs_I(42L)) 193a4ea603b055533e71920a088acb1c106e4895dbdThomas Heller 1945c8da86f3a515ce1a6d5f27fd15e3c5f4d8e931eBenjamin Peterson self.assertEqual(VERY_LARGE & UINT_MAX, getargs_I(VERY_LARGE)) 195a4ea603b055533e71920a088acb1c106e4895dbdThomas Heller 196a4ea603b055533e71920a088acb1c106e4895dbdThomas Heller def test_k(self): 19754aa5781d50adf2ab2168399c2f6d16ccff0a5aaThomas Heller from _testcapi import getargs_k 198a4ea603b055533e71920a088acb1c106e4895dbdThomas Heller # k returns 'unsigned long', no range checking 199a4ea603b055533e71920a088acb1c106e4895dbdThomas Heller # it does not accept float, or instances with __int__ 20054aa5781d50adf2ab2168399c2f6d16ccff0a5aaThomas Heller self.assertRaises(TypeError, getargs_k, 3.14) 20154aa5781d50adf2ab2168399c2f6d16ccff0a5aaThomas Heller self.assertRaises(TypeError, getargs_k, Long()) 20254aa5781d50adf2ab2168399c2f6d16ccff0a5aaThomas Heller self.assertRaises(TypeError, getargs_k, Int()) 203a4ea603b055533e71920a088acb1c106e4895dbdThomas Heller 2045c8da86f3a515ce1a6d5f27fd15e3c5f4d8e931eBenjamin Peterson self.assertEqual(ULONG_MAX, getargs_k(-1)) 2055c8da86f3a515ce1a6d5f27fd15e3c5f4d8e931eBenjamin Peterson self.assertEqual(0, getargs_k(0)) 2065c8da86f3a515ce1a6d5f27fd15e3c5f4d8e931eBenjamin Peterson self.assertEqual(ULONG_MAX, getargs_k(ULONG_MAX)) 2075c8da86f3a515ce1a6d5f27fd15e3c5f4d8e931eBenjamin Peterson self.assertEqual(0, getargs_k(ULONG_MAX+1)) 208a4ea603b055533e71920a088acb1c106e4895dbdThomas Heller 2095c8da86f3a515ce1a6d5f27fd15e3c5f4d8e931eBenjamin Peterson self.assertEqual(42, getargs_k(42)) 2105c8da86f3a515ce1a6d5f27fd15e3c5f4d8e931eBenjamin Peterson self.assertEqual(42, getargs_k(42L)) 211a4ea603b055533e71920a088acb1c106e4895dbdThomas Heller 2125c8da86f3a515ce1a6d5f27fd15e3c5f4d8e931eBenjamin Peterson self.assertEqual(VERY_LARGE & ULONG_MAX, getargs_k(VERY_LARGE)) 213a4ea603b055533e71920a088acb1c106e4895dbdThomas Heller 214a4ea603b055533e71920a088acb1c106e4895dbdThomas Hellerclass Signed_TestCase(unittest.TestCase): 215b5e348b305760b9d0d04669fe66602610b6e00faMark Dickinson def test_h(self): 216b5e348b305760b9d0d04669fe66602610b6e00faMark Dickinson from _testcapi import getargs_h 217b5e348b305760b9d0d04669fe66602610b6e00faMark Dickinson # h returns 'short', and does range checking (SHRT_MIN ... SHRT_MAX) 2181b34d2552c2cb2369130291a8a9ae973753b4072Mark Dickinson self.assertRaises(TypeError, getargs_h, 3.14) 219b5e348b305760b9d0d04669fe66602610b6e00faMark Dickinson self.assertEqual(99, getargs_h(Long())) 220b5e348b305760b9d0d04669fe66602610b6e00faMark Dickinson self.assertEqual(99, getargs_h(Int())) 221b5e348b305760b9d0d04669fe66602610b6e00faMark Dickinson 222b5e348b305760b9d0d04669fe66602610b6e00faMark Dickinson self.assertRaises(OverflowError, getargs_h, SHRT_MIN-1) 223b5e348b305760b9d0d04669fe66602610b6e00faMark Dickinson self.assertEqual(SHRT_MIN, getargs_h(SHRT_MIN)) 224b5e348b305760b9d0d04669fe66602610b6e00faMark Dickinson self.assertEqual(SHRT_MAX, getargs_h(SHRT_MAX)) 225b5e348b305760b9d0d04669fe66602610b6e00faMark Dickinson self.assertRaises(OverflowError, getargs_h, SHRT_MAX+1) 226b5e348b305760b9d0d04669fe66602610b6e00faMark Dickinson 227b5e348b305760b9d0d04669fe66602610b6e00faMark Dickinson self.assertEqual(42, getargs_h(42)) 228b5e348b305760b9d0d04669fe66602610b6e00faMark Dickinson self.assertEqual(42, getargs_h(42L)) 229b5e348b305760b9d0d04669fe66602610b6e00faMark Dickinson self.assertRaises(OverflowError, getargs_h, VERY_LARGE) 230b5e348b305760b9d0d04669fe66602610b6e00faMark Dickinson 231a4ea603b055533e71920a088acb1c106e4895dbdThomas Heller def test_i(self): 23254aa5781d50adf2ab2168399c2f6d16ccff0a5aaThomas Heller from _testcapi import getargs_i 233a4ea603b055533e71920a088acb1c106e4895dbdThomas Heller # i returns 'int', and does range checking (INT_MIN ... INT_MAX) 2341b34d2552c2cb2369130291a8a9ae973753b4072Mark Dickinson self.assertRaises(TypeError, getargs_i, 3.14) 2355c8da86f3a515ce1a6d5f27fd15e3c5f4d8e931eBenjamin Peterson self.assertEqual(99, getargs_i(Long())) 2365c8da86f3a515ce1a6d5f27fd15e3c5f4d8e931eBenjamin Peterson self.assertEqual(99, getargs_i(Int())) 237a4ea603b055533e71920a088acb1c106e4895dbdThomas Heller 23854aa5781d50adf2ab2168399c2f6d16ccff0a5aaThomas Heller self.assertRaises(OverflowError, getargs_i, INT_MIN-1) 2395c8da86f3a515ce1a6d5f27fd15e3c5f4d8e931eBenjamin Peterson self.assertEqual(INT_MIN, getargs_i(INT_MIN)) 2405c8da86f3a515ce1a6d5f27fd15e3c5f4d8e931eBenjamin Peterson self.assertEqual(INT_MAX, getargs_i(INT_MAX)) 24154aa5781d50adf2ab2168399c2f6d16ccff0a5aaThomas Heller self.assertRaises(OverflowError, getargs_i, INT_MAX+1) 242a4ea603b055533e71920a088acb1c106e4895dbdThomas Heller 2435c8da86f3a515ce1a6d5f27fd15e3c5f4d8e931eBenjamin Peterson self.assertEqual(42, getargs_i(42)) 2445c8da86f3a515ce1a6d5f27fd15e3c5f4d8e931eBenjamin Peterson self.assertEqual(42, getargs_i(42L)) 24554aa5781d50adf2ab2168399c2f6d16ccff0a5aaThomas Heller self.assertRaises(OverflowError, getargs_i, VERY_LARGE) 246a4ea603b055533e71920a088acb1c106e4895dbdThomas Heller 247a4ea603b055533e71920a088acb1c106e4895dbdThomas Heller def test_l(self): 24854aa5781d50adf2ab2168399c2f6d16ccff0a5aaThomas Heller from _testcapi import getargs_l 249a4ea603b055533e71920a088acb1c106e4895dbdThomas Heller # l returns 'long', and does range checking (LONG_MIN ... LONG_MAX) 2501b34d2552c2cb2369130291a8a9ae973753b4072Mark Dickinson self.assertRaises(TypeError, getargs_l, 3.14) 2515c8da86f3a515ce1a6d5f27fd15e3c5f4d8e931eBenjamin Peterson self.assertEqual(99, getargs_l(Long())) 2525c8da86f3a515ce1a6d5f27fd15e3c5f4d8e931eBenjamin Peterson self.assertEqual(99, getargs_l(Int())) 253a4ea603b055533e71920a088acb1c106e4895dbdThomas Heller 25454aa5781d50adf2ab2168399c2f6d16ccff0a5aaThomas Heller self.assertRaises(OverflowError, getargs_l, LONG_MIN-1) 2555c8da86f3a515ce1a6d5f27fd15e3c5f4d8e931eBenjamin Peterson self.assertEqual(LONG_MIN, getargs_l(LONG_MIN)) 2565c8da86f3a515ce1a6d5f27fd15e3c5f4d8e931eBenjamin Peterson self.assertEqual(LONG_MAX, getargs_l(LONG_MAX)) 25754aa5781d50adf2ab2168399c2f6d16ccff0a5aaThomas Heller self.assertRaises(OverflowError, getargs_l, LONG_MAX+1) 258a4ea603b055533e71920a088acb1c106e4895dbdThomas Heller 2595c8da86f3a515ce1a6d5f27fd15e3c5f4d8e931eBenjamin Peterson self.assertEqual(42, getargs_l(42)) 2605c8da86f3a515ce1a6d5f27fd15e3c5f4d8e931eBenjamin Peterson self.assertEqual(42, getargs_l(42L)) 26154aa5781d50adf2ab2168399c2f6d16ccff0a5aaThomas Heller self.assertRaises(OverflowError, getargs_l, VERY_LARGE) 262a4ea603b055533e71920a088acb1c106e4895dbdThomas Heller 2637f573f7319f070d47565a2a37d659611ee844dd5Georg Brandl def test_n(self): 2647f573f7319f070d47565a2a37d659611ee844dd5Georg Brandl from _testcapi import getargs_n 2658e6480ca02adb3cb790c0e12cef13cc41d2744e2Tim Peters # n returns 'Py_ssize_t', and does range checking 2667f573f7319f070d47565a2a37d659611ee844dd5Georg Brandl # (PY_SSIZE_T_MIN ... PY_SSIZE_T_MAX) 2671b34d2552c2cb2369130291a8a9ae973753b4072Mark Dickinson self.assertRaises(TypeError, getargs_n, 3.14) 2685c8da86f3a515ce1a6d5f27fd15e3c5f4d8e931eBenjamin Peterson self.assertEqual(99, getargs_n(Long())) 2695c8da86f3a515ce1a6d5f27fd15e3c5f4d8e931eBenjamin Peterson self.assertEqual(99, getargs_n(Int())) 2707f573f7319f070d47565a2a37d659611ee844dd5Georg Brandl 2717f573f7319f070d47565a2a37d659611ee844dd5Georg Brandl self.assertRaises(OverflowError, getargs_n, PY_SSIZE_T_MIN-1) 2725c8da86f3a515ce1a6d5f27fd15e3c5f4d8e931eBenjamin Peterson self.assertEqual(PY_SSIZE_T_MIN, getargs_n(PY_SSIZE_T_MIN)) 2735c8da86f3a515ce1a6d5f27fd15e3c5f4d8e931eBenjamin Peterson self.assertEqual(PY_SSIZE_T_MAX, getargs_n(PY_SSIZE_T_MAX)) 2747f573f7319f070d47565a2a37d659611ee844dd5Georg Brandl self.assertRaises(OverflowError, getargs_n, PY_SSIZE_T_MAX+1) 2757f573f7319f070d47565a2a37d659611ee844dd5Georg Brandl 2765c8da86f3a515ce1a6d5f27fd15e3c5f4d8e931eBenjamin Peterson self.assertEqual(42, getargs_n(42)) 2775c8da86f3a515ce1a6d5f27fd15e3c5f4d8e931eBenjamin Peterson self.assertEqual(42, getargs_n(42L)) 2787f573f7319f070d47565a2a37d659611ee844dd5Georg Brandl self.assertRaises(OverflowError, getargs_n, VERY_LARGE) 2797f573f7319f070d47565a2a37d659611ee844dd5Georg Brandl 280a4ea603b055533e71920a088acb1c106e4895dbdThomas Heller 2811f70221b861a3714735251d57695b2f472d0599bZachary Ware@unittest.skipUnless(_PY_LONG_LONG_available, 'PY_LONG_LONG not available') 282a4ea603b055533e71920a088acb1c106e4895dbdThomas Hellerclass LongLong_TestCase(unittest.TestCase): 283a4ea603b055533e71920a088acb1c106e4895dbdThomas Heller def test_L(self): 28454aa5781d50adf2ab2168399c2f6d16ccff0a5aaThomas Heller from _testcapi import getargs_L 2851b34d2552c2cb2369130291a8a9ae973753b4072Mark Dickinson # L returns 'long long', and does range checking (LLONG_MIN 2861b34d2552c2cb2369130291a8a9ae973753b4072Mark Dickinson # ... LLONG_MAX) 2871b34d2552c2cb2369130291a8a9ae973753b4072Mark Dickinson with warnings.catch_warnings(): 2881b34d2552c2cb2369130291a8a9ae973753b4072Mark Dickinson warnings.filterwarnings( 2891b34d2552c2cb2369130291a8a9ae973753b4072Mark Dickinson "ignore", 2901b34d2552c2cb2369130291a8a9ae973753b4072Mark Dickinson category=DeprecationWarning, 2911b34d2552c2cb2369130291a8a9ae973753b4072Mark Dickinson message=".*integer argument expected, got float", 2921b34d2552c2cb2369130291a8a9ae973753b4072Mark Dickinson module=__name__) 2931b34d2552c2cb2369130291a8a9ae973753b4072Mark Dickinson self.assertEqual(3, getargs_L(3.14)) 2941b34d2552c2cb2369130291a8a9ae973753b4072Mark Dickinson with warnings.catch_warnings(): 2951b34d2552c2cb2369130291a8a9ae973753b4072Mark Dickinson warnings.filterwarnings( 2961b34d2552c2cb2369130291a8a9ae973753b4072Mark Dickinson "error", 2971b34d2552c2cb2369130291a8a9ae973753b4072Mark Dickinson category=DeprecationWarning, 2981b34d2552c2cb2369130291a8a9ae973753b4072Mark Dickinson message=".*integer argument expected, got float", 2991b34d2552c2cb2369130291a8a9ae973753b4072Mark Dickinson module="unittest") 3001b34d2552c2cb2369130291a8a9ae973753b4072Mark Dickinson self.assertRaises(DeprecationWarning, getargs_L, 3.14) 3011b34d2552c2cb2369130291a8a9ae973753b4072Mark Dickinson 3025c8da86f3a515ce1a6d5f27fd15e3c5f4d8e931eBenjamin Peterson self.assertRaises(TypeError, getargs_L, "Hello") 3035c8da86f3a515ce1a6d5f27fd15e3c5f4d8e931eBenjamin Peterson self.assertEqual(99, getargs_L(Long())) 3045c8da86f3a515ce1a6d5f27fd15e3c5f4d8e931eBenjamin Peterson self.assertEqual(99, getargs_L(Int())) 305a4ea603b055533e71920a088acb1c106e4895dbdThomas Heller 30654aa5781d50adf2ab2168399c2f6d16ccff0a5aaThomas Heller self.assertRaises(OverflowError, getargs_L, LLONG_MIN-1) 3075c8da86f3a515ce1a6d5f27fd15e3c5f4d8e931eBenjamin Peterson self.assertEqual(LLONG_MIN, getargs_L(LLONG_MIN)) 3085c8da86f3a515ce1a6d5f27fd15e3c5f4d8e931eBenjamin Peterson self.assertEqual(LLONG_MAX, getargs_L(LLONG_MAX)) 30954aa5781d50adf2ab2168399c2f6d16ccff0a5aaThomas Heller self.assertRaises(OverflowError, getargs_L, LLONG_MAX+1) 310a4ea603b055533e71920a088acb1c106e4895dbdThomas Heller 3115c8da86f3a515ce1a6d5f27fd15e3c5f4d8e931eBenjamin Peterson self.assertEqual(42, getargs_L(42)) 3125c8da86f3a515ce1a6d5f27fd15e3c5f4d8e931eBenjamin Peterson self.assertEqual(42, getargs_L(42L)) 31354aa5781d50adf2ab2168399c2f6d16ccff0a5aaThomas Heller self.assertRaises(OverflowError, getargs_L, VERY_LARGE) 3140eadaac7dc3ae49974c105ff9e8c1e98a04d7d5aTim Peters 315a4ea603b055533e71920a088acb1c106e4895dbdThomas Heller def test_K(self): 31654aa5781d50adf2ab2168399c2f6d16ccff0a5aaThomas Heller from _testcapi import getargs_K 317a4ea603b055533e71920a088acb1c106e4895dbdThomas Heller # K return 'unsigned long long', no range checking 31854aa5781d50adf2ab2168399c2f6d16ccff0a5aaThomas Heller self.assertRaises(TypeError, getargs_K, 3.14) 31954aa5781d50adf2ab2168399c2f6d16ccff0a5aaThomas Heller self.assertRaises(TypeError, getargs_K, Long()) 32054aa5781d50adf2ab2168399c2f6d16ccff0a5aaThomas Heller self.assertRaises(TypeError, getargs_K, Int()) 3215c8da86f3a515ce1a6d5f27fd15e3c5f4d8e931eBenjamin Peterson self.assertEqual(ULLONG_MAX, getargs_K(ULLONG_MAX)) 3225c8da86f3a515ce1a6d5f27fd15e3c5f4d8e931eBenjamin Peterson self.assertEqual(0, getargs_K(0)) 3235c8da86f3a515ce1a6d5f27fd15e3c5f4d8e931eBenjamin Peterson self.assertEqual(0, getargs_K(ULLONG_MAX+1)) 324a4ea603b055533e71920a088acb1c106e4895dbdThomas Heller 3255c8da86f3a515ce1a6d5f27fd15e3c5f4d8e931eBenjamin Peterson self.assertEqual(42, getargs_K(42)) 3265c8da86f3a515ce1a6d5f27fd15e3c5f4d8e931eBenjamin Peterson self.assertEqual(42, getargs_K(42L)) 327a4ea603b055533e71920a088acb1c106e4895dbdThomas Heller 3285c8da86f3a515ce1a6d5f27fd15e3c5f4d8e931eBenjamin Peterson self.assertEqual(VERY_LARGE & ULLONG_MAX, getargs_K(VERY_LARGE)) 329a4ea603b055533e71920a088acb1c106e4895dbdThomas Heller 3305f135787ec4040bfbeb16f2944086028635151dbGeorg Brandl 331d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchakaclass Float_TestCase(unittest.TestCase): 332d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchaka def assertEqualWithSign(self, actual, expected): 333d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchaka self.assertEqual(actual, expected) 334d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchaka self.assertEqual(math.copysign(1, actual), math.copysign(1, expected)) 335d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchaka 336d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchaka def test_f(self): 337d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchaka from _testcapi import getargs_f 338d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchaka self.assertEqual(getargs_f(4.25), 4.25) 339d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchaka self.assertEqual(getargs_f(4), 4.0) 340d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchaka self.assertRaises(TypeError, getargs_f, 4.25+0j) 341d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchaka self.assertEqual(getargs_f(Float()), 4.25) 342d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchaka self.assertEqual(getargs_f(FloatSubclass(7.5)), 7.5) 343d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchaka self.assertEqual(getargs_f(FloatSubclass2(7.5)), 7.5) 344d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchaka self.assertRaises(TypeError, getargs_f, BadFloat()) 345d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchaka self.assertEqual(getargs_f(BadFloat2()), 4.25) 346d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchaka self.assertEqual(getargs_f(BadFloat3(7.5)), 7.5) 347d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchaka 348d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchaka for x in (FLT_MIN, -FLT_MIN, FLT_MAX, -FLT_MAX, INF, -INF): 349d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchaka self.assertEqual(getargs_f(x), x) 350d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchaka if FLT_MAX < DBL_MAX: 351d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchaka self.assertEqual(getargs_f(DBL_MAX), INF) 352d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchaka self.assertEqual(getargs_f(-DBL_MAX), -INF) 353d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchaka if FLT_MIN > DBL_MIN: 354d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchaka self.assertEqualWithSign(getargs_f(DBL_MIN), 0.0) 355d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchaka self.assertEqualWithSign(getargs_f(-DBL_MIN), -0.0) 356d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchaka self.assertEqualWithSign(getargs_f(0.0), 0.0) 357d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchaka self.assertEqualWithSign(getargs_f(-0.0), -0.0) 358d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchaka r = getargs_f(NAN) 359d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchaka self.assertNotEqual(r, r) 360d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchaka 361d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchaka def test_d(self): 362d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchaka from _testcapi import getargs_d 363d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchaka self.assertEqual(getargs_d(4.25), 4.25) 364d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchaka self.assertEqual(getargs_d(4), 4.0) 365d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchaka self.assertRaises(TypeError, getargs_d, 4.25+0j) 366d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchaka self.assertEqual(getargs_d(Float()), 4.25) 367d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchaka self.assertEqual(getargs_d(FloatSubclass(7.5)), 7.5) 368d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchaka self.assertEqual(getargs_d(FloatSubclass2(7.5)), 7.5) 369d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchaka self.assertRaises(TypeError, getargs_d, BadFloat()) 370d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchaka self.assertEqual(getargs_d(BadFloat2()), 4.25) 371d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchaka self.assertEqual(getargs_d(BadFloat3(7.5)), 7.5) 372d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchaka 373d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchaka for x in (DBL_MIN, -DBL_MIN, DBL_MAX, -DBL_MAX, INF, -INF): 374d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchaka self.assertEqual(getargs_d(x), x) 375d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchaka self.assertRaises(OverflowError, getargs_d, 1<<DBL_MAX_EXP) 376d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchaka self.assertRaises(OverflowError, getargs_d, -1<<DBL_MAX_EXP) 377d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchaka self.assertEqualWithSign(getargs_d(0.0), 0.0) 378d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchaka self.assertEqualWithSign(getargs_d(-0.0), -0.0) 379d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchaka r = getargs_d(NAN) 380d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchaka self.assertNotEqual(r, r) 381d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchaka 382d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchaka def test_D(self): 383d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchaka from _testcapi import getargs_D 384d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchaka self.assertEqual(getargs_D(4.25+0.5j), 4.25+0.5j) 385d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchaka self.assertEqual(getargs_D(4.25), 4.25+0j) 386d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchaka self.assertEqual(getargs_D(4), 4.0+0j) 387d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchaka self.assertEqual(getargs_D(Complex()), 4.25+0.5j) 388d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchaka self.assertEqual(getargs_D(ComplexSubclass(7.5+0.25j)), 7.5+0.25j) 389d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchaka self.assertEqual(getargs_D(ComplexSubclass2(7.5+0.25j)), 7.5+0.25j) 390d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchaka self.assertRaises(TypeError, getargs_D, BadComplex()) 391d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchaka self.assertEqual(getargs_D(BadComplex2()), 4.25+0.5j) 392d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchaka self.assertEqual(getargs_D(BadComplex3(7.5+0.25j)), 7.5+0.25j) 393d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchaka 394d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchaka for x in (DBL_MIN, -DBL_MIN, DBL_MAX, -DBL_MAX, INF, -INF): 395d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchaka c = complex(x, 1.0) 396d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchaka self.assertEqual(getargs_D(c), c) 397d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchaka c = complex(1.0, x) 398d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchaka self.assertEqual(getargs_D(c), c) 399d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchaka self.assertEqualWithSign(getargs_D(complex(0.0, 1.0)).real, 0.0) 400d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchaka self.assertEqualWithSign(getargs_D(complex(-0.0, 1.0)).real, -0.0) 401d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchaka self.assertEqualWithSign(getargs_D(complex(1.0, 0.0)).imag, 0.0) 402d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchaka self.assertEqualWithSign(getargs_D(complex(1.0, -0.0)).imag, -0.0) 403d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchaka 404d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchaka 4055f135787ec4040bfbeb16f2944086028635151dbGeorg Brandlclass Tuple_TestCase(unittest.TestCase): 406c6a7c96a8f9249739ca5f70f6b48eacf1b00fd36Serhiy Storchaka def test_args(self): 407c6a7c96a8f9249739ca5f70f6b48eacf1b00fd36Serhiy Storchaka from _testcapi import get_args 408c6a7c96a8f9249739ca5f70f6b48eacf1b00fd36Serhiy Storchaka 409c6a7c96a8f9249739ca5f70f6b48eacf1b00fd36Serhiy Storchaka ret = get_args(1, 2) 410c6a7c96a8f9249739ca5f70f6b48eacf1b00fd36Serhiy Storchaka self.assertEqual(ret, (1, 2)) 411c6a7c96a8f9249739ca5f70f6b48eacf1b00fd36Serhiy Storchaka self.assertIs(type(ret), tuple) 412c6a7c96a8f9249739ca5f70f6b48eacf1b00fd36Serhiy Storchaka 413c6a7c96a8f9249739ca5f70f6b48eacf1b00fd36Serhiy Storchaka ret = get_args(1, *(2, 3)) 414c6a7c96a8f9249739ca5f70f6b48eacf1b00fd36Serhiy Storchaka self.assertEqual(ret, (1, 2, 3)) 415c6a7c96a8f9249739ca5f70f6b48eacf1b00fd36Serhiy Storchaka self.assertIs(type(ret), tuple) 416c6a7c96a8f9249739ca5f70f6b48eacf1b00fd36Serhiy Storchaka 417c6a7c96a8f9249739ca5f70f6b48eacf1b00fd36Serhiy Storchaka ret = get_args(*[1, 2]) 418c6a7c96a8f9249739ca5f70f6b48eacf1b00fd36Serhiy Storchaka self.assertEqual(ret, (1, 2)) 419c6a7c96a8f9249739ca5f70f6b48eacf1b00fd36Serhiy Storchaka self.assertIs(type(ret), tuple) 420c6a7c96a8f9249739ca5f70f6b48eacf1b00fd36Serhiy Storchaka 421c6a7c96a8f9249739ca5f70f6b48eacf1b00fd36Serhiy Storchaka ret = get_args(*TupleSubclass([1, 2])) 422c6a7c96a8f9249739ca5f70f6b48eacf1b00fd36Serhiy Storchaka self.assertEqual(ret, (1, 2)) 423c6a7c96a8f9249739ca5f70f6b48eacf1b00fd36Serhiy Storchaka self.assertIsInstance(ret, tuple) 424c6a7c96a8f9249739ca5f70f6b48eacf1b00fd36Serhiy Storchaka 425c6a7c96a8f9249739ca5f70f6b48eacf1b00fd36Serhiy Storchaka ret = get_args() 426c6a7c96a8f9249739ca5f70f6b48eacf1b00fd36Serhiy Storchaka self.assertIn(ret, ((), None)) 427c6a7c96a8f9249739ca5f70f6b48eacf1b00fd36Serhiy Storchaka self.assertIn(type(ret), (tuple, type(None))) 428c6a7c96a8f9249739ca5f70f6b48eacf1b00fd36Serhiy Storchaka 429c6a7c96a8f9249739ca5f70f6b48eacf1b00fd36Serhiy Storchaka ret = get_args(*()) 430c6a7c96a8f9249739ca5f70f6b48eacf1b00fd36Serhiy Storchaka self.assertIn(ret, ((), None)) 431c6a7c96a8f9249739ca5f70f6b48eacf1b00fd36Serhiy Storchaka self.assertIn(type(ret), (tuple, type(None))) 432c6a7c96a8f9249739ca5f70f6b48eacf1b00fd36Serhiy Storchaka 4335f135787ec4040bfbeb16f2944086028635151dbGeorg Brandl def test_tuple(self): 4345f135787ec4040bfbeb16f2944086028635151dbGeorg Brandl from _testcapi import getargs_tuple 43595621b25dce4dc80c2c38f336e8052851d211374Tim Peters 4365f135787ec4040bfbeb16f2944086028635151dbGeorg Brandl ret = getargs_tuple(1, (2, 3)) 4372623a37852153363335956afab010cb0beb7e74eEzio Melotti self.assertEqual(ret, (1,2,3)) 4385f135787ec4040bfbeb16f2944086028635151dbGeorg Brandl 4395f135787ec4040bfbeb16f2944086028635151dbGeorg Brandl # make sure invalid tuple arguments are handled correctly 4405f135787ec4040bfbeb16f2944086028635151dbGeorg Brandl class seq: 4415f135787ec4040bfbeb16f2944086028635151dbGeorg Brandl def __len__(self): 4425f135787ec4040bfbeb16f2944086028635151dbGeorg Brandl return 2 4435f135787ec4040bfbeb16f2944086028635151dbGeorg Brandl def __getitem__(self, n): 4445f135787ec4040bfbeb16f2944086028635151dbGeorg Brandl raise ValueError 4455f135787ec4040bfbeb16f2944086028635151dbGeorg Brandl self.assertRaises(TypeError, getargs_tuple, 1, seq()) 4465f135787ec4040bfbeb16f2944086028635151dbGeorg Brandl 447ea837931cf393aa0373ccfa1849b2a3d6e3cc6eaChristian Heimesclass Keywords_TestCase(unittest.TestCase): 448c6a7c96a8f9249739ca5f70f6b48eacf1b00fd36Serhiy Storchaka def test_kwargs(self): 449c6a7c96a8f9249739ca5f70f6b48eacf1b00fd36Serhiy Storchaka from _testcapi import get_kwargs 450c6a7c96a8f9249739ca5f70f6b48eacf1b00fd36Serhiy Storchaka 451c6a7c96a8f9249739ca5f70f6b48eacf1b00fd36Serhiy Storchaka ret = get_kwargs(a=1, b=2) 452c6a7c96a8f9249739ca5f70f6b48eacf1b00fd36Serhiy Storchaka self.assertEqual(ret, {'a': 1, 'b': 2}) 453c6a7c96a8f9249739ca5f70f6b48eacf1b00fd36Serhiy Storchaka self.assertIs(type(ret), dict) 454c6a7c96a8f9249739ca5f70f6b48eacf1b00fd36Serhiy Storchaka 455c6a7c96a8f9249739ca5f70f6b48eacf1b00fd36Serhiy Storchaka ret = get_kwargs(a=1, **{'b': 2, 'c': 3}) 456c6a7c96a8f9249739ca5f70f6b48eacf1b00fd36Serhiy Storchaka self.assertEqual(ret, {'a': 1, 'b': 2, 'c': 3}) 457c6a7c96a8f9249739ca5f70f6b48eacf1b00fd36Serhiy Storchaka self.assertIs(type(ret), dict) 458c6a7c96a8f9249739ca5f70f6b48eacf1b00fd36Serhiy Storchaka 459c6a7c96a8f9249739ca5f70f6b48eacf1b00fd36Serhiy Storchaka ret = get_kwargs(**DictSubclass({'a': 1, 'b': 2})) 460c6a7c96a8f9249739ca5f70f6b48eacf1b00fd36Serhiy Storchaka self.assertEqual(ret, {'a': 1, 'b': 2}) 461c6a7c96a8f9249739ca5f70f6b48eacf1b00fd36Serhiy Storchaka self.assertIsInstance(ret, dict) 462c6a7c96a8f9249739ca5f70f6b48eacf1b00fd36Serhiy Storchaka 463c6a7c96a8f9249739ca5f70f6b48eacf1b00fd36Serhiy Storchaka ret = get_kwargs() 464c6a7c96a8f9249739ca5f70f6b48eacf1b00fd36Serhiy Storchaka self.assertIn(ret, ({}, None)) 465c6a7c96a8f9249739ca5f70f6b48eacf1b00fd36Serhiy Storchaka self.assertIn(type(ret), (dict, type(None))) 466c6a7c96a8f9249739ca5f70f6b48eacf1b00fd36Serhiy Storchaka 467c6a7c96a8f9249739ca5f70f6b48eacf1b00fd36Serhiy Storchaka ret = get_kwargs(**{}) 468c6a7c96a8f9249739ca5f70f6b48eacf1b00fd36Serhiy Storchaka self.assertIn(ret, ({}, None)) 469c6a7c96a8f9249739ca5f70f6b48eacf1b00fd36Serhiy Storchaka self.assertIn(type(ret), (dict, type(None))) 470c6a7c96a8f9249739ca5f70f6b48eacf1b00fd36Serhiy Storchaka 471ea837931cf393aa0373ccfa1849b2a3d6e3cc6eaChristian Heimes def test_positional_args(self): 472ea837931cf393aa0373ccfa1849b2a3d6e3cc6eaChristian Heimes # using all positional args 4732623a37852153363335956afab010cb0beb7e74eEzio Melotti self.assertEqual( 474ea837931cf393aa0373ccfa1849b2a3d6e3cc6eaChristian Heimes getargs_keywords((1,2), 3, (4,(5,6)), (7,8,9), 10), 475ea837931cf393aa0373ccfa1849b2a3d6e3cc6eaChristian Heimes (1, 2, 3, 4, 5, 6, 7, 8, 9, 10) 476ea837931cf393aa0373ccfa1849b2a3d6e3cc6eaChristian Heimes ) 477ea837931cf393aa0373ccfa1849b2a3d6e3cc6eaChristian Heimes def test_mixed_args(self): 478ea837931cf393aa0373ccfa1849b2a3d6e3cc6eaChristian Heimes # positional and keyword args 4792623a37852153363335956afab010cb0beb7e74eEzio Melotti self.assertEqual( 480ea837931cf393aa0373ccfa1849b2a3d6e3cc6eaChristian Heimes getargs_keywords((1,2), 3, (4,(5,6)), arg4=(7,8,9), arg5=10), 481ea837931cf393aa0373ccfa1849b2a3d6e3cc6eaChristian Heimes (1, 2, 3, 4, 5, 6, 7, 8, 9, 10) 482ea837931cf393aa0373ccfa1849b2a3d6e3cc6eaChristian Heimes ) 483ea837931cf393aa0373ccfa1849b2a3d6e3cc6eaChristian Heimes def test_keyword_args(self): 484ea837931cf393aa0373ccfa1849b2a3d6e3cc6eaChristian Heimes # all keywords 4852623a37852153363335956afab010cb0beb7e74eEzio Melotti self.assertEqual( 486ea837931cf393aa0373ccfa1849b2a3d6e3cc6eaChristian Heimes getargs_keywords(arg1=(1,2), arg2=3, arg3=(4,(5,6)), arg4=(7,8,9), arg5=10), 487ea837931cf393aa0373ccfa1849b2a3d6e3cc6eaChristian Heimes (1, 2, 3, 4, 5, 6, 7, 8, 9, 10) 488ea837931cf393aa0373ccfa1849b2a3d6e3cc6eaChristian Heimes ) 489ea837931cf393aa0373ccfa1849b2a3d6e3cc6eaChristian Heimes def test_optional_args(self): 490ea837931cf393aa0373ccfa1849b2a3d6e3cc6eaChristian Heimes # missing optional keyword args, skipping tuples 4912623a37852153363335956afab010cb0beb7e74eEzio Melotti self.assertEqual( 492ea837931cf393aa0373ccfa1849b2a3d6e3cc6eaChristian Heimes getargs_keywords(arg1=(1,2), arg2=3, arg5=10), 493ea837931cf393aa0373ccfa1849b2a3d6e3cc6eaChristian Heimes (1, 2, 3, -1, -1, -1, -1, -1, -1, 10) 494ea837931cf393aa0373ccfa1849b2a3d6e3cc6eaChristian Heimes ) 495ea837931cf393aa0373ccfa1849b2a3d6e3cc6eaChristian Heimes def test_required_args(self): 496ea837931cf393aa0373ccfa1849b2a3d6e3cc6eaChristian Heimes # required arg missing 497ea837931cf393aa0373ccfa1849b2a3d6e3cc6eaChristian Heimes try: 498ea837931cf393aa0373ccfa1849b2a3d6e3cc6eaChristian Heimes getargs_keywords(arg1=(1,2)) 499ea837931cf393aa0373ccfa1849b2a3d6e3cc6eaChristian Heimes except TypeError, err: 5002623a37852153363335956afab010cb0beb7e74eEzio Melotti self.assertEqual(str(err), "Required argument 'arg2' (pos 2) not found") 501ea837931cf393aa0373ccfa1849b2a3d6e3cc6eaChristian Heimes else: 502ea837931cf393aa0373ccfa1849b2a3d6e3cc6eaChristian Heimes self.fail('TypeError should have been raised') 503ea837931cf393aa0373ccfa1849b2a3d6e3cc6eaChristian Heimes def test_too_many_args(self): 504ea837931cf393aa0373ccfa1849b2a3d6e3cc6eaChristian Heimes try: 505ea837931cf393aa0373ccfa1849b2a3d6e3cc6eaChristian Heimes getargs_keywords((1,2),3,(4,(5,6)),(7,8,9),10,111) 506ea837931cf393aa0373ccfa1849b2a3d6e3cc6eaChristian Heimes except TypeError, err: 5072623a37852153363335956afab010cb0beb7e74eEzio Melotti self.assertEqual(str(err), "function takes at most 5 arguments (6 given)") 508ea837931cf393aa0373ccfa1849b2a3d6e3cc6eaChristian Heimes else: 509ea837931cf393aa0373ccfa1849b2a3d6e3cc6eaChristian Heimes self.fail('TypeError should have been raised') 510ea837931cf393aa0373ccfa1849b2a3d6e3cc6eaChristian Heimes def test_invalid_keyword(self): 511ea837931cf393aa0373ccfa1849b2a3d6e3cc6eaChristian Heimes # extraneous keyword arg 512ea837931cf393aa0373ccfa1849b2a3d6e3cc6eaChristian Heimes try: 513ea837931cf393aa0373ccfa1849b2a3d6e3cc6eaChristian Heimes getargs_keywords((1,2),3,arg5=10,arg666=666) 514ea837931cf393aa0373ccfa1849b2a3d6e3cc6eaChristian Heimes except TypeError, err: 5152623a37852153363335956afab010cb0beb7e74eEzio Melotti self.assertEqual(str(err), "'arg666' is an invalid keyword argument for this function") 516ea837931cf393aa0373ccfa1849b2a3d6e3cc6eaChristian Heimes else: 517ea837931cf393aa0373ccfa1849b2a3d6e3cc6eaChristian Heimes self.fail('TypeError should have been raised') 5185f135787ec4040bfbeb16f2944086028635151dbGeorg Brandl 5193ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka 5203ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchakaclass Bytes_TestCase(unittest.TestCase): 5213ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka def test_c(self): 5223ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka from _testcapi import getargs_c 5233ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertRaises(TypeError, getargs_c, 'abc') # len > 1 5243ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertEqual(getargs_c('a'), 97) 5253ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka if test_support.have_unicode: 5263ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertRaises(TypeError, getargs_c, u's') 5273ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertRaises(TypeError, getargs_c, bytearray('a')) 5283ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertRaises(TypeError, getargs_c, memoryview('a')) 5293ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka with test_support.check_py3k_warnings(): 5303ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertRaises(TypeError, getargs_c, buffer('a')) 5313ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertRaises(TypeError, getargs_c, 97) 5323ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertRaises(TypeError, getargs_c, None) 5333ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka 5343ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka def test_w(self): 5353ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka from _testcapi import getargs_w 5363ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertRaises(TypeError, getargs_w, 'abc', 3) 5373ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertRaises(TypeError, getargs_w, u'abc', 3) 5383ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertRaises(TypeError, getargs_w, bytearray('bytes'), 3) 5393ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertRaises(TypeError, getargs_w, memoryview('bytes'), 3) 5403ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertRaises(TypeError, getargs_w, 5413ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka memoryview(bytearray('bytes')), 3) 5423ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka with test_support.check_py3k_warnings(): 5433ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertRaises(TypeError, getargs_w, buffer('bytes'), 3) 5443ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertRaises(TypeError, getargs_w, 5453ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka buffer(bytearray('bytes')), 3) 5463ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertRaises(TypeError, getargs_w, None, 0) 5473ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka 5483ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka def test_w_hash(self): 5493ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka from _testcapi import getargs_w_hash 5503ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertRaises(TypeError, getargs_w_hash, 'abc') 5513ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertRaises(TypeError, getargs_w_hash, u'abc') 5523ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertRaises(TypeError, getargs_w_hash, bytearray('bytes')) 5533ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertRaises(TypeError, getargs_w_hash, memoryview('bytes')) 5543ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertRaises(TypeError, getargs_w_hash, 5553ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka memoryview(bytearray('bytes'))) 5563ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka with test_support.check_py3k_warnings(): 5573ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertRaises(TypeError, getargs_w_hash, buffer('bytes')) 5583ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertRaises(TypeError, getargs_w_hash, 5593ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka buffer(bytearray('bytes'))) 5603ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertRaises(TypeError, getargs_w_hash, None) 5613ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka 5623ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka def test_w_star(self): 5633ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka # getargs_w_star() modifies first and last byte 5643ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka from _testcapi import getargs_w_star 5653ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertRaises(TypeError, getargs_w_star, 'abc') 5663ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertRaises(TypeError, getargs_w_star, u'abc') 5673ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertRaises(TypeError, getargs_w_star, memoryview('bytes')) 5683ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka buf = bytearray('bytearray') 5693ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertEqual(getargs_w_star(buf), '[ytearra]') 5703ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertEqual(buf, bytearray('[ytearra]')) 5713ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka buf = bytearray(b'memoryview') 5723ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertEqual(getargs_w_star(memoryview(buf)), '[emoryvie]') 5733ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertEqual(buf, bytearray('[emoryvie]')) 5743ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka with test_support.check_py3k_warnings(): 5753ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertRaises(TypeError, getargs_w_star, buffer('buffer')) 5763ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertRaises(TypeError, getargs_w_star, 5773ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka buffer(bytearray('buffer'))) 5783ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertRaises(TypeError, getargs_w_star, None) 5793ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka 5803ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka 5813ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchakaclass String_TestCase(unittest.TestCase): 5823ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka def test_s(self): 5833ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka from _testcapi import getargs_s 5843ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertEqual(getargs_s('abc\xe9'), 'abc\xe9') 5853ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertEqual(getargs_s(u'abc'), 'abc') 5863ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertRaises(TypeError, getargs_s, 'nul:\0') 5873ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertRaises(TypeError, getargs_s, u'nul:\0') 5883ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertRaises(TypeError, getargs_s, bytearray('bytearray')) 5893ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertRaises(TypeError, getargs_s, memoryview('memoryview')) 5903ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka with test_support.check_py3k_warnings(): 5913ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertRaises(TypeError, getargs_s, buffer('buffer')) 5923ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertRaises(TypeError, getargs_s, None) 5933ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka 5943ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka def test_s_star(self): 5953ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka from _testcapi import getargs_s_star 5963ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertEqual(getargs_s_star('abc\xe9'), 'abc\xe9') 5973ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertEqual(getargs_s_star(u'abc'), 'abc') 5983ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertEqual(getargs_s_star('nul:\0'), 'nul:\0') 5993ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertEqual(getargs_s_star(u'nul:\0'), 'nul:\0') 6003ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertEqual(getargs_s_star(bytearray('abc\xe9')), 'abc\xe9') 6013ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertEqual(getargs_s_star(memoryview('abc\xe9')), 'abc\xe9') 6023ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka with test_support.check_py3k_warnings(): 6033ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertEqual(getargs_s_star(buffer('abc\xe9')), 'abc\xe9') 6043ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertEqual(getargs_s_star(buffer(u'abc\xe9')), 6053ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka str(buffer(u'abc\xe9'))) 6063ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertRaises(TypeError, getargs_s_star, None) 6073ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka 6083ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka def test_s_hash(self): 6093ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka from _testcapi import getargs_s_hash 6103ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertEqual(getargs_s_hash('abc\xe9'), 'abc\xe9') 6113ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertEqual(getargs_s_hash(u'abc'), 'abc') 6123ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertEqual(getargs_s_hash('nul:\0'), 'nul:\0') 6133ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertEqual(getargs_s_hash(u'nul:\0'), 'nul:\0') 6143ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertRaises(TypeError, getargs_s_hash, bytearray('bytearray')) 6153ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertRaises(TypeError, getargs_s_hash, memoryview('memoryview')) 6163ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka with test_support.check_py3k_warnings(): 6173ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertEqual(getargs_s_hash(buffer('abc\xe9')), 'abc\xe9') 6183ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertEqual(getargs_s_hash(buffer(u'abc\xe9')), 6193ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka str(buffer(u'abc\xe9'))) 6203ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertRaises(TypeError, getargs_s_hash, None) 6213ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka 6223ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka def test_t_hash(self): 6233ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka from _testcapi import getargs_t_hash 6243ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertEqual(getargs_t_hash('abc\xe9'), 'abc\xe9') 6253ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertEqual(getargs_t_hash(u'abc'), 'abc') 6263ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertEqual(getargs_t_hash('nul:\0'), 'nul:\0') 6273ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertEqual(getargs_t_hash(u'nul:\0'), 'nul:\0') 6283ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertRaises(TypeError, getargs_t_hash, bytearray('bytearray')) 6293ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertRaises(TypeError, getargs_t_hash, memoryview('memoryview')) 6303ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka with test_support.check_py3k_warnings(): 6313ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertEqual(getargs_t_hash(buffer('abc\xe9')), 'abc\xe9') 6323ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertEqual(getargs_t_hash(buffer(u'abc')), 'abc') 6333ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertRaises(TypeError, getargs_t_hash, None) 6343ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka 6353ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka def test_z(self): 6363ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka from _testcapi import getargs_z 6373ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertEqual(getargs_z('abc\xe9'), 'abc\xe9') 6383ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertEqual(getargs_z(u'abc'), 'abc') 6393ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertRaises(TypeError, getargs_z, 'nul:\0') 6403ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertRaises(TypeError, getargs_z, u'nul:\0') 6413ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertRaises(TypeError, getargs_z, bytearray('bytearray')) 6423ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertRaises(TypeError, getargs_z, memoryview('memoryview')) 6433ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka with test_support.check_py3k_warnings(): 6443ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertRaises(TypeError, getargs_z, buffer('buffer')) 6453ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertIsNone(getargs_z(None)) 6463ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka 6473ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka def test_z_star(self): 6483ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka from _testcapi import getargs_z_star 6493ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertEqual(getargs_z_star('abc\xe9'), 'abc\xe9') 6503ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertEqual(getargs_z_star(u'abc'), 'abc') 6513ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertEqual(getargs_z_star('nul:\0'), 'nul:\0') 6523ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertEqual(getargs_z_star(u'nul:\0'), 'nul:\0') 6533ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertEqual(getargs_z_star(bytearray('abc\xe9')), 'abc\xe9') 6543ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertEqual(getargs_z_star(memoryview('abc\xe9')), 'abc\xe9') 6553ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka with test_support.check_py3k_warnings(): 6563ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertEqual(getargs_z_star(buffer('abc\xe9')), 'abc\xe9') 6573ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertEqual(getargs_z_star(buffer(u'abc\xe9')), 6583ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka str(buffer(u'abc\xe9'))) 6593ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertIsNone(getargs_z_star(None)) 6603ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka 6613ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka def test_z_hash(self): 6623ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka from _testcapi import getargs_z_hash 6633ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertEqual(getargs_z_hash('abc\xe9'), 'abc\xe9') 6643ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertEqual(getargs_z_hash(u'abc'), 'abc') 6653ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertEqual(getargs_z_hash('nul:\0'), 'nul:\0') 6663ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertEqual(getargs_z_hash(u'nul:\0'), 'nul:\0') 6673ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertRaises(TypeError, getargs_z_hash, bytearray('bytearray')) 6683ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertRaises(TypeError, getargs_z_hash, memoryview('memoryview')) 6693ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka with test_support.check_py3k_warnings(): 6703ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertEqual(getargs_z_hash(buffer('abc\xe9')), 'abc\xe9') 6713ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertEqual(getargs_z_hash(buffer(u'abc\xe9')), 6723ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka str(buffer(u'abc\xe9'))) 6733ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertIsNone(getargs_z_hash(None)) 6743ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka 6753ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka 6763ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka@test_support.requires_unicode 6773ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchakaclass Unicode_TestCase(unittest.TestCase): 6783ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka def test_es(self): 6793ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka from _testcapi import getargs_es 6803ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertEqual(getargs_es('abc'), 'abc') 6813ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertEqual(getargs_es(u'abc'), 'abc') 6823ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertEqual(getargs_es('abc', 'ascii'), 'abc') 6833ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertEqual(getargs_es(u'abc\xe9', 'latin1'), 'abc\xe9') 6843ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertRaises(UnicodeEncodeError, getargs_es, u'abc\xe9', 'ascii') 6853ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertRaises(LookupError, getargs_es, u'abc', 'spam') 6863ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertRaises(TypeError, getargs_es, 6873ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka bytearray('bytearray'), 'latin1') 6883ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertRaises(TypeError, getargs_es, 6893ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka memoryview('memoryview'), 'latin1') 6903ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka with test_support.check_py3k_warnings(): 6913ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertEqual(getargs_es(buffer('abc'), 'ascii'), 'abc') 6923ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertEqual(getargs_es(buffer(u'abc'), 'ascii'), 'abc') 6933ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertRaises(TypeError, getargs_es, None, 'latin1') 6943ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertRaises(TypeError, getargs_es, 'nul:\0', 'latin1') 6953ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertRaises(TypeError, getargs_es, u'nul:\0', 'latin1') 6963ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka 6973ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka def test_et(self): 6983ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka from _testcapi import getargs_et 6993ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertEqual(getargs_et('abc\xe9'), 'abc\xe9') 7003ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertEqual(getargs_et(u'abc'), 'abc') 7013ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertEqual(getargs_et('abc', 'ascii'), 'abc') 7023ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertEqual(getargs_et('abc\xe9', 'ascii'), 'abc\xe9') 7033ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertEqual(getargs_et(u'abc\xe9', 'latin1'), 'abc\xe9') 7043ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertRaises(UnicodeEncodeError, getargs_et, u'abc\xe9', 'ascii') 7053ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertRaises(LookupError, getargs_et, u'abc', 'spam') 7063ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertRaises(TypeError, getargs_et, 7073ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka bytearray('bytearray'), 'latin1') 7083ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertRaises(TypeError, getargs_et, 7093ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka memoryview('memoryview'), 'latin1') 7103ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka with test_support.check_py3k_warnings(): 7113ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertEqual(getargs_et(buffer('abc'), 'ascii'), 'abc') 7123ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertEqual(getargs_et(buffer(u'abc'), 'ascii'), 'abc') 7133ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertRaises(TypeError, getargs_et, None, 'latin1') 7143ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertRaises(TypeError, getargs_et, 'nul:\0', 'latin1') 7153ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertRaises(TypeError, getargs_et, u'nul:\0', 'latin1') 7163ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka 7173ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka def test_es_hash(self): 7183ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka from _testcapi import getargs_es_hash 7193ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertEqual(getargs_es_hash('abc'), 'abc') 7203ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertEqual(getargs_es_hash(u'abc'), 'abc') 7213ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertEqual(getargs_es_hash(u'abc\xe9', 'latin1'), 'abc\xe9') 7223ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertRaises(UnicodeEncodeError, getargs_es_hash, u'abc\xe9', 'ascii') 7233ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertRaises(LookupError, getargs_es_hash, u'abc', 'spam') 7243ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertRaises(TypeError, getargs_es_hash, 7253ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka bytearray('bytearray'), 'latin1') 7263ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertRaises(TypeError, getargs_es_hash, 7273ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka memoryview('memoryview'), 'latin1') 7283ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka with test_support.check_py3k_warnings(): 7293ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertEqual(getargs_es_hash(buffer('abc'), 'ascii'), 'abc') 7303ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertEqual(getargs_es_hash(buffer(u'abc'), 'ascii'), 'abc') 7313ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertRaises(TypeError, getargs_es_hash, None, 'latin1') 7323ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertEqual(getargs_es_hash('nul:\0', 'latin1'), 'nul:\0') 7333ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertEqual(getargs_es_hash(u'nul:\0', 'latin1'), 'nul:\0') 7343ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka 7353ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka buf = bytearray('x'*8) 7363ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertEqual(getargs_es_hash(u'abc\xe9', 'latin1', buf), 'abc\xe9') 7373ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertEqual(buf, bytearray('abc\xe9\x00xxx')) 7383ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka buf = bytearray('x'*5) 7393ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertEqual(getargs_es_hash(u'abc\xe9', 'latin1', buf), 'abc\xe9') 7403ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertEqual(buf, bytearray('abc\xe9\x00')) 7413ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka buf = bytearray('x'*4) 7423ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertRaises(TypeError, getargs_es_hash, u'abc\xe9', 'latin1', buf) 7433ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertEqual(buf, bytearray('x'*4)) 7443ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka buf = bytearray() 7453ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertRaises(TypeError, getargs_es_hash, u'abc\xe9', 'latin1', buf) 7463ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka 7473ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka def test_et_hash(self): 7483ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka from _testcapi import getargs_et_hash 7493ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertEqual(getargs_et_hash('abc\xe9'), 'abc\xe9') 7503ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertEqual(getargs_et_hash(u'abc'), 'abc') 7513ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertEqual(getargs_et_hash('abc\xe9', 'ascii'), 'abc\xe9') 7523ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertEqual(getargs_et_hash(u'abc\xe9', 'latin1'), 'abc\xe9') 7533ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertRaises(UnicodeEncodeError, getargs_et_hash, 7543ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka u'abc\xe9', 'ascii') 7553ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertRaises(LookupError, getargs_et_hash, u'abc', 'spam') 7563ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertRaises(TypeError, getargs_et_hash, 7573ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka bytearray('bytearray'), 'latin1') 7583ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertRaises(TypeError, getargs_et_hash, 7593ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka memoryview('memoryview'), 'latin1') 7603ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka with test_support.check_py3k_warnings(): 7613ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertEqual(getargs_et_hash(buffer('abc'), 'ascii'), 'abc') 7623ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertEqual(getargs_et_hash(buffer(u'abc'), 'ascii'), 'abc') 7633ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertRaises(TypeError, getargs_et_hash, None, 'latin1') 7643ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertEqual(getargs_et_hash('nul:\0', 'latin1'), 'nul:\0') 7653ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertEqual(getargs_et_hash(u'nul:\0', 'latin1'), 'nul:\0') 7663ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka 7673ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka buf = bytearray('x'*8) 7683ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertEqual(getargs_et_hash(u'abc\xe9', 'latin1', buf), 'abc\xe9') 7693ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertEqual(buf, bytearray('abc\xe9\x00xxx')) 7703ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka buf = bytearray('x'*5) 7713ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertEqual(getargs_et_hash(u'abc\xe9', 'latin1', buf), 'abc\xe9') 7723ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertEqual(buf, bytearray('abc\xe9\x00')) 7733ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka buf = bytearray('x'*4) 7743ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertRaises(TypeError, getargs_et_hash, u'abc\xe9', 'latin1', buf) 7753ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertEqual(buf, bytearray('x'*4)) 7763ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka buf = bytearray() 7773ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertRaises(TypeError, getargs_et_hash, u'abc\xe9', 'latin1', buf) 7783ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka 7793ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka def test_u(self): 7803ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka from _testcapi import getargs_u 7813ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertEqual(getargs_u(u'abc\xe9'), u'abc\xe9') 7823c9ce74c218703ed75a11f71ed215559fa0c4257Serhiy Storchaka self.assertRaises(TypeError, getargs_u, u'nul:\0') 7833ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertRaises(TypeError, getargs_u, 'bytes') 7843ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertRaises(TypeError, getargs_u, bytearray('bytearray')) 7853ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertRaises(TypeError, getargs_u, memoryview('memoryview')) 7863ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka with test_support.check_py3k_warnings(): 7873ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertRaises(TypeError, getargs_u, buffer('buffer')) 7883ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertRaises(TypeError, getargs_u, None) 7893ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka 7903ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka def test_u_hash(self): 7913ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka from _testcapi import getargs_u_hash 7923ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertEqual(getargs_u_hash(u'abc\xe9'), u'abc\xe9') 7933ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertEqual(getargs_u_hash(u'nul:\0'), u'nul:\0') 7943ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertRaises(TypeError, getargs_u_hash, 'bytes') 7953ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertRaises(TypeError, getargs_u_hash, bytearray('bytearray')) 7963ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertRaises(TypeError, getargs_u_hash, memoryview('memoryview')) 7973ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka with test_support.check_py3k_warnings(): 7983ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertRaises(TypeError, getargs_u_hash, buffer('buffer')) 7993ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka self.assertRaises(TypeError, getargs_u_hash, None) 8003ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka 8013ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka 802a4ea603b055533e71920a088acb1c106e4895dbdThomas Hellerdef test_main(): 8031f70221b861a3714735251d57695b2f472d0599bZachary Ware tests = [Signed_TestCase, Unsigned_TestCase, LongLong_TestCase, 8043ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka Tuple_TestCase, Keywords_TestCase, 8053ecb6ab993a62f892d88def7adb5fe2954695dedSerhiy Storchaka Bytes_TestCase, String_TestCase, Unicode_TestCase] 80621d3a32b99c5763444c34c189ef653ac9745f3c4Walter Dörwald test_support.run_unittest(*tests) 807a4ea603b055533e71920a088acb1c106e4895dbdThomas Heller 808d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchakaclass Object_TestCase(unittest.TestCase): 809d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchaka def test_S(self): 810d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchaka from _testcapi import getargs_S 811d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchaka obj = 'str' 812d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchaka self.assertIs(getargs_S(obj), obj) 813d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchaka self.assertRaises(TypeError, getargs_S, bytearray('bytearray')) 814d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchaka if test_support.have_unicode: 815d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchaka self.assertRaises(TypeError, getargs_S, u'unicode') 816d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchaka self.assertRaises(TypeError, getargs_S, None) 817d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchaka self.assertRaises(TypeError, getargs_S, memoryview(obj)) 818d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchaka self.assertRaises(TypeError, getargs_S, buffer(obj)) 819d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchaka 820d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchaka def test_Y(self): 821d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchaka from _testcapi import getargs_Y 822d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchaka obj = bytearray('bytearray') 823d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchaka self.assertIs(getargs_Y(obj), obj) 824d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchaka self.assertRaises(TypeError, getargs_Y, 'str') 825d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchaka if test_support.have_unicode: 826d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchaka self.assertRaises(TypeError, getargs_Y, u'unicode') 827d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchaka self.assertRaises(TypeError, getargs_Y, None) 828d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchaka self.assertRaises(TypeError, getargs_Y, memoryview(obj)) 829d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchaka self.assertRaises(TypeError, getargs_Y, buffer(obj)) 830d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchaka 831d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchaka @test_support.requires_unicode 832d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchaka def test_U(self): 833d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchaka from _testcapi import getargs_U 834d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchaka obj = u'unicode' 835d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchaka self.assertIs(getargs_U(obj), obj) 836d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchaka self.assertRaises(TypeError, getargs_U, 'str') 837d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchaka self.assertRaises(TypeError, getargs_U, bytearray('bytearray')) 838d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchaka self.assertRaises(TypeError, getargs_U, None) 839d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchaka self.assertRaises(TypeError, getargs_U, memoryview(obj)) 840d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchaka self.assertRaises(TypeError, getargs_U, buffer(obj)) 841d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchaka 842d0dc72b4977ef9712bedd5c5940c2286d6e9a98bSerhiy Storchaka 843a4ea603b055533e71920a088acb1c106e4895dbdThomas Hellerif __name__ == "__main__": 844a4ea603b055533e71920a088acb1c106e4895dbdThomas Heller test_main() 845