10a8c90248264a8b26970b4473770bcc3df8515fJosh Gao# Test properties of bool promised by PEP 285 20a8c90248264a8b26970b4473770bcc3df8515fJosh Gao 30a8c90248264a8b26970b4473770bcc3df8515fJosh Gaoimport unittest 40a8c90248264a8b26970b4473770bcc3df8515fJosh Gaofrom test import test_support 50a8c90248264a8b26970b4473770bcc3df8515fJosh Gao 60a8c90248264a8b26970b4473770bcc3df8515fJosh Gaoimport os 70a8c90248264a8b26970b4473770bcc3df8515fJosh Gao 80a8c90248264a8b26970b4473770bcc3df8515fJosh Gaoclass BoolTest(unittest.TestCase): 90a8c90248264a8b26970b4473770bcc3df8515fJosh Gao 100a8c90248264a8b26970b4473770bcc3df8515fJosh Gao def test_subclass(self): 110a8c90248264a8b26970b4473770bcc3df8515fJosh Gao try: 120a8c90248264a8b26970b4473770bcc3df8515fJosh Gao class C(bool): 130a8c90248264a8b26970b4473770bcc3df8515fJosh Gao pass 140a8c90248264a8b26970b4473770bcc3df8515fJosh Gao except TypeError: 150a8c90248264a8b26970b4473770bcc3df8515fJosh Gao pass 160a8c90248264a8b26970b4473770bcc3df8515fJosh Gao else: 170a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.fail("bool should not be subclassable") 180a8c90248264a8b26970b4473770bcc3df8515fJosh Gao 190a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertRaises(TypeError, int.__new__, bool, 0) 200a8c90248264a8b26970b4473770bcc3df8515fJosh Gao 210a8c90248264a8b26970b4473770bcc3df8515fJosh Gao def test_print(self): 220a8c90248264a8b26970b4473770bcc3df8515fJosh Gao try: 230a8c90248264a8b26970b4473770bcc3df8515fJosh Gao fo = open(test_support.TESTFN, "wb") 240a8c90248264a8b26970b4473770bcc3df8515fJosh Gao print >> fo, False, True 250a8c90248264a8b26970b4473770bcc3df8515fJosh Gao fo.close() 260a8c90248264a8b26970b4473770bcc3df8515fJosh Gao fo = open(test_support.TESTFN, "rb") 270a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertEqual(fo.read(), 'False True\n') 280a8c90248264a8b26970b4473770bcc3df8515fJosh Gao finally: 290a8c90248264a8b26970b4473770bcc3df8515fJosh Gao fo.close() 300a8c90248264a8b26970b4473770bcc3df8515fJosh Gao os.remove(test_support.TESTFN) 310a8c90248264a8b26970b4473770bcc3df8515fJosh Gao 320a8c90248264a8b26970b4473770bcc3df8515fJosh Gao def test_repr(self): 330a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertEqual(repr(False), 'False') 340a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertEqual(repr(True), 'True') 350a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertEqual(eval(repr(False)), False) 360a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertEqual(eval(repr(True)), True) 370a8c90248264a8b26970b4473770bcc3df8515fJosh Gao 380a8c90248264a8b26970b4473770bcc3df8515fJosh Gao def test_str(self): 390a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertEqual(str(False), 'False') 400a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertEqual(str(True), 'True') 410a8c90248264a8b26970b4473770bcc3df8515fJosh Gao 420a8c90248264a8b26970b4473770bcc3df8515fJosh Gao def test_int(self): 430a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertEqual(int(False), 0) 440a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIsNot(int(False), False) 450a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertEqual(int(True), 1) 460a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIsNot(int(True), True) 470a8c90248264a8b26970b4473770bcc3df8515fJosh Gao 480a8c90248264a8b26970b4473770bcc3df8515fJosh Gao def test_float(self): 490a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertEqual(float(False), 0.0) 500a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIsNot(float(False), False) 510a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertEqual(float(True), 1.0) 520a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIsNot(float(True), True) 530a8c90248264a8b26970b4473770bcc3df8515fJosh Gao 540a8c90248264a8b26970b4473770bcc3df8515fJosh Gao def test_long(self): 550a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertEqual(long(False), 0L) 560a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIsNot(long(False), False) 570a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertEqual(long(True), 1L) 580a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIsNot(long(True), True) 590a8c90248264a8b26970b4473770bcc3df8515fJosh Gao 600a8c90248264a8b26970b4473770bcc3df8515fJosh Gao def test_math(self): 610a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertEqual(+False, 0) 620a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIsNot(+False, False) 630a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertEqual(-False, 0) 640a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIsNot(-False, False) 650a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertEqual(abs(False), 0) 660a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIsNot(abs(False), False) 670a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertEqual(+True, 1) 680a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIsNot(+True, True) 690a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertEqual(-True, -1) 700a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertEqual(abs(True), 1) 710a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIsNot(abs(True), True) 720a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertEqual(~False, -1) 730a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertEqual(~True, -2) 740a8c90248264a8b26970b4473770bcc3df8515fJosh Gao 750a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertEqual(False+2, 2) 760a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertEqual(True+2, 3) 770a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertEqual(2+False, 2) 780a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertEqual(2+True, 3) 790a8c90248264a8b26970b4473770bcc3df8515fJosh Gao 800a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertEqual(False+False, 0) 810a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIsNot(False+False, False) 820a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertEqual(False+True, 1) 830a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIsNot(False+True, True) 840a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertEqual(True+False, 1) 850a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIsNot(True+False, True) 860a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertEqual(True+True, 2) 870a8c90248264a8b26970b4473770bcc3df8515fJosh Gao 880a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertEqual(True-True, 0) 890a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIsNot(True-True, False) 900a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertEqual(False-False, 0) 910a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIsNot(False-False, False) 920a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertEqual(True-False, 1) 930a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIsNot(True-False, True) 940a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertEqual(False-True, -1) 950a8c90248264a8b26970b4473770bcc3df8515fJosh Gao 960a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertEqual(True*1, 1) 970a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertEqual(False*1, 0) 980a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIsNot(False*1, False) 990a8c90248264a8b26970b4473770bcc3df8515fJosh Gao 1000a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertEqual(True//1, 1) 1010a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIsNot(True//1, True) 1020a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertEqual(False//1, 0) 1030a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIsNot(False//1, False) 1040a8c90248264a8b26970b4473770bcc3df8515fJosh Gao 1050a8c90248264a8b26970b4473770bcc3df8515fJosh Gao for b in False, True: 1060a8c90248264a8b26970b4473770bcc3df8515fJosh Gao for i in 0, 1, 2: 1070a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertEqual(b**i, int(b)**i) 1080a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIsNot(b**i, bool(int(b)**i)) 1090a8c90248264a8b26970b4473770bcc3df8515fJosh Gao 1100a8c90248264a8b26970b4473770bcc3df8515fJosh Gao for a in False, True: 1110a8c90248264a8b26970b4473770bcc3df8515fJosh Gao for b in False, True: 1120a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIs(a&b, bool(int(a)&int(b))) 1130a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIs(a|b, bool(int(a)|int(b))) 1140a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIs(a^b, bool(int(a)^int(b))) 1150a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertEqual(a&int(b), int(a)&int(b)) 1160a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIsNot(a&int(b), bool(int(a)&int(b))) 1170a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertEqual(a|int(b), int(a)|int(b)) 1180a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIsNot(a|int(b), bool(int(a)|int(b))) 1190a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertEqual(a^int(b), int(a)^int(b)) 1200a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIsNot(a^int(b), bool(int(a)^int(b))) 1210a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertEqual(int(a)&b, int(a)&int(b)) 1220a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIsNot(int(a)&b, bool(int(a)&int(b))) 1230a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertEqual(int(a)|b, int(a)|int(b)) 1240a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIsNot(int(a)|b, bool(int(a)|int(b))) 1250a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertEqual(int(a)^b, int(a)^int(b)) 1260a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIsNot(int(a)^b, bool(int(a)^int(b))) 1270a8c90248264a8b26970b4473770bcc3df8515fJosh Gao 1280a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIs(1==1, True) 1290a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIs(1==0, False) 1300a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIs(0<1, True) 1310a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIs(1<0, False) 1320a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIs(0<=0, True) 1330a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIs(1<=0, False) 1340a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIs(1>0, True) 1350a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIs(1>1, False) 1360a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIs(1>=1, True) 1370a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIs(0>=1, False) 1380a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIs(0!=1, True) 1390a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIs(0!=0, False) 1400a8c90248264a8b26970b4473770bcc3df8515fJosh Gao 1410a8c90248264a8b26970b4473770bcc3df8515fJosh Gao x = [1] 1420a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIs(x is x, True) 1430a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIs(x is not x, False) 1440a8c90248264a8b26970b4473770bcc3df8515fJosh Gao 1450a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIs(1 in x, True) 1460a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIs(0 in x, False) 1470a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIs(1 not in x, False) 1480a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIs(0 not in x, True) 1490a8c90248264a8b26970b4473770bcc3df8515fJosh Gao 1500a8c90248264a8b26970b4473770bcc3df8515fJosh Gao x = {1: 2} 1510a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIs(x is x, True) 1520a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIs(x is not x, False) 1530a8c90248264a8b26970b4473770bcc3df8515fJosh Gao 1540a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIs(1 in x, True) 1550a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIs(0 in x, False) 1560a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIs(1 not in x, False) 1570a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIs(0 not in x, True) 1580a8c90248264a8b26970b4473770bcc3df8515fJosh Gao 1590a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIs(not True, False) 1600a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIs(not False, True) 1610a8c90248264a8b26970b4473770bcc3df8515fJosh Gao 1620a8c90248264a8b26970b4473770bcc3df8515fJosh Gao def test_convert(self): 1630a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertRaises(TypeError, bool, 42, 42) 1640a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIs(bool(10), True) 1650a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIs(bool(1), True) 1660a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIs(bool(-1), True) 1670a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIs(bool(0), False) 1680a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIs(bool("hello"), True) 1690a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIs(bool(""), False) 1700a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIs(bool(), False) 1710a8c90248264a8b26970b4473770bcc3df8515fJosh Gao 1720a8c90248264a8b26970b4473770bcc3df8515fJosh Gao def test_format(self): 1730a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertEqual("%d" % False, "0") 1740a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertEqual("%d" % True, "1") 1750a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertEqual("%x" % False, "0") 1760a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertEqual("%x" % True, "1") 1770a8c90248264a8b26970b4473770bcc3df8515fJosh Gao 1780a8c90248264a8b26970b4473770bcc3df8515fJosh Gao def test_hasattr(self): 1790a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIs(hasattr([], "append"), True) 1800a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIs(hasattr([], "wobble"), False) 1810a8c90248264a8b26970b4473770bcc3df8515fJosh Gao 1820a8c90248264a8b26970b4473770bcc3df8515fJosh Gao def test_callable(self): 1830a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIs(callable(len), True) 1840a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIs(callable(1), False) 1850a8c90248264a8b26970b4473770bcc3df8515fJosh Gao 1860a8c90248264a8b26970b4473770bcc3df8515fJosh Gao def test_isinstance(self): 1870a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIs(isinstance(True, bool), True) 1880a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIs(isinstance(False, bool), True) 1890a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIs(isinstance(True, int), True) 1900a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIs(isinstance(False, int), True) 1910a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIs(isinstance(1, bool), False) 1920a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIs(isinstance(0, bool), False) 1930a8c90248264a8b26970b4473770bcc3df8515fJosh Gao 1940a8c90248264a8b26970b4473770bcc3df8515fJosh Gao def test_issubclass(self): 1950a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIs(issubclass(bool, int), True) 1960a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIs(issubclass(int, bool), False) 1970a8c90248264a8b26970b4473770bcc3df8515fJosh Gao 1980a8c90248264a8b26970b4473770bcc3df8515fJosh Gao def test_haskey(self): 1990a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIs(1 in {}, False) 2000a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIs(1 in {1:1}, True) 2010a8c90248264a8b26970b4473770bcc3df8515fJosh Gao with test_support.check_py3k_warnings(): 2020a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIs({}.has_key(1), False) 2030a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIs({1:1}.has_key(1), True) 2040a8c90248264a8b26970b4473770bcc3df8515fJosh Gao 2050a8c90248264a8b26970b4473770bcc3df8515fJosh Gao def test_string(self): 2060a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIs("xyz".endswith("z"), True) 2070a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIs("xyz".endswith("x"), False) 2080a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIs("xyz0123".isalnum(), True) 2090a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIs("@#$%".isalnum(), False) 2100a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIs("xyz".isalpha(), True) 2110a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIs("@#$%".isalpha(), False) 2120a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIs("0123".isdigit(), True) 2130a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIs("xyz".isdigit(), False) 2140a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIs("xyz".islower(), True) 2150a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIs("XYZ".islower(), False) 2160a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIs(" ".isspace(), True) 2170a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIs("XYZ".isspace(), False) 2180a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIs("X".istitle(), True) 2190a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIs("x".istitle(), False) 2200a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIs("XYZ".isupper(), True) 2210a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIs("xyz".isupper(), False) 2220a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIs("xyz".startswith("x"), True) 2230a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIs("xyz".startswith("z"), False) 2240a8c90248264a8b26970b4473770bcc3df8515fJosh Gao 2250a8c90248264a8b26970b4473770bcc3df8515fJosh Gao if test_support.have_unicode: 2260a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIs(unicode("xyz", 'ascii').endswith(unicode("z", 'ascii')), True) 2270a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIs(unicode("xyz", 'ascii').endswith(unicode("x", 'ascii')), False) 2280a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIs(unicode("xyz0123", 'ascii').isalnum(), True) 2290a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIs(unicode("@#$%", 'ascii').isalnum(), False) 2300a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIs(unicode("xyz", 'ascii').isalpha(), True) 2310a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIs(unicode("@#$%", 'ascii').isalpha(), False) 2320a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIs(unicode("0123", 'ascii').isdecimal(), True) 2330a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIs(unicode("xyz", 'ascii').isdecimal(), False) 2340a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIs(unicode("0123", 'ascii').isdigit(), True) 2350a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIs(unicode("xyz", 'ascii').isdigit(), False) 2360a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIs(unicode("xyz", 'ascii').islower(), True) 2370a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIs(unicode("XYZ", 'ascii').islower(), False) 2380a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIs(unicode("0123", 'ascii').isnumeric(), True) 2390a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIs(unicode("xyz", 'ascii').isnumeric(), False) 2400a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIs(unicode(" ", 'ascii').isspace(), True) 2410a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIs(unicode("XYZ", 'ascii').isspace(), False) 2420a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIs(unicode("X", 'ascii').istitle(), True) 2430a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIs(unicode("x", 'ascii').istitle(), False) 2440a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIs(unicode("XYZ", 'ascii').isupper(), True) 2450a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIs(unicode("xyz", 'ascii').isupper(), False) 2460a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIs(unicode("xyz", 'ascii').startswith(unicode("x", 'ascii')), True) 2470a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIs(unicode("xyz", 'ascii').startswith(unicode("z", 'ascii')), False) 2480a8c90248264a8b26970b4473770bcc3df8515fJosh Gao 2490a8c90248264a8b26970b4473770bcc3df8515fJosh Gao def test_boolean(self): 2500a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertEqual(True & 1, 1) 2510a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertNotIsInstance(True & 1, bool) 2520a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIs(True & True, True) 2530a8c90248264a8b26970b4473770bcc3df8515fJosh Gao 2540a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertEqual(True | 1, 1) 2550a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertNotIsInstance(True | 1, bool) 2560a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIs(True | True, True) 2570a8c90248264a8b26970b4473770bcc3df8515fJosh Gao 2580a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertEqual(True ^ 1, 0) 2590a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertNotIsInstance(True ^ 1, bool) 2600a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIs(True ^ True, False) 2610a8c90248264a8b26970b4473770bcc3df8515fJosh Gao 2620a8c90248264a8b26970b4473770bcc3df8515fJosh Gao def test_fileclosed(self): 2630a8c90248264a8b26970b4473770bcc3df8515fJosh Gao try: 2640a8c90248264a8b26970b4473770bcc3df8515fJosh Gao f = file(test_support.TESTFN, "w") 2650a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIs(f.closed, False) 2660a8c90248264a8b26970b4473770bcc3df8515fJosh Gao f.close() 2670a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIs(f.closed, True) 2680a8c90248264a8b26970b4473770bcc3df8515fJosh Gao finally: 2690a8c90248264a8b26970b4473770bcc3df8515fJosh Gao os.remove(test_support.TESTFN) 2700a8c90248264a8b26970b4473770bcc3df8515fJosh Gao 2710a8c90248264a8b26970b4473770bcc3df8515fJosh Gao def test_types(self): 2720a8c90248264a8b26970b4473770bcc3df8515fJosh Gao # types are always true. 2730a8c90248264a8b26970b4473770bcc3df8515fJosh Gao for t in [bool, complex, dict, file, float, int, list, long, object, 2740a8c90248264a8b26970b4473770bcc3df8515fJosh Gao set, str, tuple, type]: 2750a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIs(bool(t), True) 2760a8c90248264a8b26970b4473770bcc3df8515fJosh Gao 2770a8c90248264a8b26970b4473770bcc3df8515fJosh Gao def test_operator(self): 2780a8c90248264a8b26970b4473770bcc3df8515fJosh Gao import operator 2790a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIs(operator.truth(0), False) 2800a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIs(operator.truth(1), True) 2810a8c90248264a8b26970b4473770bcc3df8515fJosh Gao with test_support.check_py3k_warnings(): 2820a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIs(operator.isCallable(0), False) 2830a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIs(operator.isCallable(len), True) 2840a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIs(operator.isNumberType(None), False) 2850a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIs(operator.isNumberType(0), True) 2860a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIs(operator.not_(1), False) 2870a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIs(operator.not_(0), True) 2880a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIs(operator.isSequenceType(0), False) 2890a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIs(operator.isSequenceType([]), True) 2900a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIs(operator.contains([], 1), False) 2910a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIs(operator.contains([1], 1), True) 2920a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIs(operator.isMappingType(1), False) 2930a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIs(operator.isMappingType({}), True) 2940a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIs(operator.lt(0, 0), False) 2950a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIs(operator.lt(0, 1), True) 2960a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIs(operator.is_(True, True), True) 2970a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIs(operator.is_(True, False), False) 2980a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIs(operator.is_not(True, True), False) 2990a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIs(operator.is_not(True, False), True) 3000a8c90248264a8b26970b4473770bcc3df8515fJosh Gao 3010a8c90248264a8b26970b4473770bcc3df8515fJosh Gao def test_marshal(self): 3020a8c90248264a8b26970b4473770bcc3df8515fJosh Gao import marshal 3030a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIs(marshal.loads(marshal.dumps(True)), True) 3040a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIs(marshal.loads(marshal.dumps(False)), False) 3050a8c90248264a8b26970b4473770bcc3df8515fJosh Gao 3060a8c90248264a8b26970b4473770bcc3df8515fJosh Gao def test_pickle(self): 3070a8c90248264a8b26970b4473770bcc3df8515fJosh Gao import pickle 3080a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIs(pickle.loads(pickle.dumps(True)), True) 3090a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIs(pickle.loads(pickle.dumps(False)), False) 3100a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIs(pickle.loads(pickle.dumps(True, True)), True) 3110a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIs(pickle.loads(pickle.dumps(False, True)), False) 3120a8c90248264a8b26970b4473770bcc3df8515fJosh Gao 3130a8c90248264a8b26970b4473770bcc3df8515fJosh Gao def test_cpickle(self): 3140a8c90248264a8b26970b4473770bcc3df8515fJosh Gao import cPickle 3150a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIs(cPickle.loads(cPickle.dumps(True)), True) 3160a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIs(cPickle.loads(cPickle.dumps(False)), False) 3170a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIs(cPickle.loads(cPickle.dumps(True, True)), True) 3180a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIs(cPickle.loads(cPickle.dumps(False, True)), False) 3190a8c90248264a8b26970b4473770bcc3df8515fJosh Gao 3200a8c90248264a8b26970b4473770bcc3df8515fJosh Gao def test_mixedpickle(self): 3210a8c90248264a8b26970b4473770bcc3df8515fJosh Gao import pickle, cPickle 3220a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIs(pickle.loads(cPickle.dumps(True)), True) 3230a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIs(pickle.loads(cPickle.dumps(False)), False) 3240a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIs(pickle.loads(cPickle.dumps(True, True)), True) 3250a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIs(pickle.loads(cPickle.dumps(False, True)), False) 3260a8c90248264a8b26970b4473770bcc3df8515fJosh Gao 3270a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIs(cPickle.loads(pickle.dumps(True)), True) 3280a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIs(cPickle.loads(pickle.dumps(False)), False) 3290a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIs(cPickle.loads(pickle.dumps(True, True)), True) 3300a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertIs(cPickle.loads(pickle.dumps(False, True)), False) 3310a8c90248264a8b26970b4473770bcc3df8515fJosh Gao 3320a8c90248264a8b26970b4473770bcc3df8515fJosh Gao def test_picklevalues(self): 3330a8c90248264a8b26970b4473770bcc3df8515fJosh Gao import pickle, cPickle 3340a8c90248264a8b26970b4473770bcc3df8515fJosh Gao 3350a8c90248264a8b26970b4473770bcc3df8515fJosh Gao # Test for specific backwards-compatible pickle values 3360a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertEqual(pickle.dumps(True), "I01\n.") 3370a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertEqual(pickle.dumps(False), "I00\n.") 3380a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertEqual(cPickle.dumps(True), "I01\n.") 3390a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertEqual(cPickle.dumps(False), "I00\n.") 3400a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertEqual(pickle.dumps(True, True), "I01\n.") 3410a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertEqual(pickle.dumps(False, True), "I00\n.") 3420a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertEqual(cPickle.dumps(True, True), "I01\n.") 3430a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertEqual(cPickle.dumps(False, True), "I00\n.") 3440a8c90248264a8b26970b4473770bcc3df8515fJosh Gao 3450a8c90248264a8b26970b4473770bcc3df8515fJosh Gao def test_convert_to_bool(self): 3460a8c90248264a8b26970b4473770bcc3df8515fJosh Gao # Verify that TypeError occurs when bad things are returned 3470a8c90248264a8b26970b4473770bcc3df8515fJosh Gao # from __nonzero__(). This isn't really a bool test, but 3480a8c90248264a8b26970b4473770bcc3df8515fJosh Gao # it's related. 3490a8c90248264a8b26970b4473770bcc3df8515fJosh Gao check = lambda o: self.assertRaises(TypeError, bool, o) 3500a8c90248264a8b26970b4473770bcc3df8515fJosh Gao class Foo(object): 3510a8c90248264a8b26970b4473770bcc3df8515fJosh Gao def __nonzero__(self): 3520a8c90248264a8b26970b4473770bcc3df8515fJosh Gao return self 3530a8c90248264a8b26970b4473770bcc3df8515fJosh Gao check(Foo()) 3540a8c90248264a8b26970b4473770bcc3df8515fJosh Gao 3550a8c90248264a8b26970b4473770bcc3df8515fJosh Gao class Bar(object): 3560a8c90248264a8b26970b4473770bcc3df8515fJosh Gao def __nonzero__(self): 3570a8c90248264a8b26970b4473770bcc3df8515fJosh Gao return "Yes" 3580a8c90248264a8b26970b4473770bcc3df8515fJosh Gao check(Bar()) 3590a8c90248264a8b26970b4473770bcc3df8515fJosh Gao 3600a8c90248264a8b26970b4473770bcc3df8515fJosh Gao class Baz(int): 3610a8c90248264a8b26970b4473770bcc3df8515fJosh Gao def __nonzero__(self): 3620a8c90248264a8b26970b4473770bcc3df8515fJosh Gao return self 3630a8c90248264a8b26970b4473770bcc3df8515fJosh Gao check(Baz()) 3640a8c90248264a8b26970b4473770bcc3df8515fJosh Gao 3650a8c90248264a8b26970b4473770bcc3df8515fJosh Gao 3660a8c90248264a8b26970b4473770bcc3df8515fJosh Gaodef test_main(): 3670a8c90248264a8b26970b4473770bcc3df8515fJosh Gao test_support.run_unittest(BoolTest) 3680a8c90248264a8b26970b4473770bcc3df8515fJosh Gao 3690a8c90248264a8b26970b4473770bcc3df8515fJosh Gaoif __name__ == "__main__": 3700a8c90248264a8b26970b4473770bcc3df8515fJosh Gao test_main() 371