Changeset 391 for python/trunk/Lib/test/test_bytes.py
- Timestamp:
- Mar 19, 2014, 11:31:01 PM (11 years ago)
- Location:
- python/trunk
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
python/trunk
-
Property svn:mergeinfo
set to
/python/vendor/Python-2.7.6 merged eligible /python/vendor/current merged eligible
-
Property svn:mergeinfo
set to
-
python/trunk/Lib/test/test_bytes.py
r2 r391 10 10 import sys 11 11 import copy 12 import functools 12 13 import pickle 13 14 import tempfile 14 15 import unittest 15 import warnings16 16 import test.test_support 17 17 import test.string_tests 18 18 import test.buffer_tests 19 20 21 if sys.flags.bytes_warning: 22 def check_bytes_warnings(func): 23 @functools.wraps(func) 24 def wrapper(*args, **kw): 25 with test.test_support.check_warnings(('', BytesWarning)): 26 return func(*args, **kw) 27 return wrapper 28 else: 29 # no-op 30 def check_bytes_warnings(func): 31 return func 32 19 33 20 34 class Indexable: … … 26 40 27 41 class BaseBytesTest(unittest.TestCase): 28 29 def setUp(self):30 self.warning_filters = warnings.filters[:]31 32 def tearDown(self):33 warnings.filters = self.warning_filters34 42 35 43 def test_basics(self): … … 63 71 Indexable(255)]) 64 72 self.assertEqual(list(b), [0, 1, 254, 255]) 65 self.assertRaises(ValueError, bytearray, [Indexable(-1)])66 self.assertRaises(ValueError, bytearray, [Indexable(256)])73 self.assertRaises(ValueError, self.type2test, [Indexable(-1)]) 74 self.assertRaises(ValueError, self.type2test, [Indexable(256)]) 67 75 68 76 def test_from_ssize(self): 69 self.assertEqual(bytearray(0), b'') 70 self.assertEqual(bytearray(1), b'\x00') 71 self.assertEqual(bytearray(5), b'\x00\x00\x00\x00\x00') 72 self.assertRaises(ValueError, bytearray, -1) 73 74 self.assertEqual(bytearray('0', 'ascii'), b'0') 75 self.assertEqual(bytearray(b'0'), b'0') 77 self.assertEqual(self.type2test(0), b'') 78 self.assertEqual(self.type2test(1), b'\x00') 79 self.assertEqual(self.type2test(5), b'\x00\x00\x00\x00\x00') 80 self.assertRaises(ValueError, self.type2test, -1) 81 82 self.assertEqual(self.type2test('0', 'ascii'), b'0') 83 self.assertEqual(self.type2test(b'0'), b'0') 84 self.assertRaises(OverflowError, self.type2test, sys.maxsize + 1) 76 85 77 86 def test_constructor_type_errors(self): … … 79 88 class C: 80 89 pass 81 # allowed in 2. 690 # allowed in 2.x 82 91 #self.assertRaises(TypeError, self.type2test, ["0"]) 83 92 self.assertRaises(TypeError, self.type2test, [0.0]) … … 103 112 104 113 self.assertEqual(b1, b2) 105 self.failUnless(b2 != b3) 106 self.failUnless(b1 <= b2) 107 self.failUnless(b1 <= b3) 108 self.failUnless(b1 < b3) 109 self.failUnless(b1 >= b2) 110 self.failUnless(b3 >= b2) 111 self.failUnless(b3 > b2) 112 113 self.failIf(b1 != b2) 114 self.failIf(b2 == b3) 115 self.failIf(b1 > b2) 116 self.failIf(b1 > b3) 117 self.failIf(b1 >= b3) 118 self.failIf(b1 < b2) 119 self.failIf(b3 < b2) 120 self.failIf(b3 <= b2) 121 114 self.assertTrue(b2 != b3) 115 self.assertTrue(b1 <= b2) 116 self.assertTrue(b1 <= b3) 117 self.assertTrue(b1 < b3) 118 self.assertTrue(b1 >= b2) 119 self.assertTrue(b3 >= b2) 120 self.assertTrue(b3 > b2) 121 122 self.assertFalse(b1 != b2) 123 self.assertFalse(b2 == b3) 124 self.assertFalse(b1 > b2) 125 self.assertFalse(b1 > b3) 126 self.assertFalse(b1 >= b3) 127 self.assertFalse(b1 < b2) 128 self.assertFalse(b3 < b2) 129 self.assertFalse(b3 <= b2) 130 131 @check_bytes_warnings 122 132 def test_compare_to_str(self): 123 warnings.simplefilter('ignore', BytesWarning)124 133 # Byte comparisons with unicode should always fail! 125 134 # Test this for all expected byte orders and Unicode character sizes … … 187 196 self.assertRaises(UnicodeDecodeError, b.decode, "utf8") 188 197 self.assertEqual(b.decode("utf8", "ignore"), "Hello world\n") 198 self.assertEqual(b.decode(errors="ignore", encoding="utf8"), 199 "Hello world\n") 189 200 190 201 def test_from_int(self): … … 221 232 def test_contains(self): 222 233 b = self.type2test(b"abc") 223 self.failUnless(ord('a') in b) 224 self.failUnless(int(ord('a')) in b) 225 self.failIf(200 in b) 226 self.failIf(200 in b) 234 self.assertIn(ord('a'), b) 235 self.assertIn(int(ord('a')), b) 236 self.assertNotIn(200, b) 227 237 self.assertRaises(ValueError, lambda: 300 in b) 228 238 self.assertRaises(ValueError, lambda: -1 in b) … … 231 241 self.assertRaises(TypeError, lambda: u"a" in b) 232 242 for f in bytes, bytearray: 233 self. failUnless(f(b"") inb)234 self. failUnless(f(b"a") inb)235 self. failUnless(f(b"b") inb)236 self. failUnless(f(b"c") inb)237 self. failUnless(f(b"ab") inb)238 self. failUnless(f(b"bc") inb)239 self. failUnless(f(b"abc") inb)240 self. failIf(f(b"ac") inb)241 self. failIf(f(b"d") inb)242 self. failIf(f(b"dab") inb)243 self. failIf(f(b"abd") inb)243 self.assertIn(f(b""), b) 244 self.assertIn(f(b"a"), b) 245 self.assertIn(f(b"b"), b) 246 self.assertIn(f(b"c"), b) 247 self.assertIn(f(b"ab"), b) 248 self.assertIn(f(b"bc"), b) 249 self.assertIn(f(b"abc"), b) 250 self.assertNotIn(f(b"ac"), b) 251 self.assertNotIn(f(b"d"), b) 252 self.assertNotIn(f(b"dab"), b) 253 self.assertNotIn(f(b"abd"), b) 244 254 245 255 def test_fromhex(self): 246 256 self.assertRaises(TypeError, self.type2test.fromhex) 247 257 self.assertRaises(TypeError, self.type2test.fromhex, 1) 248 self.assertEqual s(self.type2test.fromhex(u''), self.type2test())258 self.assertEqual(self.type2test.fromhex(u''), self.type2test()) 249 259 b = bytearray([0x1a, 0x2b, 0x30]) 250 self.assertEquals(self.type2test.fromhex(u'1a2B30'), b) 251 self.assertEquals(self.type2test.fromhex(u' 1A 2B 30 '), b) 252 self.assertEquals(self.type2test.fromhex(u'0000'), b'\0\0') 253 self.assertRaises(TypeError, self.type2test.fromhex, b'1B') 260 self.assertEqual(self.type2test.fromhex(u'1a2B30'), b) 261 self.assertEqual(self.type2test.fromhex(u' 1A 2B 30 '), b) 262 self.assertEqual(self.type2test.fromhex(u'0000'), b'\0\0') 254 263 self.assertRaises(ValueError, self.type2test.fromhex, u'a') 255 264 self.assertRaises(ValueError, self.type2test.fromhex, u'rt') … … 268 277 self.assertEqual(self.type2test(b".").join([b"ab", b"cd"]), b"ab.cd") 269 278 # XXX more... 270 271 def test_index(self):272 b = self.type2test(b'parrot')273 self.assertEqual(b.index('p'), 0)274 self.assertEqual(b.index('rr'), 2)275 self.assertEqual(b.index('t'), 5)276 self.assertRaises(ValueError, lambda: b.index('w'))277 279 278 280 def test_count(self): … … 361 363 self.assertRaises(TypeError, self.type2test(b'a b').split, u' ') 362 364 365 def test_split_unicodewhitespace(self): 366 b = self.type2test(b"\x09\x0A\x0B\x0C\x0D\x1C\x1D\x1E\x1F") 367 self.assertEqual(b.split(), [b'\x1c\x1d\x1e\x1f']) 368 363 369 def test_rsplit(self): 364 370 b = self.type2test(b'mississippi') … … 384 390 def test_rsplit_unicodewhitespace(self): 385 391 b = self.type2test(b"\x09\x0A\x0B\x0C\x0D\x1C\x1D\x1E\x1F") 386 self.assertEqual(b.split(), [b'\x1c\x1d\x1e\x1f'])387 392 self.assertEqual(b.rsplit(), [b'\x1c\x1d\x1e\x1f']) 388 393 … … 390 395 b = self.type2test(b'mississippi') 391 396 self.assertEqual(b.partition(b'ss'), (b'mi', b'ss', b'issippi')) 392 self.assertEqual(b. rpartition(b'w'), (b'', b'', b'mississippi'))397 self.assertEqual(b.partition(b'w'), (b'mississippi', b'', b'')) 393 398 394 399 def test_rpartition(self): … … 396 401 self.assertEqual(b.rpartition(b'ss'), (b'missi', b'ss', b'ippi')) 397 402 self.assertEqual(b.rpartition(b'i'), (b'mississipp', b'i', b'')) 403 self.assertEqual(b.rpartition(b'w'), (b'', b'', b'mississippi')) 398 404 399 405 def test_pickling(self): … … 436 442 self.assertEqual(b.rstrip(), b' \t\n\r\f\vabc') 437 443 438 def XXXtest_strip_bytearray(self): 439 # XXX memoryview not available 444 def test_strip_bytearray(self): 440 445 self.assertEqual(self.type2test(b'abc').strip(memoryview(b'ac')), b'b') 441 446 self.assertEqual(self.type2test(b'abc').lstrip(memoryview(b'ac')), b'bc') … … 451 456 self.assertEqual([ord(b[i:i+1]) for i in range(len(b))], 452 457 [0, 65, 127, 128, 255]) 458 459 def test_none_arguments(self): 460 # issue 11828 461 b = self.type2test(b'hello') 462 l = self.type2test(b'l') 463 h = self.type2test(b'h') 464 x = self.type2test(b'x') 465 o = self.type2test(b'o') 466 467 self.assertEqual(2, b.find(l, None)) 468 self.assertEqual(3, b.find(l, -2, None)) 469 self.assertEqual(2, b.find(l, None, -2)) 470 self.assertEqual(0, b.find(h, None, None)) 471 472 self.assertEqual(3, b.rfind(l, None)) 473 self.assertEqual(3, b.rfind(l, -2, None)) 474 self.assertEqual(2, b.rfind(l, None, -2)) 475 self.assertEqual(0, b.rfind(h, None, None)) 476 477 self.assertEqual(2, b.index(l, None)) 478 self.assertEqual(3, b.index(l, -2, None)) 479 self.assertEqual(2, b.index(l, None, -2)) 480 self.assertEqual(0, b.index(h, None, None)) 481 482 self.assertEqual(3, b.rindex(l, None)) 483 self.assertEqual(3, b.rindex(l, -2, None)) 484 self.assertEqual(2, b.rindex(l, None, -2)) 485 self.assertEqual(0, b.rindex(h, None, None)) 486 487 self.assertEqual(2, b.count(l, None)) 488 self.assertEqual(1, b.count(l, -2, None)) 489 self.assertEqual(1, b.count(l, None, -2)) 490 self.assertEqual(0, b.count(x, None, None)) 491 492 self.assertEqual(True, b.endswith(o, None)) 493 self.assertEqual(True, b.endswith(o, -2, None)) 494 self.assertEqual(True, b.endswith(l, None, -2)) 495 self.assertEqual(False, b.endswith(x, None, None)) 496 497 self.assertEqual(True, b.startswith(h, None)) 498 self.assertEqual(True, b.startswith(l, -2, None)) 499 self.assertEqual(True, b.startswith(h, None, -2)) 500 self.assertEqual(False, b.startswith(x, None, None)) 501 502 def test_find_etc_raise_correct_error_messages(self): 503 # issue 11828 504 b = self.type2test(b'hello') 505 x = self.type2test(b'x') 506 self.assertRaisesRegexp(TypeError, r'\bfind\b', b.find, 507 x, None, None, None) 508 self.assertRaisesRegexp(TypeError, r'\brfind\b', b.rfind, 509 x, None, None, None) 510 self.assertRaisesRegexp(TypeError, r'\bindex\b', b.index, 511 x, None, None, None) 512 self.assertRaisesRegexp(TypeError, r'\brindex\b', b.rindex, 513 x, None, None, None) 514 self.assertRaisesRegexp(TypeError, r'\bcount\b', b.count, 515 x, None, None, None) 516 self.assertRaisesRegexp(TypeError, r'\bstartswith\b', b.startswith, 517 x, None, None, None) 518 self.assertRaisesRegexp(TypeError, r'\bendswith\b', b.endswith, 519 x, None, None, None) 453 520 454 521 … … 569 636 self.assertEqual(b, bytearray([0, 1, 2, 42, 42, 42, 3, 4, 5, 6, 7, 8, 9])) 570 637 638 b[3:] = b'foo' 639 self.assertEqual(b, bytearray([0, 1, 2, 102, 111, 111])) 640 641 b[:3] = memoryview(b'foo') 642 self.assertEqual(b, bytearray([102, 111, 111, 102, 111, 111])) 643 644 b[3:4] = [] 645 self.assertEqual(b, bytearray([102, 111, 111, 111, 111])) 646 647 b[1:] = list(b'uuuu') # this works only on Python2 648 self.assertEqual(b, bytearray([102, 117, 117, 117, 117])) 649 650 for elem in [5, -5, 0, long(10e20), u'str', 2.3, [u'a', u'b'], [[]]]: 651 with self.assertRaises(TypeError): 652 b[3:4] = elem 653 654 for elem in [[254, 255, 256], [-256, 9000]]: 655 with self.assertRaises(ValueError): 656 b[3:4] = elem 657 571 658 def test_extended_set_del_slice(self): 572 659 indices = (0, None, 1, 3, 19, 300, 1<<333, -1, -2, -31, -300) … … 583 670 L[start:stop:step] = data 584 671 b[start:stop:step] = data 585 self.assertEqual s(b, bytearray(L))672 self.assertEqual(b, bytearray(L)) 586 673 587 674 del L[start:stop:step] 588 675 del b[start:stop:step] 589 self.assertEqual s(b, bytearray(L))676 self.assertEqual(b, bytearray(L)) 590 677 591 678 def test_setslice_trap(self): … … 602 689 self.assertEqual(b, b"abcdef") 603 690 self.assertEqual(b, b1) 604 self. failUnless(b is b1)691 self.assertTrue(b is b1) 605 692 b += b"xyz" 606 693 self.assertEqual(b, b"abcdefxyz") … … 618 705 self.assertEqual(b, b"abcabcabc") 619 706 self.assertEqual(b, b1) 620 self. failUnless(b is b1)707 self.assertTrue(b is b1) 621 708 622 709 def test_irepeat_1char(self): … … 626 713 self.assertEqual(b, b"x"*100) 627 714 self.assertEqual(b, b1) 628 self. failUnless(b is b1)715 self.assertTrue(b is b1) 629 716 630 717 def test_alloc(self): 631 718 b = bytearray() 632 719 alloc = b.__alloc__() 633 self.assert _(alloc >= 0)720 self.assertTrue(alloc >= 0) 634 721 seq = [alloc] 635 722 for i in range(100): 636 723 b += b"x" 637 724 alloc = b.__alloc__() 638 self.assert _(alloc >= len(b))725 self.assertTrue(alloc >= len(b)) 639 726 if alloc not in seq: 640 727 seq.append(alloc) … … 691 778 self.assertEqual(b.pop(-2), ord('r')) 692 779 self.assertRaises(IndexError, lambda: b.pop(10)) 693 self.assertRaises( OverflowError, lambda: bytearray().pop())780 self.assertRaises(IndexError, lambda: bytearray().pop()) 694 781 # test for issue #6846 695 782 self.assertEqual(bytearray(b'\xff').pop(), 0xff) … … 718 805 b.insert(1000, ord('i')) 719 806 self.assertEqual(b, b'mississippi') 720 # allowed in 2. 6807 # allowed in 2.x 721 808 #self.assertRaises(TypeError, lambda: b.insert(0, b'1')) 722 809 b = bytearray() … … 738 825 self.assertEqual(b, b"") 739 826 self.assertEqual(c, b"") 740 self.assert _(b is not c)827 self.assertTrue(b is not c) 741 828 b += b"!" 742 829 self.assertEqual(c, b"") … … 748 835 self.assertEqual(b, b"") 749 836 self.assertEqual(c, b"") 750 self.assert _(b is not c)837 self.assertTrue(b is not c) 751 838 b += b"!" 752 839 self.assertEqual(c, b"") … … 755 842 self.assertEqual(c, b"") 756 843 757 # XXX memoryview not available 758 def XXXtest_resize_forbidden(self): 844 def test_resize_forbidden(self): 759 845 # #4509: can't resize a bytearray when there are buffer exports, even 760 846 # if it wouldn't reallocate the underlying buffer. … … 768 854 orig = b[:] 769 855 self.assertRaises(BufferError, resize, 11) 770 self.assertEqual s(b, orig)856 self.assertEqual(b, orig) 771 857 self.assertRaises(BufferError, resize, 9) 772 self.assertEqual s(b, orig)858 self.assertEqual(b, orig) 773 859 self.assertRaises(BufferError, resize, 0) 774 self.assertEqual s(b, orig)860 self.assertEqual(b, orig) 775 861 # Other operations implying resize 776 862 self.assertRaises(BufferError, b.pop, 0) 777 self.assertEqual s(b, orig)863 self.assertEqual(b, orig) 778 864 self.assertRaises(BufferError, b.remove, b[1]) 779 self.assertEqual s(b, orig)865 self.assertEqual(b, orig) 780 866 def delitem(): 781 867 del b[1] 782 868 self.assertRaises(BufferError, delitem) 783 self.assertEqual s(b, orig)869 self.assertEqual(b, orig) 784 870 # deleting a non-contiguous slice 785 871 def delslice(): 786 872 b[1:-1:2] = b"" 787 873 self.assertRaises(BufferError, delslice) 788 self.assertEqual s(b, orig)874 self.assertEqual(b, orig) 789 875 790 876 def test_empty_bytearray(self): … … 800 886 # 801 887 802 def setUp(self): 803 self.warning_filters = warnings.filters[:] 804 805 def tearDown(self): 806 warnings.filters = self.warning_filters 807 888 @check_bytes_warnings 808 889 def test_repr_str(self): 809 warnings.simplefilter('ignore', BytesWarning)810 890 for f in str, repr: 811 891 self.assertEqual(f(bytearray()), "bytearray(b'')") … … 846 926 self.assertEqual(bytes(b"abc") <= b"ab", False) 847 927 928 @test.test_support.requires_docstrings 848 929 def test_doc(self): 849 self. failUnless(bytearray.__doc__ != None)850 self. failUnless(bytearray.__doc__.startswith("bytearray("), bytearray.__doc__)851 self. failUnless(bytes.__doc__ != None)852 self. failUnless(bytes.__doc__.startswith("bytes("), bytes.__doc__)930 self.assertIsNotNone(bytearray.__doc__) 931 self.assertTrue(bytearray.__doc__.startswith("bytearray("), bytearray.__doc__) 932 self.assertIsNotNone(bytes.__doc__) 933 self.assertTrue(bytes.__doc__.startswith("bytes("), bytes.__doc__) 853 934 854 935 def test_from_bytearray(self): … … 858 939 self.assertEqual(b, bytearray(sample)) 859 940 941 @check_bytes_warnings 860 942 def test_to_str(self): 861 warnings.simplefilter('ignore', BytesWarning)862 943 self.assertEqual(str(b''), "b''") 863 944 self.assertEqual(str(b'x'), "b'x'") … … 893 974 c = b.translate(None, b'e') 894 975 self.assertEqual(c, b'hllo') 895 self.assertRaises(TypeError, b.translate, b'a'*256, None) 896 self.assertRaises(TypeError, ba.translate, b'a'*256, None) 976 c = ba.translate(None, b'e') 977 self.assertEqual(c, b'hllo') 978 self.assertRaises(TypeError, b.translate, None, None) 979 self.assertRaises(TypeError, ba.translate, None, None) 897 980 898 981 def test_split_bytearray(self): … … 932 1015 self.assertTrue(val is not newval, 933 1016 methname+' returned self on a mutable object') 934 1017 for expr in ('val.split()[0]', 'val.rsplit()[0]', 1018 'val.partition(".")[0]', 'val.rpartition(".")[2]', 1019 'val.splitlines()[0]', 'val.replace("", "")'): 1020 newval = eval(expr) 1021 self.assertEqual(val, newval) 1022 self.assertTrue(val is not newval, 1023 expr+' returned val on a mutable object') 935 1024 936 1025 class FixedStringTest(test.string_tests.BaseTest): … … 967 1056 968 1057 def test_basic(self): 969 self.assert _(issubclass(ByteArraySubclass, bytearray))970 self.assert _(isinstance(ByteArraySubclass(), bytearray))1058 self.assertTrue(issubclass(ByteArraySubclass, bytearray)) 1059 self.assertIsInstance(ByteArraySubclass(), bytearray) 971 1060 972 1061 a, b = b"abcd", b"efgh" … … 974 1063 975 1064 # test comparison operators with subclass instances 976 self.assert _(_a == _a)977 self.assert _(_a != _b)978 self.assert _(_a < _b)979 self.assert _(_a <= _b)980 self.assert _(_b >= _a)981 self.assert _(_b > _a)982 self.assert _(_a is not a)1065 self.assertTrue(_a == _a) 1066 self.assertTrue(_a != _b) 1067 self.assertTrue(_a < _b) 1068 self.assertTrue(_a <= _b) 1069 self.assertTrue(_b >= _a) 1070 self.assertTrue(_b > _a) 1071 self.assertTrue(_a is not a) 983 1072 984 1073 # test concat of subclass instances … … 988 1077 989 1078 # test repeat 990 self.assert _(a*5 == _a*5)1079 self.assertTrue(a*5 == _a*5) 991 1080 992 1081 def test_join(self): … … 996 1085 s1 = ByteArraySubclass(b"abcd") 997 1086 s2 = bytearray().join([s1]) 998 self.assert _(s1 is not s2)999 self.assert _(type(s2) is bytearray, type(s2))1087 self.assertTrue(s1 is not s2) 1088 self.assertTrue(type(s2) is bytearray, type(s2)) 1000 1089 1001 1090 # Test reverse, calling join on subclass 1002 1091 s3 = s1.join([b"abcd"]) 1003 self.assert _(type(s3) is bytearray)1092 self.assertTrue(type(s3) is bytearray) 1004 1093 1005 1094 def test_pickle(self):
Note:
See TracChangeset
for help on using the changeset viewer.