1edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep# Test properties of bool promised by PEP 285 2edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep 3edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoepimport unittest 4edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoepfrom test import test_support 5edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep 6edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoepimport os 7edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep 8edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoepclass BoolTest(unittest.TestCase): 9edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep 10edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep def test_subclass(self): 11edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep try: 12edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep class C(bool): 13edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep pass 14edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep except TypeError: 15edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep pass 16edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep else: 17edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.fail("bool should not be subclassable") 18edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep 19edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertRaises(TypeError, int.__new__, bool, 0) 20edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep 21edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep def test_print(self): 22edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep try: 23edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep fo = open(test_support.TESTFN, "wb") 24edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep print >> fo, False, True 25edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep fo.close() 26edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep fo = open(test_support.TESTFN, "rb") 27edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertEqual(fo.read(), 'False True\n') 28edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep finally: 29edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep fo.close() 30edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep os.remove(test_support.TESTFN) 31edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep 32edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep def test_repr(self): 33edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertEqual(repr(False), 'False') 34edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertEqual(repr(True), 'True') 35edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertEqual(eval(repr(False)), False) 36edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertEqual(eval(repr(True)), True) 37edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep 38edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep def test_str(self): 39edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertEqual(str(False), 'False') 40edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertEqual(str(True), 'True') 41edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep 42edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep def test_int(self): 43edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertEqual(int(False), 0) 44edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIsNot(int(False), False) 45edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertEqual(int(True), 1) 46edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIsNot(int(True), True) 47edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep 48edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep def test_float(self): 49edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertEqual(float(False), 0.0) 50edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIsNot(float(False), False) 51edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertEqual(float(True), 1.0) 52edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIsNot(float(True), True) 53edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep 54edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep def test_long(self): 55edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertEqual(long(False), 0L) 56edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIsNot(long(False), False) 57edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertEqual(long(True), 1L) 58edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIsNot(long(True), True) 59edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep 60edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep def test_math(self): 61edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertEqual(+False, 0) 62edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIsNot(+False, False) 63edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertEqual(-False, 0) 64edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIsNot(-False, False) 65edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertEqual(abs(False), 0) 66edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIsNot(abs(False), False) 67edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertEqual(+True, 1) 68edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIsNot(+True, True) 69edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertEqual(-True, -1) 70edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertEqual(abs(True), 1) 71edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIsNot(abs(True), True) 72edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertEqual(~False, -1) 73edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertEqual(~True, -2) 74edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep 75edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertEqual(False+2, 2) 76edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertEqual(True+2, 3) 77edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertEqual(2+False, 2) 78edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertEqual(2+True, 3) 79edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep 80edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertEqual(False+False, 0) 81edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIsNot(False+False, False) 82edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertEqual(False+True, 1) 83edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIsNot(False+True, True) 84edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertEqual(True+False, 1) 85edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIsNot(True+False, True) 86edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertEqual(True+True, 2) 87edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep 88edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertEqual(True-True, 0) 89edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIsNot(True-True, False) 90edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertEqual(False-False, 0) 91edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIsNot(False-False, False) 92edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertEqual(True-False, 1) 93edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIsNot(True-False, True) 94edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertEqual(False-True, -1) 95edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep 96edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertEqual(True*1, 1) 97edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertEqual(False*1, 0) 98edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIsNot(False*1, False) 99edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep 100edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertEqual(True//1, 1) 101edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIsNot(True//1, True) 102edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertEqual(False//1, 0) 103edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIsNot(False//1, False) 104edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep 105edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep for b in False, True: 106edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep for i in 0, 1, 2: 107edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertEqual(b**i, int(b)**i) 108edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIsNot(b**i, bool(int(b)**i)) 109edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep 110edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep for a in False, True: 111edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep for b in False, True: 112edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIs(a&b, bool(int(a)&int(b))) 113edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIs(a|b, bool(int(a)|int(b))) 114edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIs(a^b, bool(int(a)^int(b))) 115edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertEqual(a&int(b), int(a)&int(b)) 116edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIsNot(a&int(b), bool(int(a)&int(b))) 117edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertEqual(a|int(b), int(a)|int(b)) 118edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIsNot(a|int(b), bool(int(a)|int(b))) 119edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertEqual(a^int(b), int(a)^int(b)) 120edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIsNot(a^int(b), bool(int(a)^int(b))) 121edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertEqual(int(a)&b, int(a)&int(b)) 122edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIsNot(int(a)&b, bool(int(a)&int(b))) 123edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertEqual(int(a)|b, int(a)|int(b)) 124edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIsNot(int(a)|b, bool(int(a)|int(b))) 125edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertEqual(int(a)^b, int(a)^int(b)) 126edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIsNot(int(a)^b, bool(int(a)^int(b))) 127edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep 128edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIs(1==1, True) 129edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIs(1==0, False) 130edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIs(0<1, True) 131edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIs(1<0, False) 132edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIs(0<=0, True) 133edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIs(1<=0, False) 134edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIs(1>0, True) 135edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIs(1>1, False) 136edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIs(1>=1, True) 137edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIs(0>=1, False) 138edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIs(0!=1, True) 139edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIs(0!=0, False) 140edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep 141edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep x = [1] 142edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIs(x is x, True) 143edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIs(x is not x, False) 144edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep 145edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIs(1 in x, True) 146edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIs(0 in x, False) 147edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIs(1 not in x, False) 148edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIs(0 not in x, True) 149edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep 150edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep x = {1: 2} 151edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIs(x is x, True) 152edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIs(x is not x, False) 153edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep 154edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIs(1 in x, True) 155edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIs(0 in x, False) 156edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIs(1 not in x, False) 157edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIs(0 not in x, True) 158edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep 159edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIs(not True, False) 160edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIs(not False, True) 161edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep 162edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep def test_convert(self): 163edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertRaises(TypeError, bool, 42, 42) 164edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIs(bool(10), True) 165edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIs(bool(1), True) 166edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIs(bool(-1), True) 167edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIs(bool(0), False) 168edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIs(bool("hello"), True) 169edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIs(bool(""), False) 170edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIs(bool(), False) 171edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep 172edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep def test_format(self): 173edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertEqual("%d" % False, "0") 174edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertEqual("%d" % True, "1") 175edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertEqual("%x" % False, "0") 176edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertEqual("%x" % True, "1") 177edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep 178edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep def test_hasattr(self): 179edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIs(hasattr([], "append"), True) 180edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIs(hasattr([], "wobble"), False) 181edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep 182edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep def test_callable(self): 183edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIs(callable(len), True) 184edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIs(callable(1), False) 185edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep 186edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep def test_isinstance(self): 187edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIs(isinstance(True, bool), True) 188edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIs(isinstance(False, bool), True) 189edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIs(isinstance(True, int), True) 190edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIs(isinstance(False, int), True) 191edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIs(isinstance(1, bool), False) 192edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIs(isinstance(0, bool), False) 193edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep 194edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep def test_issubclass(self): 195edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIs(issubclass(bool, int), True) 196edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIs(issubclass(int, bool), False) 197edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep 198edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep def test_haskey(self): 199edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIs(1 in {}, False) 200edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIs(1 in {1:1}, True) 201edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep with test_support.check_py3k_warnings(): 202edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIs({}.has_key(1), False) 203edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIs({1:1}.has_key(1), True) 204edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep 205edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep def test_string(self): 206edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIs("xyz".endswith("z"), True) 207edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIs("xyz".endswith("x"), False) 208edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIs("xyz0123".isalnum(), True) 209edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIs("@#$%".isalnum(), False) 210edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIs("xyz".isalpha(), True) 211edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIs("@#$%".isalpha(), False) 212edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIs("0123".isdigit(), True) 213edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIs("xyz".isdigit(), False) 214edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIs("xyz".islower(), True) 215edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIs("XYZ".islower(), False) 216edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIs(" ".isspace(), True) 217edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIs("XYZ".isspace(), False) 218edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIs("X".istitle(), True) 219edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIs("x".istitle(), False) 220edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIs("XYZ".isupper(), True) 221edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIs("xyz".isupper(), False) 222edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIs("xyz".startswith("x"), True) 223edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIs("xyz".startswith("z"), False) 224edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep 225edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep if test_support.have_unicode: 226edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIs(unicode("xyz", 'ascii').endswith(unicode("z", 'ascii')), True) 227edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIs(unicode("xyz", 'ascii').endswith(unicode("x", 'ascii')), False) 228edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIs(unicode("xyz0123", 'ascii').isalnum(), True) 229edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIs(unicode("@#$%", 'ascii').isalnum(), False) 230edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIs(unicode("xyz", 'ascii').isalpha(), True) 231edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIs(unicode("@#$%", 'ascii').isalpha(), False) 232edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIs(unicode("0123", 'ascii').isdecimal(), True) 233edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIs(unicode("xyz", 'ascii').isdecimal(), False) 234edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIs(unicode("0123", 'ascii').isdigit(), True) 235edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIs(unicode("xyz", 'ascii').isdigit(), False) 236edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIs(unicode("xyz", 'ascii').islower(), True) 237edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIs(unicode("XYZ", 'ascii').islower(), False) 238edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIs(unicode("0123", 'ascii').isnumeric(), True) 239edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIs(unicode("xyz", 'ascii').isnumeric(), False) 240edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIs(unicode(" ", 'ascii').isspace(), True) 241edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIs(unicode("XYZ", 'ascii').isspace(), False) 242edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIs(unicode("X", 'ascii').istitle(), True) 243edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIs(unicode("x", 'ascii').istitle(), False) 244edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIs(unicode("XYZ", 'ascii').isupper(), True) 245edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIs(unicode("xyz", 'ascii').isupper(), False) 246edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIs(unicode("xyz", 'ascii').startswith(unicode("x", 'ascii')), True) 247edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIs(unicode("xyz", 'ascii').startswith(unicode("z", 'ascii')), False) 248edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep 249edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep def test_boolean(self): 250edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertEqual(True & 1, 1) 251edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertNotIsInstance(True & 1, bool) 252edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIs(True & True, True) 253edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep 254edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertEqual(True | 1, 1) 255edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertNotIsInstance(True | 1, bool) 256edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIs(True | True, True) 257edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep 258edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertEqual(True ^ 1, 0) 259edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertNotIsInstance(True ^ 1, bool) 260edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIs(True ^ True, False) 261edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep 262edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep def test_fileclosed(self): 263edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep try: 264edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep f = file(test_support.TESTFN, "w") 265edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIs(f.closed, False) 266edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep f.close() 267edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIs(f.closed, True) 268edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep finally: 269edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep os.remove(test_support.TESTFN) 270edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep 271edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep def test_types(self): 272edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep # types are always true. 273edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep for t in [bool, complex, dict, file, float, int, list, long, object, 274edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep set, str, tuple, type]: 275edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIs(bool(t), True) 276edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep 277edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep def test_operator(self): 278edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep import operator 279edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIs(operator.truth(0), False) 280edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIs(operator.truth(1), True) 281edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep with test_support.check_py3k_warnings(): 282edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIs(operator.isCallable(0), False) 283edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIs(operator.isCallable(len), True) 284edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIs(operator.isNumberType(None), False) 285edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIs(operator.isNumberType(0), True) 286edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIs(operator.not_(1), False) 287edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIs(operator.not_(0), True) 288edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIs(operator.isSequenceType(0), False) 289edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIs(operator.isSequenceType([]), True) 290edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIs(operator.contains([], 1), False) 291edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIs(operator.contains([1], 1), True) 292edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIs(operator.isMappingType(1), False) 293edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIs(operator.isMappingType({}), True) 294edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIs(operator.lt(0, 0), False) 295edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIs(operator.lt(0, 1), True) 296edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIs(operator.is_(True, True), True) 297edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIs(operator.is_(True, False), False) 298edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIs(operator.is_not(True, True), False) 299edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIs(operator.is_not(True, False), True) 300edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep 301edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep def test_marshal(self): 302edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep import marshal 303edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIs(marshal.loads(marshal.dumps(True)), True) 304edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIs(marshal.loads(marshal.dumps(False)), False) 305edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep 306edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep def test_pickle(self): 307edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep import pickle 308edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIs(pickle.loads(pickle.dumps(True)), True) 309edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIs(pickle.loads(pickle.dumps(False)), False) 310edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIs(pickle.loads(pickle.dumps(True, True)), True) 311edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIs(pickle.loads(pickle.dumps(False, True)), False) 312edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep 313edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep def test_cpickle(self): 314edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep import cPickle 315edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIs(cPickle.loads(cPickle.dumps(True)), True) 316edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIs(cPickle.loads(cPickle.dumps(False)), False) 317edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIs(cPickle.loads(cPickle.dumps(True, True)), True) 318edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIs(cPickle.loads(cPickle.dumps(False, True)), False) 319edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep 320edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep def test_mixedpickle(self): 321edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep import pickle, cPickle 322edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIs(pickle.loads(cPickle.dumps(True)), True) 323edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIs(pickle.loads(cPickle.dumps(False)), False) 324edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIs(pickle.loads(cPickle.dumps(True, True)), True) 325edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIs(pickle.loads(cPickle.dumps(False, True)), False) 326edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep 327edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIs(cPickle.loads(pickle.dumps(True)), True) 328edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIs(cPickle.loads(pickle.dumps(False)), False) 329edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIs(cPickle.loads(pickle.dumps(True, True)), True) 330edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertIs(cPickle.loads(pickle.dumps(False, True)), False) 331edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep 332edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep def test_picklevalues(self): 333edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep import pickle, cPickle 334edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep 335edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep # Test for specific backwards-compatible pickle values 336edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertEqual(pickle.dumps(True), "I01\n.") 337edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertEqual(pickle.dumps(False), "I00\n.") 338edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertEqual(cPickle.dumps(True), "I01\n.") 339edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertEqual(cPickle.dumps(False), "I00\n.") 340edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertEqual(pickle.dumps(True, True), "I01\n.") 341edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertEqual(pickle.dumps(False, True), "I00\n.") 342edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertEqual(cPickle.dumps(True, True), "I01\n.") 343edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep self.assertEqual(cPickle.dumps(False, True), "I00\n.") 344edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep 345edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep def test_convert_to_bool(self): 346edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep # Verify that TypeError occurs when bad things are returned 347edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep # from __nonzero__(). This isn't really a bool test, but 348edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep # it's related. 349edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep check = lambda o: self.assertRaises(TypeError, bool, o) 350edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep class Foo(object): 351edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep def __nonzero__(self): 352edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep return self 353edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep check(Foo()) 354edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep 355edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep class Bar(object): 356edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep def __nonzero__(self): 357edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep return "Yes" 358edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep check(Bar()) 359edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep 360edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep class Baz(int): 361edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep def __nonzero__(self): 362edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep return self 363edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep check(Baz()) 364edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep 365edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep 366edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoepdef test_main(): 367edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep test_support.run_unittest(BoolTest) 368edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep 369edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoepif __name__ == "__main__": 370edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep test_main() 371