Merged revisions 61750,61752,61754,61756,61760,61763,61768,61772,61775,61805,61809,61812,61819,61917,61920,61930,61933-61934 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/branches/trunk-bytearray
........
r61750 | christian.heimes | 2008-03-22 20:47:44 +0100 (Sat, 22 Mar 2008) | 1 line
Copied files from py3k w/o modifications
........
r61752 | christian.heimes | 2008-03-22 20:53:20 +0100 (Sat, 22 Mar 2008) | 7 lines
Take One
* Added initialization code, warnings, flags etc. to the appropriate places
* Added new buffer interface to string type
* Modified tests
* Modified Makefile.pre.in to compile the new files
* Added bytesobject.c to Python.h
........
r61754 | christian.heimes | 2008-03-22 21:22:19 +0100 (Sat, 22 Mar 2008) | 2 lines
Disabled bytearray.extend for now since it causes an infinite recursion
Fixed serveral unit tests
........
r61756 | christian.heimes | 2008-03-22 21:43:38 +0100 (Sat, 22 Mar 2008) | 5 lines
Added PyBytes support to several places:
str + bytearray
ord(bytearray)
bytearray(str, encoding)
........
r61760 | christian.heimes | 2008-03-22 21:56:32 +0100 (Sat, 22 Mar 2008) | 1 line
Fixed more unit tests related to type('') is not unicode
........
r61763 | christian.heimes | 2008-03-22 22:20:28 +0100 (Sat, 22 Mar 2008) | 2 lines
Fixed more unit tests
Fixed bytearray.extend
........
r61768 | christian.heimes | 2008-03-22 22:40:50 +0100 (Sat, 22 Mar 2008) | 1 line
Implemented old buffer interface for bytearray
........
r61772 | christian.heimes | 2008-03-22 23:24:52 +0100 (Sat, 22 Mar 2008) | 1 line
Added backport of the io module
........
r61775 | christian.heimes | 2008-03-23 03:50:49 +0100 (Sun, 23 Mar 2008) | 1 line
Fix str assignement to bytearray. Assignment of a str of size 1 is interpreted as a single byte
........
r61805 | christian.heimes | 2008-03-23 19:33:48 +0100 (Sun, 23 Mar 2008) | 3 lines
Fixed more tests
Fixed bytearray() comparsion with unicode()
Fixed iterator assignment of bytearray
........
r61809 | christian.heimes | 2008-03-23 21:02:21 +0100 (Sun, 23 Mar 2008) | 2 lines
str(bytesarray()) now returns the bytes and not the representation of the bytearray object
Enabled and fixed more unit tests
........
r61812 | christian.heimes | 2008-03-23 21:53:08 +0100 (Sun, 23 Mar 2008) | 3 lines
Clear error PyNumber_AsSsize_t() fails
Use CHARMASK for ob_svall access
disabled a test with memoryview again
........
r61819 | christian.heimes | 2008-03-23 23:05:57 +0100 (Sun, 23 Mar 2008) | 1 line
Untested updates to the PCBuild directory
........
r61917 | christian.heimes | 2008-03-26 00:57:06 +0100 (Wed, 26 Mar 2008) | 1 line
The type system of Python 2.6 has subtle differences to 3.0's. I've removed the Py_TPFLAGS_BASETYPE flags from bytearray for now. bytearray can't be subclasses until the issues with bytearray subclasses are fixed.
........
r61920 | christian.heimes | 2008-03-26 01:44:08 +0100 (Wed, 26 Mar 2008) | 2 lines
Disabled last failing test
I don't understand what the test is testing and how it suppose to work. Ka-Ping, please check it out.
........
r61930 | christian.heimes | 2008-03-26 12:46:18 +0100 (Wed, 26 Mar 2008) | 1 line
Re-enabled bytes warning code
........
r61933 | christian.heimes | 2008-03-26 13:20:46 +0100 (Wed, 26 Mar 2008) | 1 line
Fixed a bug in the new buffer protocol. The buffer slots weren't copied into a subclass.
........
r61934 | christian.heimes | 2008-03-26 13:25:09 +0100 (Wed, 26 Mar 2008) | 1 line
Re-enabled bytearray subclassing - all tests are passing.
........
2008-03-26 09:49:49 -03:00
|
|
|
"""Unit tests for the bytes and bytearray types.
|
|
|
|
|
|
|
|
XXX This is a mess. Common tests should be moved to buffer_tests.py,
|
|
|
|
which itself ought to be unified with string_tests.py (and the latter
|
|
|
|
should be modernized).
|
|
|
|
"""
|
|
|
|
|
|
|
|
import os
|
|
|
|
import re
|
|
|
|
import sys
|
|
|
|
import copy
|
|
|
|
import pickle
|
|
|
|
import tempfile
|
|
|
|
import unittest
|
|
|
|
import warnings
|
|
|
|
import test.test_support
|
|
|
|
import test.string_tests
|
|
|
|
import test.buffer_tests
|
|
|
|
|
2008-07-16 19:57:41 -03:00
|
|
|
class Indexable:
|
|
|
|
def __init__(self, value=0):
|
|
|
|
self.value = value
|
|
|
|
def __index__(self):
|
|
|
|
return self.value
|
|
|
|
|
Merged revisions 61750,61752,61754,61756,61760,61763,61768,61772,61775,61805,61809,61812,61819,61917,61920,61930,61933-61934 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/branches/trunk-bytearray
........
r61750 | christian.heimes | 2008-03-22 20:47:44 +0100 (Sat, 22 Mar 2008) | 1 line
Copied files from py3k w/o modifications
........
r61752 | christian.heimes | 2008-03-22 20:53:20 +0100 (Sat, 22 Mar 2008) | 7 lines
Take One
* Added initialization code, warnings, flags etc. to the appropriate places
* Added new buffer interface to string type
* Modified tests
* Modified Makefile.pre.in to compile the new files
* Added bytesobject.c to Python.h
........
r61754 | christian.heimes | 2008-03-22 21:22:19 +0100 (Sat, 22 Mar 2008) | 2 lines
Disabled bytearray.extend for now since it causes an infinite recursion
Fixed serveral unit tests
........
r61756 | christian.heimes | 2008-03-22 21:43:38 +0100 (Sat, 22 Mar 2008) | 5 lines
Added PyBytes support to several places:
str + bytearray
ord(bytearray)
bytearray(str, encoding)
........
r61760 | christian.heimes | 2008-03-22 21:56:32 +0100 (Sat, 22 Mar 2008) | 1 line
Fixed more unit tests related to type('') is not unicode
........
r61763 | christian.heimes | 2008-03-22 22:20:28 +0100 (Sat, 22 Mar 2008) | 2 lines
Fixed more unit tests
Fixed bytearray.extend
........
r61768 | christian.heimes | 2008-03-22 22:40:50 +0100 (Sat, 22 Mar 2008) | 1 line
Implemented old buffer interface for bytearray
........
r61772 | christian.heimes | 2008-03-22 23:24:52 +0100 (Sat, 22 Mar 2008) | 1 line
Added backport of the io module
........
r61775 | christian.heimes | 2008-03-23 03:50:49 +0100 (Sun, 23 Mar 2008) | 1 line
Fix str assignement to bytearray. Assignment of a str of size 1 is interpreted as a single byte
........
r61805 | christian.heimes | 2008-03-23 19:33:48 +0100 (Sun, 23 Mar 2008) | 3 lines
Fixed more tests
Fixed bytearray() comparsion with unicode()
Fixed iterator assignment of bytearray
........
r61809 | christian.heimes | 2008-03-23 21:02:21 +0100 (Sun, 23 Mar 2008) | 2 lines
str(bytesarray()) now returns the bytes and not the representation of the bytearray object
Enabled and fixed more unit tests
........
r61812 | christian.heimes | 2008-03-23 21:53:08 +0100 (Sun, 23 Mar 2008) | 3 lines
Clear error PyNumber_AsSsize_t() fails
Use CHARMASK for ob_svall access
disabled a test with memoryview again
........
r61819 | christian.heimes | 2008-03-23 23:05:57 +0100 (Sun, 23 Mar 2008) | 1 line
Untested updates to the PCBuild directory
........
r61917 | christian.heimes | 2008-03-26 00:57:06 +0100 (Wed, 26 Mar 2008) | 1 line
The type system of Python 2.6 has subtle differences to 3.0's. I've removed the Py_TPFLAGS_BASETYPE flags from bytearray for now. bytearray can't be subclasses until the issues with bytearray subclasses are fixed.
........
r61920 | christian.heimes | 2008-03-26 01:44:08 +0100 (Wed, 26 Mar 2008) | 2 lines
Disabled last failing test
I don't understand what the test is testing and how it suppose to work. Ka-Ping, please check it out.
........
r61930 | christian.heimes | 2008-03-26 12:46:18 +0100 (Wed, 26 Mar 2008) | 1 line
Re-enabled bytes warning code
........
r61933 | christian.heimes | 2008-03-26 13:20:46 +0100 (Wed, 26 Mar 2008) | 1 line
Fixed a bug in the new buffer protocol. The buffer slots weren't copied into a subclass.
........
r61934 | christian.heimes | 2008-03-26 13:25:09 +0100 (Wed, 26 Mar 2008) | 1 line
Re-enabled bytearray subclassing - all tests are passing.
........
2008-03-26 09:49:49 -03:00
|
|
|
|
|
|
|
class BaseBytesTest(unittest.TestCase):
|
|
|
|
|
|
|
|
def setUp(self):
|
|
|
|
self.warning_filters = warnings.filters[:]
|
|
|
|
|
|
|
|
def tearDown(self):
|
|
|
|
warnings.filters = self.warning_filters
|
|
|
|
|
|
|
|
def test_basics(self):
|
|
|
|
b = self.type2test()
|
|
|
|
self.assertEqual(type(b), self.type2test)
|
|
|
|
self.assertEqual(b.__class__, self.type2test)
|
|
|
|
|
|
|
|
def test_empty_sequence(self):
|
|
|
|
b = self.type2test()
|
|
|
|
self.assertEqual(len(b), 0)
|
|
|
|
self.assertRaises(IndexError, lambda: b[0])
|
|
|
|
self.assertRaises(IndexError, lambda: b[1])
|
|
|
|
self.assertRaises(IndexError, lambda: b[sys.maxint])
|
|
|
|
self.assertRaises(IndexError, lambda: b[sys.maxint+1])
|
|
|
|
self.assertRaises(IndexError, lambda: b[10**100])
|
|
|
|
self.assertRaises(IndexError, lambda: b[-1])
|
|
|
|
self.assertRaises(IndexError, lambda: b[-2])
|
|
|
|
self.assertRaises(IndexError, lambda: b[-sys.maxint])
|
|
|
|
self.assertRaises(IndexError, lambda: b[-sys.maxint-1])
|
|
|
|
self.assertRaises(IndexError, lambda: b[-sys.maxint-2])
|
|
|
|
self.assertRaises(IndexError, lambda: b[-10**100])
|
|
|
|
|
|
|
|
def test_from_list(self):
|
|
|
|
ints = list(range(256))
|
|
|
|
b = self.type2test(i for i in ints)
|
|
|
|
self.assertEqual(len(b), 256)
|
|
|
|
self.assertEqual(list(b), ints)
|
|
|
|
|
|
|
|
def test_from_index(self):
|
2008-07-16 19:57:41 -03:00
|
|
|
b = self.type2test([Indexable(), Indexable(1), Indexable(254),
|
|
|
|
Indexable(255)])
|
Merged revisions 61750,61752,61754,61756,61760,61763,61768,61772,61775,61805,61809,61812,61819,61917,61920,61930,61933-61934 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/branches/trunk-bytearray
........
r61750 | christian.heimes | 2008-03-22 20:47:44 +0100 (Sat, 22 Mar 2008) | 1 line
Copied files from py3k w/o modifications
........
r61752 | christian.heimes | 2008-03-22 20:53:20 +0100 (Sat, 22 Mar 2008) | 7 lines
Take One
* Added initialization code, warnings, flags etc. to the appropriate places
* Added new buffer interface to string type
* Modified tests
* Modified Makefile.pre.in to compile the new files
* Added bytesobject.c to Python.h
........
r61754 | christian.heimes | 2008-03-22 21:22:19 +0100 (Sat, 22 Mar 2008) | 2 lines
Disabled bytearray.extend for now since it causes an infinite recursion
Fixed serveral unit tests
........
r61756 | christian.heimes | 2008-03-22 21:43:38 +0100 (Sat, 22 Mar 2008) | 5 lines
Added PyBytes support to several places:
str + bytearray
ord(bytearray)
bytearray(str, encoding)
........
r61760 | christian.heimes | 2008-03-22 21:56:32 +0100 (Sat, 22 Mar 2008) | 1 line
Fixed more unit tests related to type('') is not unicode
........
r61763 | christian.heimes | 2008-03-22 22:20:28 +0100 (Sat, 22 Mar 2008) | 2 lines
Fixed more unit tests
Fixed bytearray.extend
........
r61768 | christian.heimes | 2008-03-22 22:40:50 +0100 (Sat, 22 Mar 2008) | 1 line
Implemented old buffer interface for bytearray
........
r61772 | christian.heimes | 2008-03-22 23:24:52 +0100 (Sat, 22 Mar 2008) | 1 line
Added backport of the io module
........
r61775 | christian.heimes | 2008-03-23 03:50:49 +0100 (Sun, 23 Mar 2008) | 1 line
Fix str assignement to bytearray. Assignment of a str of size 1 is interpreted as a single byte
........
r61805 | christian.heimes | 2008-03-23 19:33:48 +0100 (Sun, 23 Mar 2008) | 3 lines
Fixed more tests
Fixed bytearray() comparsion with unicode()
Fixed iterator assignment of bytearray
........
r61809 | christian.heimes | 2008-03-23 21:02:21 +0100 (Sun, 23 Mar 2008) | 2 lines
str(bytesarray()) now returns the bytes and not the representation of the bytearray object
Enabled and fixed more unit tests
........
r61812 | christian.heimes | 2008-03-23 21:53:08 +0100 (Sun, 23 Mar 2008) | 3 lines
Clear error PyNumber_AsSsize_t() fails
Use CHARMASK for ob_svall access
disabled a test with memoryview again
........
r61819 | christian.heimes | 2008-03-23 23:05:57 +0100 (Sun, 23 Mar 2008) | 1 line
Untested updates to the PCBuild directory
........
r61917 | christian.heimes | 2008-03-26 00:57:06 +0100 (Wed, 26 Mar 2008) | 1 line
The type system of Python 2.6 has subtle differences to 3.0's. I've removed the Py_TPFLAGS_BASETYPE flags from bytearray for now. bytearray can't be subclasses until the issues with bytearray subclasses are fixed.
........
r61920 | christian.heimes | 2008-03-26 01:44:08 +0100 (Wed, 26 Mar 2008) | 2 lines
Disabled last failing test
I don't understand what the test is testing and how it suppose to work. Ka-Ping, please check it out.
........
r61930 | christian.heimes | 2008-03-26 12:46:18 +0100 (Wed, 26 Mar 2008) | 1 line
Re-enabled bytes warning code
........
r61933 | christian.heimes | 2008-03-26 13:20:46 +0100 (Wed, 26 Mar 2008) | 1 line
Fixed a bug in the new buffer protocol. The buffer slots weren't copied into a subclass.
........
r61934 | christian.heimes | 2008-03-26 13:25:09 +0100 (Wed, 26 Mar 2008) | 1 line
Re-enabled bytearray subclassing - all tests are passing.
........
2008-03-26 09:49:49 -03:00
|
|
|
self.assertEqual(list(b), [0, 1, 254, 255])
|
2008-07-16 19:57:41 -03:00
|
|
|
self.assertRaises(ValueError, bytearray, [Indexable(-1)])
|
|
|
|
self.assertRaises(ValueError, bytearray, [Indexable(256)])
|
Merged revisions 61750,61752,61754,61756,61760,61763,61768,61772,61775,61805,61809,61812,61819,61917,61920,61930,61933-61934 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/branches/trunk-bytearray
........
r61750 | christian.heimes | 2008-03-22 20:47:44 +0100 (Sat, 22 Mar 2008) | 1 line
Copied files from py3k w/o modifications
........
r61752 | christian.heimes | 2008-03-22 20:53:20 +0100 (Sat, 22 Mar 2008) | 7 lines
Take One
* Added initialization code, warnings, flags etc. to the appropriate places
* Added new buffer interface to string type
* Modified tests
* Modified Makefile.pre.in to compile the new files
* Added bytesobject.c to Python.h
........
r61754 | christian.heimes | 2008-03-22 21:22:19 +0100 (Sat, 22 Mar 2008) | 2 lines
Disabled bytearray.extend for now since it causes an infinite recursion
Fixed serveral unit tests
........
r61756 | christian.heimes | 2008-03-22 21:43:38 +0100 (Sat, 22 Mar 2008) | 5 lines
Added PyBytes support to several places:
str + bytearray
ord(bytearray)
bytearray(str, encoding)
........
r61760 | christian.heimes | 2008-03-22 21:56:32 +0100 (Sat, 22 Mar 2008) | 1 line
Fixed more unit tests related to type('') is not unicode
........
r61763 | christian.heimes | 2008-03-22 22:20:28 +0100 (Sat, 22 Mar 2008) | 2 lines
Fixed more unit tests
Fixed bytearray.extend
........
r61768 | christian.heimes | 2008-03-22 22:40:50 +0100 (Sat, 22 Mar 2008) | 1 line
Implemented old buffer interface for bytearray
........
r61772 | christian.heimes | 2008-03-22 23:24:52 +0100 (Sat, 22 Mar 2008) | 1 line
Added backport of the io module
........
r61775 | christian.heimes | 2008-03-23 03:50:49 +0100 (Sun, 23 Mar 2008) | 1 line
Fix str assignement to bytearray. Assignment of a str of size 1 is interpreted as a single byte
........
r61805 | christian.heimes | 2008-03-23 19:33:48 +0100 (Sun, 23 Mar 2008) | 3 lines
Fixed more tests
Fixed bytearray() comparsion with unicode()
Fixed iterator assignment of bytearray
........
r61809 | christian.heimes | 2008-03-23 21:02:21 +0100 (Sun, 23 Mar 2008) | 2 lines
str(bytesarray()) now returns the bytes and not the representation of the bytearray object
Enabled and fixed more unit tests
........
r61812 | christian.heimes | 2008-03-23 21:53:08 +0100 (Sun, 23 Mar 2008) | 3 lines
Clear error PyNumber_AsSsize_t() fails
Use CHARMASK for ob_svall access
disabled a test with memoryview again
........
r61819 | christian.heimes | 2008-03-23 23:05:57 +0100 (Sun, 23 Mar 2008) | 1 line
Untested updates to the PCBuild directory
........
r61917 | christian.heimes | 2008-03-26 00:57:06 +0100 (Wed, 26 Mar 2008) | 1 line
The type system of Python 2.6 has subtle differences to 3.0's. I've removed the Py_TPFLAGS_BASETYPE flags from bytearray for now. bytearray can't be subclasses until the issues with bytearray subclasses are fixed.
........
r61920 | christian.heimes | 2008-03-26 01:44:08 +0100 (Wed, 26 Mar 2008) | 2 lines
Disabled last failing test
I don't understand what the test is testing and how it suppose to work. Ka-Ping, please check it out.
........
r61930 | christian.heimes | 2008-03-26 12:46:18 +0100 (Wed, 26 Mar 2008) | 1 line
Re-enabled bytes warning code
........
r61933 | christian.heimes | 2008-03-26 13:20:46 +0100 (Wed, 26 Mar 2008) | 1 line
Fixed a bug in the new buffer protocol. The buffer slots weren't copied into a subclass.
........
r61934 | christian.heimes | 2008-03-26 13:25:09 +0100 (Wed, 26 Mar 2008) | 1 line
Re-enabled bytearray subclassing - all tests are passing.
........
2008-03-26 09:49:49 -03:00
|
|
|
|
|
|
|
def test_from_ssize(self):
|
|
|
|
self.assertEqual(bytearray(0), b'')
|
|
|
|
self.assertEqual(bytearray(1), b'\x00')
|
|
|
|
self.assertEqual(bytearray(5), b'\x00\x00\x00\x00\x00')
|
|
|
|
self.assertRaises(ValueError, bytearray, -1)
|
|
|
|
|
|
|
|
self.assertEqual(bytearray('0', 'ascii'), b'0')
|
|
|
|
self.assertEqual(bytearray(b'0'), b'0')
|
|
|
|
|
|
|
|
def test_constructor_type_errors(self):
|
|
|
|
self.assertRaises(TypeError, self.type2test, 0.0)
|
|
|
|
class C:
|
|
|
|
pass
|
2008-07-16 20:18:51 -03:00
|
|
|
# allowed in 2.6
|
|
|
|
#self.assertRaises(TypeError, self.type2test, ["0"])
|
Merged revisions 61750,61752,61754,61756,61760,61763,61768,61772,61775,61805,61809,61812,61819,61917,61920,61930,61933-61934 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/branches/trunk-bytearray
........
r61750 | christian.heimes | 2008-03-22 20:47:44 +0100 (Sat, 22 Mar 2008) | 1 line
Copied files from py3k w/o modifications
........
r61752 | christian.heimes | 2008-03-22 20:53:20 +0100 (Sat, 22 Mar 2008) | 7 lines
Take One
* Added initialization code, warnings, flags etc. to the appropriate places
* Added new buffer interface to string type
* Modified tests
* Modified Makefile.pre.in to compile the new files
* Added bytesobject.c to Python.h
........
r61754 | christian.heimes | 2008-03-22 21:22:19 +0100 (Sat, 22 Mar 2008) | 2 lines
Disabled bytearray.extend for now since it causes an infinite recursion
Fixed serveral unit tests
........
r61756 | christian.heimes | 2008-03-22 21:43:38 +0100 (Sat, 22 Mar 2008) | 5 lines
Added PyBytes support to several places:
str + bytearray
ord(bytearray)
bytearray(str, encoding)
........
r61760 | christian.heimes | 2008-03-22 21:56:32 +0100 (Sat, 22 Mar 2008) | 1 line
Fixed more unit tests related to type('') is not unicode
........
r61763 | christian.heimes | 2008-03-22 22:20:28 +0100 (Sat, 22 Mar 2008) | 2 lines
Fixed more unit tests
Fixed bytearray.extend
........
r61768 | christian.heimes | 2008-03-22 22:40:50 +0100 (Sat, 22 Mar 2008) | 1 line
Implemented old buffer interface for bytearray
........
r61772 | christian.heimes | 2008-03-22 23:24:52 +0100 (Sat, 22 Mar 2008) | 1 line
Added backport of the io module
........
r61775 | christian.heimes | 2008-03-23 03:50:49 +0100 (Sun, 23 Mar 2008) | 1 line
Fix str assignement to bytearray. Assignment of a str of size 1 is interpreted as a single byte
........
r61805 | christian.heimes | 2008-03-23 19:33:48 +0100 (Sun, 23 Mar 2008) | 3 lines
Fixed more tests
Fixed bytearray() comparsion with unicode()
Fixed iterator assignment of bytearray
........
r61809 | christian.heimes | 2008-03-23 21:02:21 +0100 (Sun, 23 Mar 2008) | 2 lines
str(bytesarray()) now returns the bytes and not the representation of the bytearray object
Enabled and fixed more unit tests
........
r61812 | christian.heimes | 2008-03-23 21:53:08 +0100 (Sun, 23 Mar 2008) | 3 lines
Clear error PyNumber_AsSsize_t() fails
Use CHARMASK for ob_svall access
disabled a test with memoryview again
........
r61819 | christian.heimes | 2008-03-23 23:05:57 +0100 (Sun, 23 Mar 2008) | 1 line
Untested updates to the PCBuild directory
........
r61917 | christian.heimes | 2008-03-26 00:57:06 +0100 (Wed, 26 Mar 2008) | 1 line
The type system of Python 2.6 has subtle differences to 3.0's. I've removed the Py_TPFLAGS_BASETYPE flags from bytearray for now. bytearray can't be subclasses until the issues with bytearray subclasses are fixed.
........
r61920 | christian.heimes | 2008-03-26 01:44:08 +0100 (Wed, 26 Mar 2008) | 2 lines
Disabled last failing test
I don't understand what the test is testing and how it suppose to work. Ka-Ping, please check it out.
........
r61930 | christian.heimes | 2008-03-26 12:46:18 +0100 (Wed, 26 Mar 2008) | 1 line
Re-enabled bytes warning code
........
r61933 | christian.heimes | 2008-03-26 13:20:46 +0100 (Wed, 26 Mar 2008) | 1 line
Fixed a bug in the new buffer protocol. The buffer slots weren't copied into a subclass.
........
r61934 | christian.heimes | 2008-03-26 13:25:09 +0100 (Wed, 26 Mar 2008) | 1 line
Re-enabled bytearray subclassing - all tests are passing.
........
2008-03-26 09:49:49 -03:00
|
|
|
self.assertRaises(TypeError, self.type2test, [0.0])
|
|
|
|
self.assertRaises(TypeError, self.type2test, [None])
|
|
|
|
self.assertRaises(TypeError, self.type2test, [C()])
|
|
|
|
|
|
|
|
def test_constructor_value_errors(self):
|
|
|
|
self.assertRaises(ValueError, self.type2test, [-1])
|
|
|
|
self.assertRaises(ValueError, self.type2test, [-sys.maxint])
|
|
|
|
self.assertRaises(ValueError, self.type2test, [-sys.maxint-1])
|
|
|
|
self.assertRaises(ValueError, self.type2test, [-sys.maxint-2])
|
|
|
|
self.assertRaises(ValueError, self.type2test, [-10**100])
|
|
|
|
self.assertRaises(ValueError, self.type2test, [256])
|
|
|
|
self.assertRaises(ValueError, self.type2test, [257])
|
|
|
|
self.assertRaises(ValueError, self.type2test, [sys.maxint])
|
|
|
|
self.assertRaises(ValueError, self.type2test, [sys.maxint+1])
|
|
|
|
self.assertRaises(ValueError, self.type2test, [10**100])
|
|
|
|
|
|
|
|
def test_compare(self):
|
|
|
|
b1 = self.type2test([1, 2, 3])
|
|
|
|
b2 = self.type2test([1, 2, 3])
|
|
|
|
b3 = self.type2test([1, 3])
|
|
|
|
|
|
|
|
self.assertEqual(b1, b2)
|
|
|
|
self.failUnless(b2 != b3)
|
|
|
|
self.failUnless(b1 <= b2)
|
|
|
|
self.failUnless(b1 <= b3)
|
|
|
|
self.failUnless(b1 < b3)
|
|
|
|
self.failUnless(b1 >= b2)
|
|
|
|
self.failUnless(b3 >= b2)
|
|
|
|
self.failUnless(b3 > b2)
|
|
|
|
|
|
|
|
self.failIf(b1 != b2)
|
|
|
|
self.failIf(b2 == b3)
|
|
|
|
self.failIf(b1 > b2)
|
|
|
|
self.failIf(b1 > b3)
|
|
|
|
self.failIf(b1 >= b3)
|
|
|
|
self.failIf(b1 < b2)
|
|
|
|
self.failIf(b3 < b2)
|
|
|
|
self.failIf(b3 <= b2)
|
|
|
|
|
|
|
|
def test_compare_to_str(self):
|
|
|
|
warnings.simplefilter('ignore', BytesWarning)
|
|
|
|
# Byte comparisons with unicode should always fail!
|
|
|
|
# Test this for all expected byte orders and Unicode character sizes
|
|
|
|
self.assertEqual(self.type2test(b"\0a\0b\0c") == u"abc", False)
|
|
|
|
self.assertEqual(self.type2test(b"\0\0\0a\0\0\0b\0\0\0c") == u"abc", False)
|
|
|
|
self.assertEqual(self.type2test(b"a\0b\0c\0") == u"abc", False)
|
|
|
|
self.assertEqual(self.type2test(b"a\0\0\0b\0\0\0c\0\0\0") == u"abc", False)
|
|
|
|
self.assertEqual(self.type2test() == unicode(), False)
|
|
|
|
self.assertEqual(self.type2test() != unicode(), True)
|
|
|
|
|
|
|
|
def test_reversed(self):
|
|
|
|
input = list(map(ord, "Hello"))
|
|
|
|
b = self.type2test(input)
|
|
|
|
output = list(reversed(b))
|
|
|
|
input.reverse()
|
|
|
|
self.assertEqual(output, input)
|
|
|
|
|
|
|
|
def test_getslice(self):
|
|
|
|
def by(s):
|
|
|
|
return self.type2test(map(ord, s))
|
|
|
|
b = by("Hello, world")
|
|
|
|
|
|
|
|
self.assertEqual(b[:5], by("Hello"))
|
|
|
|
self.assertEqual(b[1:5], by("ello"))
|
|
|
|
self.assertEqual(b[5:7], by(", "))
|
|
|
|
self.assertEqual(b[7:], by("world"))
|
|
|
|
self.assertEqual(b[7:12], by("world"))
|
|
|
|
self.assertEqual(b[7:100], by("world"))
|
|
|
|
|
|
|
|
self.assertEqual(b[:-7], by("Hello"))
|
|
|
|
self.assertEqual(b[-11:-7], by("ello"))
|
|
|
|
self.assertEqual(b[-7:-5], by(", "))
|
|
|
|
self.assertEqual(b[-5:], by("world"))
|
|
|
|
self.assertEqual(b[-5:12], by("world"))
|
|
|
|
self.assertEqual(b[-5:100], by("world"))
|
|
|
|
self.assertEqual(b[-100:5], by("Hello"))
|
|
|
|
|
|
|
|
def test_extended_getslice(self):
|
|
|
|
# Test extended slicing by comparing with list slicing.
|
|
|
|
L = list(range(255))
|
|
|
|
b = self.type2test(L)
|
|
|
|
indices = (0, None, 1, 3, 19, 100, -1, -2, -31, -100)
|
|
|
|
for start in indices:
|
|
|
|
for stop in indices:
|
|
|
|
# Skip step 0 (invalid)
|
|
|
|
for step in indices[1:]:
|
|
|
|
self.assertEqual(b[start:stop:step], self.type2test(L[start:stop:step]))
|
|
|
|
|
|
|
|
def test_encoding(self):
|
|
|
|
sample = u"Hello world\n\u1234\u5678\u9abc\udef0"
|
|
|
|
for enc in ("utf8", "utf16"):
|
|
|
|
b = self.type2test(sample, enc)
|
|
|
|
self.assertEqual(b, self.type2test(sample.encode(enc)))
|
|
|
|
self.assertRaises(UnicodeEncodeError, self.type2test, sample, "latin1")
|
|
|
|
b = self.type2test(sample, "latin1", "ignore")
|
|
|
|
self.assertEqual(b, self.type2test(sample[:-4], "utf-8"))
|
|
|
|
|
|
|
|
def test_decode(self):
|
|
|
|
sample = u"Hello world\n\u1234\u5678\u9abc\def0\def0"
|
|
|
|
for enc in ("utf8", "utf16"):
|
|
|
|
b = self.type2test(sample, enc)
|
|
|
|
self.assertEqual(b.decode(enc), sample)
|
|
|
|
sample = u"Hello world\n\x80\x81\xfe\xff"
|
|
|
|
b = self.type2test(sample, "latin1")
|
|
|
|
self.assertRaises(UnicodeDecodeError, b.decode, "utf8")
|
|
|
|
self.assertEqual(b.decode("utf8", "ignore"), "Hello world\n")
|
|
|
|
|
|
|
|
def test_from_int(self):
|
|
|
|
b = self.type2test(0)
|
|
|
|
self.assertEqual(b, self.type2test())
|
|
|
|
b = self.type2test(10)
|
|
|
|
self.assertEqual(b, self.type2test([0]*10))
|
|
|
|
b = self.type2test(10000)
|
|
|
|
self.assertEqual(b, self.type2test([0]*10000))
|
|
|
|
|
|
|
|
def test_concat(self):
|
|
|
|
b1 = self.type2test(b"abc")
|
|
|
|
b2 = self.type2test(b"def")
|
|
|
|
self.assertEqual(b1 + b2, b"abcdef")
|
|
|
|
self.assertEqual(b1 + bytes(b"def"), b"abcdef")
|
|
|
|
self.assertEqual(bytes(b"def") + b1, b"defabc")
|
|
|
|
self.assertRaises(TypeError, lambda: b1 + u"def")
|
|
|
|
self.assertRaises(TypeError, lambda: u"abc" + b2)
|
|
|
|
|
|
|
|
def test_repeat(self):
|
|
|
|
for b in b"abc", self.type2test(b"abc"):
|
|
|
|
self.assertEqual(b * 3, b"abcabcabc")
|
|
|
|
self.assertEqual(b * 0, b"")
|
|
|
|
self.assertEqual(b * -1, b"")
|
|
|
|
self.assertRaises(TypeError, lambda: b * 3.14)
|
|
|
|
self.assertRaises(TypeError, lambda: 3.14 * b)
|
|
|
|
# XXX Shouldn't bytes and bytearray agree on what to raise?
|
|
|
|
self.assertRaises((OverflowError, MemoryError),
|
2008-08-22 21:59:14 -03:00
|
|
|
lambda: b * sys.maxsize)
|
Merged revisions 61750,61752,61754,61756,61760,61763,61768,61772,61775,61805,61809,61812,61819,61917,61920,61930,61933-61934 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/branches/trunk-bytearray
........
r61750 | christian.heimes | 2008-03-22 20:47:44 +0100 (Sat, 22 Mar 2008) | 1 line
Copied files from py3k w/o modifications
........
r61752 | christian.heimes | 2008-03-22 20:53:20 +0100 (Sat, 22 Mar 2008) | 7 lines
Take One
* Added initialization code, warnings, flags etc. to the appropriate places
* Added new buffer interface to string type
* Modified tests
* Modified Makefile.pre.in to compile the new files
* Added bytesobject.c to Python.h
........
r61754 | christian.heimes | 2008-03-22 21:22:19 +0100 (Sat, 22 Mar 2008) | 2 lines
Disabled bytearray.extend for now since it causes an infinite recursion
Fixed serveral unit tests
........
r61756 | christian.heimes | 2008-03-22 21:43:38 +0100 (Sat, 22 Mar 2008) | 5 lines
Added PyBytes support to several places:
str + bytearray
ord(bytearray)
bytearray(str, encoding)
........
r61760 | christian.heimes | 2008-03-22 21:56:32 +0100 (Sat, 22 Mar 2008) | 1 line
Fixed more unit tests related to type('') is not unicode
........
r61763 | christian.heimes | 2008-03-22 22:20:28 +0100 (Sat, 22 Mar 2008) | 2 lines
Fixed more unit tests
Fixed bytearray.extend
........
r61768 | christian.heimes | 2008-03-22 22:40:50 +0100 (Sat, 22 Mar 2008) | 1 line
Implemented old buffer interface for bytearray
........
r61772 | christian.heimes | 2008-03-22 23:24:52 +0100 (Sat, 22 Mar 2008) | 1 line
Added backport of the io module
........
r61775 | christian.heimes | 2008-03-23 03:50:49 +0100 (Sun, 23 Mar 2008) | 1 line
Fix str assignement to bytearray. Assignment of a str of size 1 is interpreted as a single byte
........
r61805 | christian.heimes | 2008-03-23 19:33:48 +0100 (Sun, 23 Mar 2008) | 3 lines
Fixed more tests
Fixed bytearray() comparsion with unicode()
Fixed iterator assignment of bytearray
........
r61809 | christian.heimes | 2008-03-23 21:02:21 +0100 (Sun, 23 Mar 2008) | 2 lines
str(bytesarray()) now returns the bytes and not the representation of the bytearray object
Enabled and fixed more unit tests
........
r61812 | christian.heimes | 2008-03-23 21:53:08 +0100 (Sun, 23 Mar 2008) | 3 lines
Clear error PyNumber_AsSsize_t() fails
Use CHARMASK for ob_svall access
disabled a test with memoryview again
........
r61819 | christian.heimes | 2008-03-23 23:05:57 +0100 (Sun, 23 Mar 2008) | 1 line
Untested updates to the PCBuild directory
........
r61917 | christian.heimes | 2008-03-26 00:57:06 +0100 (Wed, 26 Mar 2008) | 1 line
The type system of Python 2.6 has subtle differences to 3.0's. I've removed the Py_TPFLAGS_BASETYPE flags from bytearray for now. bytearray can't be subclasses until the issues with bytearray subclasses are fixed.
........
r61920 | christian.heimes | 2008-03-26 01:44:08 +0100 (Wed, 26 Mar 2008) | 2 lines
Disabled last failing test
I don't understand what the test is testing and how it suppose to work. Ka-Ping, please check it out.
........
r61930 | christian.heimes | 2008-03-26 12:46:18 +0100 (Wed, 26 Mar 2008) | 1 line
Re-enabled bytes warning code
........
r61933 | christian.heimes | 2008-03-26 13:20:46 +0100 (Wed, 26 Mar 2008) | 1 line
Fixed a bug in the new buffer protocol. The buffer slots weren't copied into a subclass.
........
r61934 | christian.heimes | 2008-03-26 13:25:09 +0100 (Wed, 26 Mar 2008) | 1 line
Re-enabled bytearray subclassing - all tests are passing.
........
2008-03-26 09:49:49 -03:00
|
|
|
|
|
|
|
def test_repeat_1char(self):
|
|
|
|
self.assertEqual(self.type2test(b'x')*100, self.type2test([ord('x')]*100))
|
|
|
|
|
|
|
|
def test_contains(self):
|
|
|
|
b = self.type2test(b"abc")
|
|
|
|
self.failUnless(ord('a') in b)
|
|
|
|
self.failUnless(int(ord('a')) in b)
|
|
|
|
self.failIf(200 in b)
|
|
|
|
self.failIf(200 in b)
|
|
|
|
self.assertRaises(ValueError, lambda: 300 in b)
|
|
|
|
self.assertRaises(ValueError, lambda: -1 in b)
|
|
|
|
self.assertRaises(TypeError, lambda: None in b)
|
|
|
|
self.assertRaises(TypeError, lambda: float(ord('a')) in b)
|
|
|
|
self.assertRaises(TypeError, lambda: u"a" in b)
|
|
|
|
for f in bytes, bytearray:
|
|
|
|
self.failUnless(f(b"") in b)
|
|
|
|
self.failUnless(f(b"a") in b)
|
|
|
|
self.failUnless(f(b"b") in b)
|
|
|
|
self.failUnless(f(b"c") in b)
|
|
|
|
self.failUnless(f(b"ab") in b)
|
|
|
|
self.failUnless(f(b"bc") in b)
|
|
|
|
self.failUnless(f(b"abc") in b)
|
|
|
|
self.failIf(f(b"ac") in b)
|
|
|
|
self.failIf(f(b"d") in b)
|
|
|
|
self.failIf(f(b"dab") in b)
|
|
|
|
self.failIf(f(b"abd") in b)
|
|
|
|
|
|
|
|
def test_fromhex(self):
|
|
|
|
self.assertRaises(TypeError, self.type2test.fromhex)
|
|
|
|
self.assertRaises(TypeError, self.type2test.fromhex, 1)
|
|
|
|
self.assertEquals(self.type2test.fromhex(u''), self.type2test())
|
|
|
|
b = bytearray([0x1a, 0x2b, 0x30])
|
|
|
|
self.assertEquals(self.type2test.fromhex(u'1a2B30'), b)
|
|
|
|
self.assertEquals(self.type2test.fromhex(u' 1A 2B 30 '), b)
|
|
|
|
self.assertEquals(self.type2test.fromhex(u'0000'), b'\0\0')
|
|
|
|
self.assertRaises(TypeError, self.type2test.fromhex, b'1B')
|
|
|
|
self.assertRaises(ValueError, self.type2test.fromhex, u'a')
|
|
|
|
self.assertRaises(ValueError, self.type2test.fromhex, u'rt')
|
|
|
|
self.assertRaises(ValueError, self.type2test.fromhex, u'1a b cd')
|
|
|
|
self.assertRaises(ValueError, self.type2test.fromhex, u'\x00')
|
|
|
|
self.assertRaises(ValueError, self.type2test.fromhex, u'12 \x00 34')
|
|
|
|
|
|
|
|
def test_join(self):
|
|
|
|
self.assertEqual(self.type2test(b"").join([]), b"")
|
|
|
|
self.assertEqual(self.type2test(b"").join([b""]), b"")
|
|
|
|
for lst in [[b"abc"], [b"a", b"bc"], [b"ab", b"c"], [b"a", b"b", b"c"]]:
|
|
|
|
lst = list(map(self.type2test, lst))
|
|
|
|
self.assertEqual(self.type2test(b"").join(lst), b"abc")
|
|
|
|
self.assertEqual(self.type2test(b"").join(tuple(lst)), b"abc")
|
|
|
|
self.assertEqual(self.type2test(b"").join(iter(lst)), b"abc")
|
|
|
|
self.assertEqual(self.type2test(b".").join([b"ab", b"cd"]), b"ab.cd")
|
|
|
|
# XXX more...
|
|
|
|
|
|
|
|
def test_index(self):
|
|
|
|
b = self.type2test(b'parrot')
|
|
|
|
self.assertEqual(b.index('p'), 0)
|
|
|
|
self.assertEqual(b.index('rr'), 2)
|
|
|
|
self.assertEqual(b.index('t'), 5)
|
|
|
|
self.assertRaises(ValueError, lambda: b.index('w'))
|
|
|
|
|
|
|
|
def test_count(self):
|
|
|
|
b = self.type2test(b'mississippi')
|
|
|
|
self.assertEqual(b.count(b'i'), 4)
|
|
|
|
self.assertEqual(b.count(b'ss'), 2)
|
|
|
|
self.assertEqual(b.count(b'w'), 0)
|
|
|
|
|
|
|
|
def test_startswith(self):
|
|
|
|
b = self.type2test(b'hello')
|
|
|
|
self.assertFalse(self.type2test().startswith(b"anything"))
|
|
|
|
self.assertTrue(b.startswith(b"hello"))
|
|
|
|
self.assertTrue(b.startswith(b"hel"))
|
|
|
|
self.assertTrue(b.startswith(b"h"))
|
|
|
|
self.assertFalse(b.startswith(b"hellow"))
|
|
|
|
self.assertFalse(b.startswith(b"ha"))
|
|
|
|
|
|
|
|
def test_endswith(self):
|
|
|
|
b = self.type2test(b'hello')
|
|
|
|
self.assertFalse(bytearray().endswith(b"anything"))
|
|
|
|
self.assertTrue(b.endswith(b"hello"))
|
|
|
|
self.assertTrue(b.endswith(b"llo"))
|
|
|
|
self.assertTrue(b.endswith(b"o"))
|
|
|
|
self.assertFalse(b.endswith(b"whello"))
|
|
|
|
self.assertFalse(b.endswith(b"no"))
|
|
|
|
|
|
|
|
def test_find(self):
|
|
|
|
b = self.type2test(b'mississippi')
|
|
|
|
self.assertEqual(b.find(b'ss'), 2)
|
|
|
|
self.assertEqual(b.find(b'ss', 3), 5)
|
|
|
|
self.assertEqual(b.find(b'ss', 1, 7), 2)
|
|
|
|
self.assertEqual(b.find(b'ss', 1, 3), -1)
|
|
|
|
self.assertEqual(b.find(b'w'), -1)
|
|
|
|
self.assertEqual(b.find(b'mississippian'), -1)
|
|
|
|
|
|
|
|
def test_rfind(self):
|
|
|
|
b = self.type2test(b'mississippi')
|
|
|
|
self.assertEqual(b.rfind(b'ss'), 5)
|
|
|
|
self.assertEqual(b.rfind(b'ss', 3), 5)
|
|
|
|
self.assertEqual(b.rfind(b'ss', 0, 6), 2)
|
|
|
|
self.assertEqual(b.rfind(b'w'), -1)
|
|
|
|
self.assertEqual(b.rfind(b'mississippian'), -1)
|
|
|
|
|
|
|
|
def test_index(self):
|
|
|
|
b = self.type2test(b'world')
|
|
|
|
self.assertEqual(b.index(b'w'), 0)
|
|
|
|
self.assertEqual(b.index(b'orl'), 1)
|
|
|
|
self.assertRaises(ValueError, b.index, b'worm')
|
|
|
|
self.assertRaises(ValueError, b.index, b'ldo')
|
|
|
|
|
|
|
|
def test_rindex(self):
|
|
|
|
# XXX could be more rigorous
|
|
|
|
b = self.type2test(b'world')
|
|
|
|
self.assertEqual(b.rindex(b'w'), 0)
|
|
|
|
self.assertEqual(b.rindex(b'orl'), 1)
|
|
|
|
self.assertRaises(ValueError, b.rindex, b'worm')
|
|
|
|
self.assertRaises(ValueError, b.rindex, b'ldo')
|
|
|
|
|
|
|
|
def test_replace(self):
|
|
|
|
b = self.type2test(b'mississippi')
|
|
|
|
self.assertEqual(b.replace(b'i', b'a'), b'massassappa')
|
|
|
|
self.assertEqual(b.replace(b'ss', b'x'), b'mixixippi')
|
|
|
|
|
|
|
|
def test_split(self):
|
|
|
|
b = self.type2test(b'mississippi')
|
|
|
|
self.assertEqual(b.split(b'i'), [b'm', b'ss', b'ss', b'pp', b''])
|
|
|
|
self.assertEqual(b.split(b'ss'), [b'mi', b'i', b'ippi'])
|
|
|
|
self.assertEqual(b.split(b'w'), [b])
|
|
|
|
|
|
|
|
def test_split_whitespace(self):
|
|
|
|
for b in (b' arf barf ', b'arf\tbarf', b'arf\nbarf', b'arf\rbarf',
|
|
|
|
b'arf\fbarf', b'arf\vbarf'):
|
|
|
|
b = self.type2test(b)
|
|
|
|
self.assertEqual(b.split(), [b'arf', b'barf'])
|
|
|
|
self.assertEqual(b.split(None), [b'arf', b'barf'])
|
|
|
|
self.assertEqual(b.split(None, 2), [b'arf', b'barf'])
|
|
|
|
for b in (b'a\x1Cb', b'a\x1Db', b'a\x1Eb', b'a\x1Fb'):
|
|
|
|
b = self.type2test(b)
|
|
|
|
self.assertEqual(b.split(), [b])
|
|
|
|
self.assertEqual(self.type2test(b' a bb c ').split(None, 0), [b'a bb c '])
|
|
|
|
self.assertEqual(self.type2test(b' a bb c ').split(None, 1), [b'a', b'bb c '])
|
|
|
|
self.assertEqual(self.type2test(b' a bb c ').split(None, 2), [b'a', b'bb', b'c '])
|
|
|
|
self.assertEqual(self.type2test(b' a bb c ').split(None, 3), [b'a', b'bb', b'c'])
|
|
|
|
|
|
|
|
def test_split_string_error(self):
|
|
|
|
self.assertRaises(TypeError, self.type2test(b'a b').split, u' ')
|
|
|
|
|
|
|
|
def test_rsplit(self):
|
|
|
|
b = self.type2test(b'mississippi')
|
|
|
|
self.assertEqual(b.rsplit(b'i'), [b'm', b'ss', b'ss', b'pp', b''])
|
|
|
|
self.assertEqual(b.rsplit(b'ss'), [b'mi', b'i', b'ippi'])
|
|
|
|
self.assertEqual(b.rsplit(b'w'), [b])
|
|
|
|
|
|
|
|
def test_rsplit_whitespace(self):
|
|
|
|
for b in (b' arf barf ', b'arf\tbarf', b'arf\nbarf', b'arf\rbarf',
|
|
|
|
b'arf\fbarf', b'arf\vbarf'):
|
|
|
|
b = self.type2test(b)
|
|
|
|
self.assertEqual(b.rsplit(), [b'arf', b'barf'])
|
|
|
|
self.assertEqual(b.rsplit(None), [b'arf', b'barf'])
|
|
|
|
self.assertEqual(b.rsplit(None, 2), [b'arf', b'barf'])
|
|
|
|
self.assertEqual(self.type2test(b' a bb c ').rsplit(None, 0), [b' a bb c'])
|
|
|
|
self.assertEqual(self.type2test(b' a bb c ').rsplit(None, 1), [b' a bb', b'c'])
|
|
|
|
self.assertEqual(self.type2test(b' a bb c ').rsplit(None, 2), [b' a', b'bb', b'c'])
|
|
|
|
self.assertEqual(self.type2test(b' a bb c ').rsplit(None, 3), [b'a', b'bb', b'c'])
|
|
|
|
|
|
|
|
def test_rsplit_string_error(self):
|
|
|
|
self.assertRaises(TypeError, self.type2test(b'a b').rsplit, u' ')
|
|
|
|
|
|
|
|
def test_rsplit_unicodewhitespace(self):
|
|
|
|
b = self.type2test(b"\x09\x0A\x0B\x0C\x0D\x1C\x1D\x1E\x1F")
|
|
|
|
self.assertEqual(b.split(), [b'\x1c\x1d\x1e\x1f'])
|
|
|
|
self.assertEqual(b.rsplit(), [b'\x1c\x1d\x1e\x1f'])
|
|
|
|
|
|
|
|
def test_partition(self):
|
|
|
|
b = self.type2test(b'mississippi')
|
|
|
|
self.assertEqual(b.partition(b'ss'), (b'mi', b'ss', b'issippi'))
|
|
|
|
self.assertEqual(b.rpartition(b'w'), (b'', b'', b'mississippi'))
|
|
|
|
|
|
|
|
def test_rpartition(self):
|
|
|
|
b = self.type2test(b'mississippi')
|
|
|
|
self.assertEqual(b.rpartition(b'ss'), (b'missi', b'ss', b'ippi'))
|
|
|
|
self.assertEqual(b.rpartition(b'i'), (b'mississipp', b'i', b''))
|
|
|
|
|
|
|
|
def test_pickling(self):
|
Merged revisions 66801,66803-66804,66813,66854-66856,66866,66870-66872,66874,66887,66903,66905,66911,66913,66927,66932,66938,66942,66962,66964,66973-66974,66977,66992,66998-66999,67002,67005,67007,67028,67040-67041,67044,67070,67089,67091,67101,67117-67119,67123-67124 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
................
r66801 | andrew.kuchling | 2008-10-04 23:51:59 +0200 (Sat, 04 Oct 2008) | 1 line
Punctuation fix; expand dict.update docstring to be clearer
................
r66803 | benjamin.peterson | 2008-10-05 00:15:31 +0200 (Sun, 05 Oct 2008) | 1 line
fix typo
................
r66804 | andrew.kuchling | 2008-10-05 02:11:56 +0200 (Sun, 05 Oct 2008) | 1 line
#1415508 from Rocky Bernstein: add docstrings for enable_interspersed_args(), disable_interspersed_args()
................
r66813 | andrew.kuchling | 2008-10-06 14:07:04 +0200 (Mon, 06 Oct 2008) | 3 lines
Per Greg Ward, optparse is no longer being externally maintained.
I'll look at the bugs in the Optik bug tracker and copy them to the Python bug
tracker if they're still relevant.
................
r66854 | georg.brandl | 2008-10-08 19:20:20 +0200 (Wed, 08 Oct 2008) | 2 lines
#4059: patch up some sqlite docs.
................
r66855 | georg.brandl | 2008-10-08 19:30:55 +0200 (Wed, 08 Oct 2008) | 2 lines
#4058: fix some whatsnew markup.
................
r66856 | georg.brandl | 2008-10-08 20:47:17 +0200 (Wed, 08 Oct 2008) | 3 lines
#3935: properly support list subclasses in the C impl. of bisect.
Patch reviewed by Raymond.
................
r66866 | benjamin.peterson | 2008-10-09 22:54:43 +0200 (Thu, 09 Oct 2008) | 1 line
update paragraph about __future__ for 2.6
................
r66870 | armin.rigo | 2008-10-10 10:40:44 +0200 (Fri, 10 Oct 2008) | 2 lines
Typo: "ThreadError" is the name in the C source.
................
r66871 | benjamin.peterson | 2008-10-10 22:38:49 +0200 (Fri, 10 Oct 2008) | 1 line
fix a small typo
................
r66872 | benjamin.peterson | 2008-10-10 22:51:37 +0200 (Fri, 10 Oct 2008) | 1 line
talk about how you can unzip with zip
................
r66874 | benjamin.peterson | 2008-10-11 00:23:41 +0200 (Sat, 11 Oct 2008) | 1 line
PyGILState_Acquire -> PyGILState_Ensure
................
r66887 | benjamin.peterson | 2008-10-13 23:51:40 +0200 (Mon, 13 Oct 2008) | 1 line
document how to disable fixers
................
r66903 | benjamin.peterson | 2008-10-15 22:34:09 +0200 (Wed, 15 Oct 2008) | 1 line
don't recurse into directories that start with '.'
................
r66905 | benjamin.peterson | 2008-10-15 23:05:55 +0200 (Wed, 15 Oct 2008) | 1 line
support the optional line argument for idle
................
r66911 | benjamin.peterson | 2008-10-16 01:10:28 +0200 (Thu, 16 Oct 2008) | 41 lines
Merged revisions 66805,66841,66860,66884-66886,66893,66907,66910 via svnmerge from
svn+ssh://pythondev@svn.python.org/sandbox/trunk/2to3/lib2to3
........
r66805 | benjamin.peterson | 2008-10-04 20:11:02 -0500 (Sat, 04 Oct 2008) | 1 line
mention what the fixes directory is for
........
r66841 | benjamin.peterson | 2008-10-07 17:48:12 -0500 (Tue, 07 Oct 2008) | 1 line
use assertFalse and assertTrue
........
r66860 | benjamin.peterson | 2008-10-08 16:05:07 -0500 (Wed, 08 Oct 2008) | 1 line
instead of abusing the pattern matcher, use start_tree to find a next binding
........
r66884 | benjamin.peterson | 2008-10-13 15:50:30 -0500 (Mon, 13 Oct 2008) | 1 line
don't print tokens to stdout when -v is given
........
r66885 | benjamin.peterson | 2008-10-13 16:28:57 -0500 (Mon, 13 Oct 2008) | 1 line
add the -x option to disable fixers
........
r66886 | benjamin.peterson | 2008-10-13 16:33:53 -0500 (Mon, 13 Oct 2008) | 1 line
cut down on some crud
........
r66893 | benjamin.peterson | 2008-10-14 17:16:54 -0500 (Tue, 14 Oct 2008) | 1 line
add an optional set literal fixer
........
r66907 | benjamin.peterson | 2008-10-15 16:59:41 -0500 (Wed, 15 Oct 2008) | 1 line
don't write backup files by default
........
r66910 | benjamin.peterson | 2008-10-15 17:43:10 -0500 (Wed, 15 Oct 2008) | 1 line
add the -n option; it stops backupfiles from being written
........
................
r66913 | benjamin.peterson | 2008-10-16 20:52:14 +0200 (Thu, 16 Oct 2008) | 1 line
document that deque indexing is O(n) #4123
................
r66927 | andrew.kuchling | 2008-10-16 22:15:47 +0200 (Thu, 16 Oct 2008) | 1 line
Fix wording (2.6.1 backport candidate)
................
r66932 | benjamin.peterson | 2008-10-16 23:09:28 +0200 (Thu, 16 Oct 2008) | 1 line
check for error conditions in _json #3623
................
r66938 | benjamin.peterson | 2008-10-16 23:27:54 +0200 (Thu, 16 Oct 2008) | 1 line
fix possible ref leak
................
r66942 | benjamin.peterson | 2008-10-16 23:48:06 +0200 (Thu, 16 Oct 2008) | 1 line
fix more possible ref leaks in _json and use Py_CLEAR
................
r66962 | benjamin.peterson | 2008-10-17 22:01:01 +0200 (Fri, 17 Oct 2008) | 1 line
clarify CALL_FUNCTION #4141
................
r66964 | georg.brandl | 2008-10-17 23:41:49 +0200 (Fri, 17 Oct 2008) | 2 lines
Fix duplicate word.
................
r66973 | armin.ronacher | 2008-10-19 10:27:43 +0200 (Sun, 19 Oct 2008) | 3 lines
Fixed #4067 by implementing _attributes and _fields for the AST root node.
................
r66974 | benjamin.peterson | 2008-10-19 15:59:01 +0200 (Sun, 19 Oct 2008) | 1 line
fix compiler warning
................
r66977 | benjamin.peterson | 2008-10-19 21:39:16 +0200 (Sun, 19 Oct 2008) | 1 line
mention -n
................
r66992 | benjamin.peterson | 2008-10-21 22:51:13 +0200 (Tue, 21 Oct 2008) | 1 line
make sure to call iteritems()
................
r66998 | benjamin.peterson | 2008-10-22 22:57:43 +0200 (Wed, 22 Oct 2008) | 1 line
fix a few typos
................
r66999 | benjamin.peterson | 2008-10-22 23:05:30 +0200 (Wed, 22 Oct 2008) | 1 line
and another typo...
................
r67002 | hirokazu.yamamoto | 2008-10-23 02:37:33 +0200 (Thu, 23 Oct 2008) | 1 line
Issue #4183: Some tests didn't run with pickle.HIGHEST_PROTOCOL.
................
r67005 | walter.doerwald | 2008-10-23 15:11:39 +0200 (Thu, 23 Oct 2008) | 2 lines
Use the correct names of the stateless codec functions (Fixes issue 4178).
................
r67007 | benjamin.peterson | 2008-10-23 23:43:48 +0200 (Thu, 23 Oct 2008) | 1 line
only nonempty __slots__ don't work
................
r67028 | benjamin.peterson | 2008-10-26 01:27:07 +0200 (Sun, 26 Oct 2008) | 1 line
don't use a catch-all
................
r67040 | armin.rigo | 2008-10-28 18:01:21 +0100 (Tue, 28 Oct 2008) | 5 lines
Fix one of the tests: it relied on being present in an "output test" in
order to actually test what it was supposed to test, i.e. that the code
in the __del__ method did not crash. Use instead the new helper
test_support.captured_output().
................
r67041 | benjamin.peterson | 2008-10-29 21:33:00 +0100 (Wed, 29 Oct 2008) | 1 line
mention the version gettempdir() was added
................
r67044 | amaury.forgeotdarc | 2008-10-30 00:15:57 +0100 (Thu, 30 Oct 2008) | 3 lines
Correct error message in io.open():
closefd=True is the only accepted value with a file name.
................
r67070 | benjamin.peterson | 2008-10-31 21:41:44 +0100 (Fri, 31 Oct 2008) | 1 line
rephrase has_key doc
................
r67089 | benjamin.peterson | 2008-11-03 21:43:20 +0100 (Mon, 03 Nov 2008) | 1 line
clarify by splitting into multiple paragraphs
................
r67091 | benjamin.peterson | 2008-11-03 23:34:57 +0100 (Mon, 03 Nov 2008) | 1 line
move a FileIO test to test_fileio
................
r67101 | georg.brandl | 2008-11-04 21:49:35 +0100 (Tue, 04 Nov 2008) | 2 lines
#4167: fix markup glitches.
................
r67117 | georg.brandl | 2008-11-06 11:17:58 +0100 (Thu, 06 Nov 2008) | 2 lines
#4268: Use correct module for two toplevel functions.
................
r67118 | georg.brandl | 2008-11-06 11:19:11 +0100 (Thu, 06 Nov 2008) | 2 lines
#4267: small fixes in sqlite3 docs.
................
r67119 | georg.brandl | 2008-11-06 11:20:49 +0100 (Thu, 06 Nov 2008) | 2 lines
#4245: move Thread section to the top.
................
r67123 | georg.brandl | 2008-11-06 19:49:15 +0100 (Thu, 06 Nov 2008) | 2 lines
#4247: add "pass" examples to tutorial.
................
r67124 | andrew.kuchling | 2008-11-06 20:23:02 +0100 (Thu, 06 Nov 2008) | 1 line
Fix grammar error; reword two paragraphs
................
2008-11-07 04:56:27 -04:00
|
|
|
for proto in range(pickle.HIGHEST_PROTOCOL + 1):
|
Merged revisions 61750,61752,61754,61756,61760,61763,61768,61772,61775,61805,61809,61812,61819,61917,61920,61930,61933-61934 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/branches/trunk-bytearray
........
r61750 | christian.heimes | 2008-03-22 20:47:44 +0100 (Sat, 22 Mar 2008) | 1 line
Copied files from py3k w/o modifications
........
r61752 | christian.heimes | 2008-03-22 20:53:20 +0100 (Sat, 22 Mar 2008) | 7 lines
Take One
* Added initialization code, warnings, flags etc. to the appropriate places
* Added new buffer interface to string type
* Modified tests
* Modified Makefile.pre.in to compile the new files
* Added bytesobject.c to Python.h
........
r61754 | christian.heimes | 2008-03-22 21:22:19 +0100 (Sat, 22 Mar 2008) | 2 lines
Disabled bytearray.extend for now since it causes an infinite recursion
Fixed serveral unit tests
........
r61756 | christian.heimes | 2008-03-22 21:43:38 +0100 (Sat, 22 Mar 2008) | 5 lines
Added PyBytes support to several places:
str + bytearray
ord(bytearray)
bytearray(str, encoding)
........
r61760 | christian.heimes | 2008-03-22 21:56:32 +0100 (Sat, 22 Mar 2008) | 1 line
Fixed more unit tests related to type('') is not unicode
........
r61763 | christian.heimes | 2008-03-22 22:20:28 +0100 (Sat, 22 Mar 2008) | 2 lines
Fixed more unit tests
Fixed bytearray.extend
........
r61768 | christian.heimes | 2008-03-22 22:40:50 +0100 (Sat, 22 Mar 2008) | 1 line
Implemented old buffer interface for bytearray
........
r61772 | christian.heimes | 2008-03-22 23:24:52 +0100 (Sat, 22 Mar 2008) | 1 line
Added backport of the io module
........
r61775 | christian.heimes | 2008-03-23 03:50:49 +0100 (Sun, 23 Mar 2008) | 1 line
Fix str assignement to bytearray. Assignment of a str of size 1 is interpreted as a single byte
........
r61805 | christian.heimes | 2008-03-23 19:33:48 +0100 (Sun, 23 Mar 2008) | 3 lines
Fixed more tests
Fixed bytearray() comparsion with unicode()
Fixed iterator assignment of bytearray
........
r61809 | christian.heimes | 2008-03-23 21:02:21 +0100 (Sun, 23 Mar 2008) | 2 lines
str(bytesarray()) now returns the bytes and not the representation of the bytearray object
Enabled and fixed more unit tests
........
r61812 | christian.heimes | 2008-03-23 21:53:08 +0100 (Sun, 23 Mar 2008) | 3 lines
Clear error PyNumber_AsSsize_t() fails
Use CHARMASK for ob_svall access
disabled a test with memoryview again
........
r61819 | christian.heimes | 2008-03-23 23:05:57 +0100 (Sun, 23 Mar 2008) | 1 line
Untested updates to the PCBuild directory
........
r61917 | christian.heimes | 2008-03-26 00:57:06 +0100 (Wed, 26 Mar 2008) | 1 line
The type system of Python 2.6 has subtle differences to 3.0's. I've removed the Py_TPFLAGS_BASETYPE flags from bytearray for now. bytearray can't be subclasses until the issues with bytearray subclasses are fixed.
........
r61920 | christian.heimes | 2008-03-26 01:44:08 +0100 (Wed, 26 Mar 2008) | 2 lines
Disabled last failing test
I don't understand what the test is testing and how it suppose to work. Ka-Ping, please check it out.
........
r61930 | christian.heimes | 2008-03-26 12:46:18 +0100 (Wed, 26 Mar 2008) | 1 line
Re-enabled bytes warning code
........
r61933 | christian.heimes | 2008-03-26 13:20:46 +0100 (Wed, 26 Mar 2008) | 1 line
Fixed a bug in the new buffer protocol. The buffer slots weren't copied into a subclass.
........
r61934 | christian.heimes | 2008-03-26 13:25:09 +0100 (Wed, 26 Mar 2008) | 1 line
Re-enabled bytearray subclassing - all tests are passing.
........
2008-03-26 09:49:49 -03:00
|
|
|
for b in b"", b"a", b"abc", b"\xffab\x80", b"\0\0\377\0\0":
|
|
|
|
b = self.type2test(b)
|
|
|
|
ps = pickle.dumps(b, proto)
|
|
|
|
q = pickle.loads(ps)
|
|
|
|
self.assertEqual(b, q)
|
|
|
|
|
|
|
|
def test_strip(self):
|
|
|
|
b = self.type2test(b'mississippi')
|
|
|
|
self.assertEqual(b.strip(b'i'), b'mississipp')
|
|
|
|
self.assertEqual(b.strip(b'm'), b'ississippi')
|
|
|
|
self.assertEqual(b.strip(b'pi'), b'mississ')
|
|
|
|
self.assertEqual(b.strip(b'im'), b'ssissipp')
|
|
|
|
self.assertEqual(b.strip(b'pim'), b'ssiss')
|
|
|
|
self.assertEqual(b.strip(b), b'')
|
|
|
|
|
|
|
|
def test_lstrip(self):
|
|
|
|
b = self.type2test(b'mississippi')
|
|
|
|
self.assertEqual(b.lstrip(b'i'), b'mississippi')
|
|
|
|
self.assertEqual(b.lstrip(b'm'), b'ississippi')
|
|
|
|
self.assertEqual(b.lstrip(b'pi'), b'mississippi')
|
|
|
|
self.assertEqual(b.lstrip(b'im'), b'ssissippi')
|
|
|
|
self.assertEqual(b.lstrip(b'pim'), b'ssissippi')
|
|
|
|
|
|
|
|
def test_rstrip(self):
|
|
|
|
b = self.type2test(b'mississippi')
|
|
|
|
self.assertEqual(b.rstrip(b'i'), b'mississipp')
|
|
|
|
self.assertEqual(b.rstrip(b'm'), b'mississippi')
|
|
|
|
self.assertEqual(b.rstrip(b'pi'), b'mississ')
|
|
|
|
self.assertEqual(b.rstrip(b'im'), b'mississipp')
|
|
|
|
self.assertEqual(b.rstrip(b'pim'), b'mississ')
|
|
|
|
|
|
|
|
def test_strip_whitespace(self):
|
|
|
|
b = self.type2test(b' \t\n\r\f\vabc \t\n\r\f\v')
|
|
|
|
self.assertEqual(b.strip(), b'abc')
|
|
|
|
self.assertEqual(b.lstrip(), b'abc \t\n\r\f\v')
|
|
|
|
self.assertEqual(b.rstrip(), b' \t\n\r\f\vabc')
|
|
|
|
|
|
|
|
def XXXtest_strip_bytearray(self):
|
|
|
|
# XXX memoryview not available
|
|
|
|
self.assertEqual(self.type2test(b'abc').strip(memoryview(b'ac')), b'b')
|
|
|
|
self.assertEqual(self.type2test(b'abc').lstrip(memoryview(b'ac')), b'bc')
|
|
|
|
self.assertEqual(self.type2test(b'abc').rstrip(memoryview(b'ac')), b'ab')
|
|
|
|
|
|
|
|
def test_strip_string_error(self):
|
|
|
|
self.assertRaises(TypeError, self.type2test(b'abc').strip, u'b')
|
|
|
|
self.assertRaises(TypeError, self.type2test(b'abc').lstrip, u'b')
|
|
|
|
self.assertRaises(TypeError, self.type2test(b'abc').rstrip, u'b')
|
|
|
|
|
|
|
|
def test_ord(self):
|
|
|
|
b = self.type2test(b'\0A\x7f\x80\xff')
|
|
|
|
self.assertEqual([ord(b[i:i+1]) for i in range(len(b))],
|
|
|
|
[0, 65, 127, 128, 255])
|
|
|
|
|
|
|
|
|
|
|
|
class ByteArrayTest(BaseBytesTest):
|
|
|
|
type2test = bytearray
|
|
|
|
|
|
|
|
def test_nohash(self):
|
|
|
|
self.assertRaises(TypeError, hash, bytearray())
|
|
|
|
|
|
|
|
def test_bytearray_api(self):
|
|
|
|
short_sample = b"Hello world\n"
|
|
|
|
sample = short_sample + b"\0"*(20 - len(short_sample))
|
|
|
|
tfn = tempfile.mktemp()
|
|
|
|
try:
|
|
|
|
# Prepare
|
|
|
|
with open(tfn, "wb") as f:
|
|
|
|
f.write(short_sample)
|
|
|
|
# Test readinto
|
|
|
|
with open(tfn, "rb") as f:
|
|
|
|
b = bytearray(20)
|
|
|
|
n = f.readinto(b)
|
|
|
|
self.assertEqual(n, len(short_sample))
|
|
|
|
# Python 2.x
|
|
|
|
b_sample = (ord(s) for s in sample)
|
|
|
|
self.assertEqual(list(b), list(b_sample))
|
|
|
|
# Test writing in binary mode
|
|
|
|
with open(tfn, "wb") as f:
|
|
|
|
f.write(b)
|
|
|
|
with open(tfn, "rb") as f:
|
|
|
|
self.assertEqual(f.read(), sample)
|
|
|
|
# Text mode is ambiguous; don't test
|
|
|
|
finally:
|
|
|
|
try:
|
|
|
|
os.remove(tfn)
|
|
|
|
except os.error:
|
|
|
|
pass
|
|
|
|
|
|
|
|
def test_reverse(self):
|
|
|
|
b = bytearray(b'hello')
|
|
|
|
self.assertEqual(b.reverse(), None)
|
|
|
|
self.assertEqual(b, b'olleh')
|
|
|
|
b = bytearray(b'hello1') # test even number of items
|
|
|
|
b.reverse()
|
|
|
|
self.assertEqual(b, b'1olleh')
|
|
|
|
b = bytearray()
|
|
|
|
b.reverse()
|
|
|
|
self.assertFalse(b)
|
|
|
|
|
|
|
|
def test_regexps(self):
|
|
|
|
def by(s):
|
|
|
|
return bytearray(map(ord, s))
|
|
|
|
b = by("Hello, world")
|
|
|
|
self.assertEqual(re.findall(r"\w+", b), [by("Hello"), by("world")])
|
|
|
|
|
|
|
|
def test_setitem(self):
|
|
|
|
b = bytearray([1, 2, 3])
|
|
|
|
b[1] = 100
|
|
|
|
self.assertEqual(b, bytearray([1, 100, 3]))
|
|
|
|
b[-1] = 200
|
|
|
|
self.assertEqual(b, bytearray([1, 100, 200]))
|
2008-07-16 19:57:41 -03:00
|
|
|
b[0] = Indexable(10)
|
Merged revisions 61750,61752,61754,61756,61760,61763,61768,61772,61775,61805,61809,61812,61819,61917,61920,61930,61933-61934 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/branches/trunk-bytearray
........
r61750 | christian.heimes | 2008-03-22 20:47:44 +0100 (Sat, 22 Mar 2008) | 1 line
Copied files from py3k w/o modifications
........
r61752 | christian.heimes | 2008-03-22 20:53:20 +0100 (Sat, 22 Mar 2008) | 7 lines
Take One
* Added initialization code, warnings, flags etc. to the appropriate places
* Added new buffer interface to string type
* Modified tests
* Modified Makefile.pre.in to compile the new files
* Added bytesobject.c to Python.h
........
r61754 | christian.heimes | 2008-03-22 21:22:19 +0100 (Sat, 22 Mar 2008) | 2 lines
Disabled bytearray.extend for now since it causes an infinite recursion
Fixed serveral unit tests
........
r61756 | christian.heimes | 2008-03-22 21:43:38 +0100 (Sat, 22 Mar 2008) | 5 lines
Added PyBytes support to several places:
str + bytearray
ord(bytearray)
bytearray(str, encoding)
........
r61760 | christian.heimes | 2008-03-22 21:56:32 +0100 (Sat, 22 Mar 2008) | 1 line
Fixed more unit tests related to type('') is not unicode
........
r61763 | christian.heimes | 2008-03-22 22:20:28 +0100 (Sat, 22 Mar 2008) | 2 lines
Fixed more unit tests
Fixed bytearray.extend
........
r61768 | christian.heimes | 2008-03-22 22:40:50 +0100 (Sat, 22 Mar 2008) | 1 line
Implemented old buffer interface for bytearray
........
r61772 | christian.heimes | 2008-03-22 23:24:52 +0100 (Sat, 22 Mar 2008) | 1 line
Added backport of the io module
........
r61775 | christian.heimes | 2008-03-23 03:50:49 +0100 (Sun, 23 Mar 2008) | 1 line
Fix str assignement to bytearray. Assignment of a str of size 1 is interpreted as a single byte
........
r61805 | christian.heimes | 2008-03-23 19:33:48 +0100 (Sun, 23 Mar 2008) | 3 lines
Fixed more tests
Fixed bytearray() comparsion with unicode()
Fixed iterator assignment of bytearray
........
r61809 | christian.heimes | 2008-03-23 21:02:21 +0100 (Sun, 23 Mar 2008) | 2 lines
str(bytesarray()) now returns the bytes and not the representation of the bytearray object
Enabled and fixed more unit tests
........
r61812 | christian.heimes | 2008-03-23 21:53:08 +0100 (Sun, 23 Mar 2008) | 3 lines
Clear error PyNumber_AsSsize_t() fails
Use CHARMASK for ob_svall access
disabled a test with memoryview again
........
r61819 | christian.heimes | 2008-03-23 23:05:57 +0100 (Sun, 23 Mar 2008) | 1 line
Untested updates to the PCBuild directory
........
r61917 | christian.heimes | 2008-03-26 00:57:06 +0100 (Wed, 26 Mar 2008) | 1 line
The type system of Python 2.6 has subtle differences to 3.0's. I've removed the Py_TPFLAGS_BASETYPE flags from bytearray for now. bytearray can't be subclasses until the issues with bytearray subclasses are fixed.
........
r61920 | christian.heimes | 2008-03-26 01:44:08 +0100 (Wed, 26 Mar 2008) | 2 lines
Disabled last failing test
I don't understand what the test is testing and how it suppose to work. Ka-Ping, please check it out.
........
r61930 | christian.heimes | 2008-03-26 12:46:18 +0100 (Wed, 26 Mar 2008) | 1 line
Re-enabled bytes warning code
........
r61933 | christian.heimes | 2008-03-26 13:20:46 +0100 (Wed, 26 Mar 2008) | 1 line
Fixed a bug in the new buffer protocol. The buffer slots weren't copied into a subclass.
........
r61934 | christian.heimes | 2008-03-26 13:25:09 +0100 (Wed, 26 Mar 2008) | 1 line
Re-enabled bytearray subclassing - all tests are passing.
........
2008-03-26 09:49:49 -03:00
|
|
|
self.assertEqual(b, bytearray([10, 100, 200]))
|
|
|
|
try:
|
|
|
|
b[3] = 0
|
|
|
|
self.fail("Didn't raise IndexError")
|
|
|
|
except IndexError:
|
|
|
|
pass
|
|
|
|
try:
|
|
|
|
b[-10] = 0
|
|
|
|
self.fail("Didn't raise IndexError")
|
|
|
|
except IndexError:
|
|
|
|
pass
|
|
|
|
try:
|
|
|
|
b[0] = 256
|
|
|
|
self.fail("Didn't raise ValueError")
|
|
|
|
except ValueError:
|
|
|
|
pass
|
|
|
|
try:
|
2008-07-16 19:57:41 -03:00
|
|
|
b[0] = Indexable(-1)
|
Merged revisions 61750,61752,61754,61756,61760,61763,61768,61772,61775,61805,61809,61812,61819,61917,61920,61930,61933-61934 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/branches/trunk-bytearray
........
r61750 | christian.heimes | 2008-03-22 20:47:44 +0100 (Sat, 22 Mar 2008) | 1 line
Copied files from py3k w/o modifications
........
r61752 | christian.heimes | 2008-03-22 20:53:20 +0100 (Sat, 22 Mar 2008) | 7 lines
Take One
* Added initialization code, warnings, flags etc. to the appropriate places
* Added new buffer interface to string type
* Modified tests
* Modified Makefile.pre.in to compile the new files
* Added bytesobject.c to Python.h
........
r61754 | christian.heimes | 2008-03-22 21:22:19 +0100 (Sat, 22 Mar 2008) | 2 lines
Disabled bytearray.extend for now since it causes an infinite recursion
Fixed serveral unit tests
........
r61756 | christian.heimes | 2008-03-22 21:43:38 +0100 (Sat, 22 Mar 2008) | 5 lines
Added PyBytes support to several places:
str + bytearray
ord(bytearray)
bytearray(str, encoding)
........
r61760 | christian.heimes | 2008-03-22 21:56:32 +0100 (Sat, 22 Mar 2008) | 1 line
Fixed more unit tests related to type('') is not unicode
........
r61763 | christian.heimes | 2008-03-22 22:20:28 +0100 (Sat, 22 Mar 2008) | 2 lines
Fixed more unit tests
Fixed bytearray.extend
........
r61768 | christian.heimes | 2008-03-22 22:40:50 +0100 (Sat, 22 Mar 2008) | 1 line
Implemented old buffer interface for bytearray
........
r61772 | christian.heimes | 2008-03-22 23:24:52 +0100 (Sat, 22 Mar 2008) | 1 line
Added backport of the io module
........
r61775 | christian.heimes | 2008-03-23 03:50:49 +0100 (Sun, 23 Mar 2008) | 1 line
Fix str assignement to bytearray. Assignment of a str of size 1 is interpreted as a single byte
........
r61805 | christian.heimes | 2008-03-23 19:33:48 +0100 (Sun, 23 Mar 2008) | 3 lines
Fixed more tests
Fixed bytearray() comparsion with unicode()
Fixed iterator assignment of bytearray
........
r61809 | christian.heimes | 2008-03-23 21:02:21 +0100 (Sun, 23 Mar 2008) | 2 lines
str(bytesarray()) now returns the bytes and not the representation of the bytearray object
Enabled and fixed more unit tests
........
r61812 | christian.heimes | 2008-03-23 21:53:08 +0100 (Sun, 23 Mar 2008) | 3 lines
Clear error PyNumber_AsSsize_t() fails
Use CHARMASK for ob_svall access
disabled a test with memoryview again
........
r61819 | christian.heimes | 2008-03-23 23:05:57 +0100 (Sun, 23 Mar 2008) | 1 line
Untested updates to the PCBuild directory
........
r61917 | christian.heimes | 2008-03-26 00:57:06 +0100 (Wed, 26 Mar 2008) | 1 line
The type system of Python 2.6 has subtle differences to 3.0's. I've removed the Py_TPFLAGS_BASETYPE flags from bytearray for now. bytearray can't be subclasses until the issues with bytearray subclasses are fixed.
........
r61920 | christian.heimes | 2008-03-26 01:44:08 +0100 (Wed, 26 Mar 2008) | 2 lines
Disabled last failing test
I don't understand what the test is testing and how it suppose to work. Ka-Ping, please check it out.
........
r61930 | christian.heimes | 2008-03-26 12:46:18 +0100 (Wed, 26 Mar 2008) | 1 line
Re-enabled bytes warning code
........
r61933 | christian.heimes | 2008-03-26 13:20:46 +0100 (Wed, 26 Mar 2008) | 1 line
Fixed a bug in the new buffer protocol. The buffer slots weren't copied into a subclass.
........
r61934 | christian.heimes | 2008-03-26 13:25:09 +0100 (Wed, 26 Mar 2008) | 1 line
Re-enabled bytearray subclassing - all tests are passing.
........
2008-03-26 09:49:49 -03:00
|
|
|
self.fail("Didn't raise ValueError")
|
|
|
|
except ValueError:
|
|
|
|
pass
|
|
|
|
try:
|
|
|
|
b[0] = None
|
|
|
|
self.fail("Didn't raise TypeError")
|
|
|
|
except TypeError:
|
|
|
|
pass
|
|
|
|
|
|
|
|
def test_delitem(self):
|
|
|
|
b = bytearray(range(10))
|
|
|
|
del b[0]
|
|
|
|
self.assertEqual(b, bytearray(range(1, 10)))
|
|
|
|
del b[-1]
|
|
|
|
self.assertEqual(b, bytearray(range(1, 9)))
|
|
|
|
del b[4]
|
|
|
|
self.assertEqual(b, bytearray([1, 2, 3, 4, 6, 7, 8]))
|
|
|
|
|
|
|
|
def test_setslice(self):
|
|
|
|
b = bytearray(range(10))
|
|
|
|
self.assertEqual(list(b), list(range(10)))
|
|
|
|
|
|
|
|
b[0:5] = bytearray([1, 1, 1, 1, 1])
|
|
|
|
self.assertEqual(b, bytearray([1, 1, 1, 1, 1, 5, 6, 7, 8, 9]))
|
|
|
|
|
|
|
|
del b[0:-5]
|
|
|
|
self.assertEqual(b, bytearray([5, 6, 7, 8, 9]))
|
|
|
|
|
|
|
|
b[0:0] = bytearray([0, 1, 2, 3, 4])
|
|
|
|
self.assertEqual(b, bytearray(range(10)))
|
|
|
|
|
|
|
|
b[-7:-3] = bytearray([100, 101])
|
|
|
|
self.assertEqual(b, bytearray([0, 1, 2, 100, 101, 7, 8, 9]))
|
|
|
|
|
|
|
|
b[3:5] = [3, 4, 5, 6]
|
|
|
|
self.assertEqual(b, bytearray(range(10)))
|
|
|
|
|
|
|
|
b[3:0] = [42, 42, 42]
|
|
|
|
self.assertEqual(b, bytearray([0, 1, 2, 42, 42, 42, 3, 4, 5, 6, 7, 8, 9]))
|
|
|
|
|
|
|
|
def test_extended_set_del_slice(self):
|
|
|
|
indices = (0, None, 1, 3, 19, 300, -1, -2, -31, -300)
|
|
|
|
for start in indices:
|
|
|
|
for stop in indices:
|
|
|
|
# Skip invalid step 0
|
|
|
|
for step in indices[1:]:
|
|
|
|
L = list(range(255))
|
|
|
|
b = bytearray(L)
|
|
|
|
# Make sure we have a slice of exactly the right length,
|
|
|
|
# but with different data.
|
|
|
|
data = L[start:stop:step]
|
|
|
|
data.reverse()
|
|
|
|
L[start:stop:step] = data
|
|
|
|
b[start:stop:step] = data
|
|
|
|
self.assertEquals(b, bytearray(L))
|
|
|
|
|
|
|
|
del L[start:stop:step]
|
|
|
|
del b[start:stop:step]
|
|
|
|
self.assertEquals(b, bytearray(L))
|
|
|
|
|
|
|
|
def test_setslice_trap(self):
|
|
|
|
# This test verifies that we correctly handle assigning self
|
|
|
|
# to a slice of self (the old Lambert Meertens trap).
|
|
|
|
b = bytearray(range(256))
|
|
|
|
b[8:] = b
|
|
|
|
self.assertEqual(b, bytearray(list(range(8)) + list(range(256))))
|
|
|
|
|
|
|
|
def test_iconcat(self):
|
|
|
|
b = bytearray(b"abc")
|
|
|
|
b1 = b
|
|
|
|
b += b"def"
|
|
|
|
self.assertEqual(b, b"abcdef")
|
|
|
|
self.assertEqual(b, b1)
|
|
|
|
self.failUnless(b is b1)
|
|
|
|
b += b"xyz"
|
|
|
|
self.assertEqual(b, b"abcdefxyz")
|
|
|
|
try:
|
|
|
|
b += u""
|
|
|
|
except TypeError:
|
|
|
|
pass
|
|
|
|
else:
|
|
|
|
self.fail("bytes += unicode didn't raise TypeError")
|
|
|
|
|
|
|
|
def test_irepeat(self):
|
|
|
|
b = bytearray(b"abc")
|
|
|
|
b1 = b
|
|
|
|
b *= 3
|
|
|
|
self.assertEqual(b, b"abcabcabc")
|
|
|
|
self.assertEqual(b, b1)
|
|
|
|
self.failUnless(b is b1)
|
|
|
|
|
|
|
|
def test_irepeat_1char(self):
|
|
|
|
b = bytearray(b"x")
|
|
|
|
b1 = b
|
|
|
|
b *= 100
|
|
|
|
self.assertEqual(b, b"x"*100)
|
|
|
|
self.assertEqual(b, b1)
|
|
|
|
self.failUnless(b is b1)
|
|
|
|
|
|
|
|
def test_alloc(self):
|
|
|
|
b = bytearray()
|
|
|
|
alloc = b.__alloc__()
|
|
|
|
self.assert_(alloc >= 0)
|
|
|
|
seq = [alloc]
|
|
|
|
for i in range(100):
|
|
|
|
b += b"x"
|
|
|
|
alloc = b.__alloc__()
|
|
|
|
self.assert_(alloc >= len(b))
|
|
|
|
if alloc not in seq:
|
|
|
|
seq.append(alloc)
|
|
|
|
|
|
|
|
def test_extend(self):
|
|
|
|
orig = b'hello'
|
|
|
|
a = bytearray(orig)
|
|
|
|
a.extend(a)
|
|
|
|
self.assertEqual(a, orig + orig)
|
|
|
|
self.assertEqual(a[5:], orig)
|
|
|
|
a = bytearray(b'')
|
|
|
|
# Test iterators that don't have a __length_hint__
|
|
|
|
a.extend(map(ord, orig * 25))
|
|
|
|
a.extend(ord(x) for x in orig * 25)
|
|
|
|
self.assertEqual(a, orig * 50)
|
|
|
|
self.assertEqual(a[-5:], orig)
|
|
|
|
a = bytearray(b'')
|
|
|
|
a.extend(iter(map(ord, orig * 50)))
|
|
|
|
self.assertEqual(a, orig * 50)
|
|
|
|
self.assertEqual(a[-5:], orig)
|
|
|
|
a = bytearray(b'')
|
|
|
|
a.extend(list(map(ord, orig * 50)))
|
|
|
|
self.assertEqual(a, orig * 50)
|
|
|
|
self.assertEqual(a[-5:], orig)
|
|
|
|
a = bytearray(b'')
|
|
|
|
self.assertRaises(ValueError, a.extend, [0, 1, 2, 256])
|
|
|
|
self.assertRaises(ValueError, a.extend, [0, 1, 2, -1])
|
|
|
|
self.assertEqual(len(a), 0)
|
2008-07-16 19:57:41 -03:00
|
|
|
a = bytearray(b'')
|
|
|
|
a.extend([Indexable(ord('a'))])
|
|
|
|
self.assertEqual(a, b'a')
|
Merged revisions 61750,61752,61754,61756,61760,61763,61768,61772,61775,61805,61809,61812,61819,61917,61920,61930,61933-61934 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/branches/trunk-bytearray
........
r61750 | christian.heimes | 2008-03-22 20:47:44 +0100 (Sat, 22 Mar 2008) | 1 line
Copied files from py3k w/o modifications
........
r61752 | christian.heimes | 2008-03-22 20:53:20 +0100 (Sat, 22 Mar 2008) | 7 lines
Take One
* Added initialization code, warnings, flags etc. to the appropriate places
* Added new buffer interface to string type
* Modified tests
* Modified Makefile.pre.in to compile the new files
* Added bytesobject.c to Python.h
........
r61754 | christian.heimes | 2008-03-22 21:22:19 +0100 (Sat, 22 Mar 2008) | 2 lines
Disabled bytearray.extend for now since it causes an infinite recursion
Fixed serveral unit tests
........
r61756 | christian.heimes | 2008-03-22 21:43:38 +0100 (Sat, 22 Mar 2008) | 5 lines
Added PyBytes support to several places:
str + bytearray
ord(bytearray)
bytearray(str, encoding)
........
r61760 | christian.heimes | 2008-03-22 21:56:32 +0100 (Sat, 22 Mar 2008) | 1 line
Fixed more unit tests related to type('') is not unicode
........
r61763 | christian.heimes | 2008-03-22 22:20:28 +0100 (Sat, 22 Mar 2008) | 2 lines
Fixed more unit tests
Fixed bytearray.extend
........
r61768 | christian.heimes | 2008-03-22 22:40:50 +0100 (Sat, 22 Mar 2008) | 1 line
Implemented old buffer interface for bytearray
........
r61772 | christian.heimes | 2008-03-22 23:24:52 +0100 (Sat, 22 Mar 2008) | 1 line
Added backport of the io module
........
r61775 | christian.heimes | 2008-03-23 03:50:49 +0100 (Sun, 23 Mar 2008) | 1 line
Fix str assignement to bytearray. Assignment of a str of size 1 is interpreted as a single byte
........
r61805 | christian.heimes | 2008-03-23 19:33:48 +0100 (Sun, 23 Mar 2008) | 3 lines
Fixed more tests
Fixed bytearray() comparsion with unicode()
Fixed iterator assignment of bytearray
........
r61809 | christian.heimes | 2008-03-23 21:02:21 +0100 (Sun, 23 Mar 2008) | 2 lines
str(bytesarray()) now returns the bytes and not the representation of the bytearray object
Enabled and fixed more unit tests
........
r61812 | christian.heimes | 2008-03-23 21:53:08 +0100 (Sun, 23 Mar 2008) | 3 lines
Clear error PyNumber_AsSsize_t() fails
Use CHARMASK for ob_svall access
disabled a test with memoryview again
........
r61819 | christian.heimes | 2008-03-23 23:05:57 +0100 (Sun, 23 Mar 2008) | 1 line
Untested updates to the PCBuild directory
........
r61917 | christian.heimes | 2008-03-26 00:57:06 +0100 (Wed, 26 Mar 2008) | 1 line
The type system of Python 2.6 has subtle differences to 3.0's. I've removed the Py_TPFLAGS_BASETYPE flags from bytearray for now. bytearray can't be subclasses until the issues with bytearray subclasses are fixed.
........
r61920 | christian.heimes | 2008-03-26 01:44:08 +0100 (Wed, 26 Mar 2008) | 2 lines
Disabled last failing test
I don't understand what the test is testing and how it suppose to work. Ka-Ping, please check it out.
........
r61930 | christian.heimes | 2008-03-26 12:46:18 +0100 (Wed, 26 Mar 2008) | 1 line
Re-enabled bytes warning code
........
r61933 | christian.heimes | 2008-03-26 13:20:46 +0100 (Wed, 26 Mar 2008) | 1 line
Fixed a bug in the new buffer protocol. The buffer slots weren't copied into a subclass.
........
r61934 | christian.heimes | 2008-03-26 13:25:09 +0100 (Wed, 26 Mar 2008) | 1 line
Re-enabled bytearray subclassing - all tests are passing.
........
2008-03-26 09:49:49 -03:00
|
|
|
|
|
|
|
def test_remove(self):
|
|
|
|
b = bytearray(b'hello')
|
|
|
|
b.remove(ord('l'))
|
|
|
|
self.assertEqual(b, b'helo')
|
|
|
|
b.remove(ord('l'))
|
|
|
|
self.assertEqual(b, b'heo')
|
|
|
|
self.assertRaises(ValueError, lambda: b.remove(ord('l')))
|
|
|
|
self.assertRaises(ValueError, lambda: b.remove(400))
|
|
|
|
self.assertRaises(TypeError, lambda: b.remove(u'e'))
|
|
|
|
# remove first and last
|
|
|
|
b.remove(ord('o'))
|
|
|
|
b.remove(ord('h'))
|
|
|
|
self.assertEqual(b, b'e')
|
|
|
|
self.assertRaises(TypeError, lambda: b.remove(u'e'))
|
2008-07-16 19:57:41 -03:00
|
|
|
b.remove(Indexable(ord('e')))
|
|
|
|
self.assertEqual(b, b'')
|
Merged revisions 61750,61752,61754,61756,61760,61763,61768,61772,61775,61805,61809,61812,61819,61917,61920,61930,61933-61934 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/branches/trunk-bytearray
........
r61750 | christian.heimes | 2008-03-22 20:47:44 +0100 (Sat, 22 Mar 2008) | 1 line
Copied files from py3k w/o modifications
........
r61752 | christian.heimes | 2008-03-22 20:53:20 +0100 (Sat, 22 Mar 2008) | 7 lines
Take One
* Added initialization code, warnings, flags etc. to the appropriate places
* Added new buffer interface to string type
* Modified tests
* Modified Makefile.pre.in to compile the new files
* Added bytesobject.c to Python.h
........
r61754 | christian.heimes | 2008-03-22 21:22:19 +0100 (Sat, 22 Mar 2008) | 2 lines
Disabled bytearray.extend for now since it causes an infinite recursion
Fixed serveral unit tests
........
r61756 | christian.heimes | 2008-03-22 21:43:38 +0100 (Sat, 22 Mar 2008) | 5 lines
Added PyBytes support to several places:
str + bytearray
ord(bytearray)
bytearray(str, encoding)
........
r61760 | christian.heimes | 2008-03-22 21:56:32 +0100 (Sat, 22 Mar 2008) | 1 line
Fixed more unit tests related to type('') is not unicode
........
r61763 | christian.heimes | 2008-03-22 22:20:28 +0100 (Sat, 22 Mar 2008) | 2 lines
Fixed more unit tests
Fixed bytearray.extend
........
r61768 | christian.heimes | 2008-03-22 22:40:50 +0100 (Sat, 22 Mar 2008) | 1 line
Implemented old buffer interface for bytearray
........
r61772 | christian.heimes | 2008-03-22 23:24:52 +0100 (Sat, 22 Mar 2008) | 1 line
Added backport of the io module
........
r61775 | christian.heimes | 2008-03-23 03:50:49 +0100 (Sun, 23 Mar 2008) | 1 line
Fix str assignement to bytearray. Assignment of a str of size 1 is interpreted as a single byte
........
r61805 | christian.heimes | 2008-03-23 19:33:48 +0100 (Sun, 23 Mar 2008) | 3 lines
Fixed more tests
Fixed bytearray() comparsion with unicode()
Fixed iterator assignment of bytearray
........
r61809 | christian.heimes | 2008-03-23 21:02:21 +0100 (Sun, 23 Mar 2008) | 2 lines
str(bytesarray()) now returns the bytes and not the representation of the bytearray object
Enabled and fixed more unit tests
........
r61812 | christian.heimes | 2008-03-23 21:53:08 +0100 (Sun, 23 Mar 2008) | 3 lines
Clear error PyNumber_AsSsize_t() fails
Use CHARMASK for ob_svall access
disabled a test with memoryview again
........
r61819 | christian.heimes | 2008-03-23 23:05:57 +0100 (Sun, 23 Mar 2008) | 1 line
Untested updates to the PCBuild directory
........
r61917 | christian.heimes | 2008-03-26 00:57:06 +0100 (Wed, 26 Mar 2008) | 1 line
The type system of Python 2.6 has subtle differences to 3.0's. I've removed the Py_TPFLAGS_BASETYPE flags from bytearray for now. bytearray can't be subclasses until the issues with bytearray subclasses are fixed.
........
r61920 | christian.heimes | 2008-03-26 01:44:08 +0100 (Wed, 26 Mar 2008) | 2 lines
Disabled last failing test
I don't understand what the test is testing and how it suppose to work. Ka-Ping, please check it out.
........
r61930 | christian.heimes | 2008-03-26 12:46:18 +0100 (Wed, 26 Mar 2008) | 1 line
Re-enabled bytes warning code
........
r61933 | christian.heimes | 2008-03-26 13:20:46 +0100 (Wed, 26 Mar 2008) | 1 line
Fixed a bug in the new buffer protocol. The buffer slots weren't copied into a subclass.
........
r61934 | christian.heimes | 2008-03-26 13:25:09 +0100 (Wed, 26 Mar 2008) | 1 line
Re-enabled bytearray subclassing - all tests are passing.
........
2008-03-26 09:49:49 -03:00
|
|
|
|
|
|
|
def test_pop(self):
|
|
|
|
b = bytearray(b'world')
|
|
|
|
self.assertEqual(b.pop(), ord('d'))
|
|
|
|
self.assertEqual(b.pop(0), ord('w'))
|
|
|
|
self.assertEqual(b.pop(-2), ord('r'))
|
|
|
|
self.assertRaises(IndexError, lambda: b.pop(10))
|
|
|
|
self.assertRaises(OverflowError, lambda: bytearray().pop())
|
|
|
|
|
|
|
|
def test_nosort(self):
|
|
|
|
self.assertRaises(AttributeError, lambda: bytearray().sort())
|
|
|
|
|
|
|
|
def test_append(self):
|
|
|
|
b = bytearray(b'hell')
|
|
|
|
b.append(ord('o'))
|
|
|
|
self.assertEqual(b, b'hello')
|
|
|
|
self.assertEqual(b.append(100), None)
|
|
|
|
b = bytearray()
|
|
|
|
b.append(ord('A'))
|
|
|
|
self.assertEqual(len(b), 1)
|
|
|
|
self.assertRaises(TypeError, lambda: b.append(u'o'))
|
2008-07-16 19:57:41 -03:00
|
|
|
b = bytearray()
|
|
|
|
b.append(Indexable(ord('A')))
|
|
|
|
self.assertEqual(b, b'A')
|
Merged revisions 61750,61752,61754,61756,61760,61763,61768,61772,61775,61805,61809,61812,61819,61917,61920,61930,61933-61934 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/branches/trunk-bytearray
........
r61750 | christian.heimes | 2008-03-22 20:47:44 +0100 (Sat, 22 Mar 2008) | 1 line
Copied files from py3k w/o modifications
........
r61752 | christian.heimes | 2008-03-22 20:53:20 +0100 (Sat, 22 Mar 2008) | 7 lines
Take One
* Added initialization code, warnings, flags etc. to the appropriate places
* Added new buffer interface to string type
* Modified tests
* Modified Makefile.pre.in to compile the new files
* Added bytesobject.c to Python.h
........
r61754 | christian.heimes | 2008-03-22 21:22:19 +0100 (Sat, 22 Mar 2008) | 2 lines
Disabled bytearray.extend for now since it causes an infinite recursion
Fixed serveral unit tests
........
r61756 | christian.heimes | 2008-03-22 21:43:38 +0100 (Sat, 22 Mar 2008) | 5 lines
Added PyBytes support to several places:
str + bytearray
ord(bytearray)
bytearray(str, encoding)
........
r61760 | christian.heimes | 2008-03-22 21:56:32 +0100 (Sat, 22 Mar 2008) | 1 line
Fixed more unit tests related to type('') is not unicode
........
r61763 | christian.heimes | 2008-03-22 22:20:28 +0100 (Sat, 22 Mar 2008) | 2 lines
Fixed more unit tests
Fixed bytearray.extend
........
r61768 | christian.heimes | 2008-03-22 22:40:50 +0100 (Sat, 22 Mar 2008) | 1 line
Implemented old buffer interface for bytearray
........
r61772 | christian.heimes | 2008-03-22 23:24:52 +0100 (Sat, 22 Mar 2008) | 1 line
Added backport of the io module
........
r61775 | christian.heimes | 2008-03-23 03:50:49 +0100 (Sun, 23 Mar 2008) | 1 line
Fix str assignement to bytearray. Assignment of a str of size 1 is interpreted as a single byte
........
r61805 | christian.heimes | 2008-03-23 19:33:48 +0100 (Sun, 23 Mar 2008) | 3 lines
Fixed more tests
Fixed bytearray() comparsion with unicode()
Fixed iterator assignment of bytearray
........
r61809 | christian.heimes | 2008-03-23 21:02:21 +0100 (Sun, 23 Mar 2008) | 2 lines
str(bytesarray()) now returns the bytes and not the representation of the bytearray object
Enabled and fixed more unit tests
........
r61812 | christian.heimes | 2008-03-23 21:53:08 +0100 (Sun, 23 Mar 2008) | 3 lines
Clear error PyNumber_AsSsize_t() fails
Use CHARMASK for ob_svall access
disabled a test with memoryview again
........
r61819 | christian.heimes | 2008-03-23 23:05:57 +0100 (Sun, 23 Mar 2008) | 1 line
Untested updates to the PCBuild directory
........
r61917 | christian.heimes | 2008-03-26 00:57:06 +0100 (Wed, 26 Mar 2008) | 1 line
The type system of Python 2.6 has subtle differences to 3.0's. I've removed the Py_TPFLAGS_BASETYPE flags from bytearray for now. bytearray can't be subclasses until the issues with bytearray subclasses are fixed.
........
r61920 | christian.heimes | 2008-03-26 01:44:08 +0100 (Wed, 26 Mar 2008) | 2 lines
Disabled last failing test
I don't understand what the test is testing and how it suppose to work. Ka-Ping, please check it out.
........
r61930 | christian.heimes | 2008-03-26 12:46:18 +0100 (Wed, 26 Mar 2008) | 1 line
Re-enabled bytes warning code
........
r61933 | christian.heimes | 2008-03-26 13:20:46 +0100 (Wed, 26 Mar 2008) | 1 line
Fixed a bug in the new buffer protocol. The buffer slots weren't copied into a subclass.
........
r61934 | christian.heimes | 2008-03-26 13:25:09 +0100 (Wed, 26 Mar 2008) | 1 line
Re-enabled bytearray subclassing - all tests are passing.
........
2008-03-26 09:49:49 -03:00
|
|
|
|
|
|
|
def test_insert(self):
|
|
|
|
b = bytearray(b'msssspp')
|
|
|
|
b.insert(1, ord('i'))
|
|
|
|
b.insert(4, ord('i'))
|
|
|
|
b.insert(-2, ord('i'))
|
|
|
|
b.insert(1000, ord('i'))
|
|
|
|
self.assertEqual(b, b'mississippi')
|
2008-07-16 19:57:41 -03:00
|
|
|
# allowed in 2.6
|
|
|
|
#self.assertRaises(TypeError, lambda: b.insert(0, b'1'))
|
|
|
|
b = bytearray()
|
|
|
|
b.insert(0, Indexable(ord('A')))
|
|
|
|
self.assertEqual(b, b'A')
|
Merged revisions 61750,61752,61754,61756,61760,61763,61768,61772,61775,61805,61809,61812,61819,61917,61920,61930,61933-61934 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/branches/trunk-bytearray
........
r61750 | christian.heimes | 2008-03-22 20:47:44 +0100 (Sat, 22 Mar 2008) | 1 line
Copied files from py3k w/o modifications
........
r61752 | christian.heimes | 2008-03-22 20:53:20 +0100 (Sat, 22 Mar 2008) | 7 lines
Take One
* Added initialization code, warnings, flags etc. to the appropriate places
* Added new buffer interface to string type
* Modified tests
* Modified Makefile.pre.in to compile the new files
* Added bytesobject.c to Python.h
........
r61754 | christian.heimes | 2008-03-22 21:22:19 +0100 (Sat, 22 Mar 2008) | 2 lines
Disabled bytearray.extend for now since it causes an infinite recursion
Fixed serveral unit tests
........
r61756 | christian.heimes | 2008-03-22 21:43:38 +0100 (Sat, 22 Mar 2008) | 5 lines
Added PyBytes support to several places:
str + bytearray
ord(bytearray)
bytearray(str, encoding)
........
r61760 | christian.heimes | 2008-03-22 21:56:32 +0100 (Sat, 22 Mar 2008) | 1 line
Fixed more unit tests related to type('') is not unicode
........
r61763 | christian.heimes | 2008-03-22 22:20:28 +0100 (Sat, 22 Mar 2008) | 2 lines
Fixed more unit tests
Fixed bytearray.extend
........
r61768 | christian.heimes | 2008-03-22 22:40:50 +0100 (Sat, 22 Mar 2008) | 1 line
Implemented old buffer interface for bytearray
........
r61772 | christian.heimes | 2008-03-22 23:24:52 +0100 (Sat, 22 Mar 2008) | 1 line
Added backport of the io module
........
r61775 | christian.heimes | 2008-03-23 03:50:49 +0100 (Sun, 23 Mar 2008) | 1 line
Fix str assignement to bytearray. Assignment of a str of size 1 is interpreted as a single byte
........
r61805 | christian.heimes | 2008-03-23 19:33:48 +0100 (Sun, 23 Mar 2008) | 3 lines
Fixed more tests
Fixed bytearray() comparsion with unicode()
Fixed iterator assignment of bytearray
........
r61809 | christian.heimes | 2008-03-23 21:02:21 +0100 (Sun, 23 Mar 2008) | 2 lines
str(bytesarray()) now returns the bytes and not the representation of the bytearray object
Enabled and fixed more unit tests
........
r61812 | christian.heimes | 2008-03-23 21:53:08 +0100 (Sun, 23 Mar 2008) | 3 lines
Clear error PyNumber_AsSsize_t() fails
Use CHARMASK for ob_svall access
disabled a test with memoryview again
........
r61819 | christian.heimes | 2008-03-23 23:05:57 +0100 (Sun, 23 Mar 2008) | 1 line
Untested updates to the PCBuild directory
........
r61917 | christian.heimes | 2008-03-26 00:57:06 +0100 (Wed, 26 Mar 2008) | 1 line
The type system of Python 2.6 has subtle differences to 3.0's. I've removed the Py_TPFLAGS_BASETYPE flags from bytearray for now. bytearray can't be subclasses until the issues with bytearray subclasses are fixed.
........
r61920 | christian.heimes | 2008-03-26 01:44:08 +0100 (Wed, 26 Mar 2008) | 2 lines
Disabled last failing test
I don't understand what the test is testing and how it suppose to work. Ka-Ping, please check it out.
........
r61930 | christian.heimes | 2008-03-26 12:46:18 +0100 (Wed, 26 Mar 2008) | 1 line
Re-enabled bytes warning code
........
r61933 | christian.heimes | 2008-03-26 13:20:46 +0100 (Wed, 26 Mar 2008) | 1 line
Fixed a bug in the new buffer protocol. The buffer slots weren't copied into a subclass.
........
r61934 | christian.heimes | 2008-03-26 13:25:09 +0100 (Wed, 26 Mar 2008) | 1 line
Re-enabled bytearray subclassing - all tests are passing.
........
2008-03-26 09:49:49 -03:00
|
|
|
|
2008-11-19 18:05:53 -04:00
|
|
|
def test_copied(self):
|
|
|
|
# Issue 4348. Make sure that operations that don't mutate the array
|
|
|
|
# copy the bytes.
|
|
|
|
b = bytearray(b'abc')
|
|
|
|
#self.assertFalse(b is b.replace(b'abc', b'cde', 0))
|
|
|
|
|
|
|
|
t = bytearray([i for i in range(256)])
|
|
|
|
x = bytearray(b'')
|
|
|
|
self.assertFalse(x is x.translate(t))
|
|
|
|
|
Merged revisions 61750,61752,61754,61756,61760,61763,61768,61772,61775,61805,61809,61812,61819,61917,61920,61930,61933-61934 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/branches/trunk-bytearray
........
r61750 | christian.heimes | 2008-03-22 20:47:44 +0100 (Sat, 22 Mar 2008) | 1 line
Copied files from py3k w/o modifications
........
r61752 | christian.heimes | 2008-03-22 20:53:20 +0100 (Sat, 22 Mar 2008) | 7 lines
Take One
* Added initialization code, warnings, flags etc. to the appropriate places
* Added new buffer interface to string type
* Modified tests
* Modified Makefile.pre.in to compile the new files
* Added bytesobject.c to Python.h
........
r61754 | christian.heimes | 2008-03-22 21:22:19 +0100 (Sat, 22 Mar 2008) | 2 lines
Disabled bytearray.extend for now since it causes an infinite recursion
Fixed serveral unit tests
........
r61756 | christian.heimes | 2008-03-22 21:43:38 +0100 (Sat, 22 Mar 2008) | 5 lines
Added PyBytes support to several places:
str + bytearray
ord(bytearray)
bytearray(str, encoding)
........
r61760 | christian.heimes | 2008-03-22 21:56:32 +0100 (Sat, 22 Mar 2008) | 1 line
Fixed more unit tests related to type('') is not unicode
........
r61763 | christian.heimes | 2008-03-22 22:20:28 +0100 (Sat, 22 Mar 2008) | 2 lines
Fixed more unit tests
Fixed bytearray.extend
........
r61768 | christian.heimes | 2008-03-22 22:40:50 +0100 (Sat, 22 Mar 2008) | 1 line
Implemented old buffer interface for bytearray
........
r61772 | christian.heimes | 2008-03-22 23:24:52 +0100 (Sat, 22 Mar 2008) | 1 line
Added backport of the io module
........
r61775 | christian.heimes | 2008-03-23 03:50:49 +0100 (Sun, 23 Mar 2008) | 1 line
Fix str assignement to bytearray. Assignment of a str of size 1 is interpreted as a single byte
........
r61805 | christian.heimes | 2008-03-23 19:33:48 +0100 (Sun, 23 Mar 2008) | 3 lines
Fixed more tests
Fixed bytearray() comparsion with unicode()
Fixed iterator assignment of bytearray
........
r61809 | christian.heimes | 2008-03-23 21:02:21 +0100 (Sun, 23 Mar 2008) | 2 lines
str(bytesarray()) now returns the bytes and not the representation of the bytearray object
Enabled and fixed more unit tests
........
r61812 | christian.heimes | 2008-03-23 21:53:08 +0100 (Sun, 23 Mar 2008) | 3 lines
Clear error PyNumber_AsSsize_t() fails
Use CHARMASK for ob_svall access
disabled a test with memoryview again
........
r61819 | christian.heimes | 2008-03-23 23:05:57 +0100 (Sun, 23 Mar 2008) | 1 line
Untested updates to the PCBuild directory
........
r61917 | christian.heimes | 2008-03-26 00:57:06 +0100 (Wed, 26 Mar 2008) | 1 line
The type system of Python 2.6 has subtle differences to 3.0's. I've removed the Py_TPFLAGS_BASETYPE flags from bytearray for now. bytearray can't be subclasses until the issues with bytearray subclasses are fixed.
........
r61920 | christian.heimes | 2008-03-26 01:44:08 +0100 (Wed, 26 Mar 2008) | 2 lines
Disabled last failing test
I don't understand what the test is testing and how it suppose to work. Ka-Ping, please check it out.
........
r61930 | christian.heimes | 2008-03-26 12:46:18 +0100 (Wed, 26 Mar 2008) | 1 line
Re-enabled bytes warning code
........
r61933 | christian.heimes | 2008-03-26 13:20:46 +0100 (Wed, 26 Mar 2008) | 1 line
Fixed a bug in the new buffer protocol. The buffer slots weren't copied into a subclass.
........
r61934 | christian.heimes | 2008-03-26 13:25:09 +0100 (Wed, 26 Mar 2008) | 1 line
Re-enabled bytearray subclassing - all tests are passing.
........
2008-03-26 09:49:49 -03:00
|
|
|
def test_partition_bytearray_doesnt_share_nullstring(self):
|
|
|
|
a, b, c = bytearray(b"x").partition(b"y")
|
|
|
|
self.assertEqual(b, b"")
|
|
|
|
self.assertEqual(c, b"")
|
|
|
|
self.assert_(b is not c)
|
|
|
|
b += b"!"
|
|
|
|
self.assertEqual(c, b"")
|
|
|
|
a, b, c = bytearray(b"x").partition(b"y")
|
|
|
|
self.assertEqual(b, b"")
|
|
|
|
self.assertEqual(c, b"")
|
|
|
|
# Same for rpartition
|
|
|
|
b, c, a = bytearray(b"x").rpartition(b"y")
|
|
|
|
self.assertEqual(b, b"")
|
|
|
|
self.assertEqual(c, b"")
|
|
|
|
self.assert_(b is not c)
|
|
|
|
b += b"!"
|
|
|
|
self.assertEqual(c, b"")
|
|
|
|
c, b, a = bytearray(b"x").rpartition(b"y")
|
|
|
|
self.assertEqual(b, b"")
|
|
|
|
self.assertEqual(c, b"")
|
|
|
|
|
|
|
|
|
|
|
|
class AssortedBytesTest(unittest.TestCase):
|
|
|
|
#
|
|
|
|
# Test various combinations of bytes and bytearray
|
|
|
|
#
|
|
|
|
|
|
|
|
def setUp(self):
|
|
|
|
self.warning_filters = warnings.filters[:]
|
|
|
|
|
|
|
|
def tearDown(self):
|
|
|
|
warnings.filters = self.warning_filters
|
|
|
|
|
|
|
|
def test_repr_str(self):
|
|
|
|
warnings.simplefilter('ignore', BytesWarning)
|
|
|
|
for f in str, repr:
|
|
|
|
self.assertEqual(f(bytearray()), "bytearray(b'')")
|
|
|
|
self.assertEqual(f(bytearray([0])), "bytearray(b'\\x00')")
|
|
|
|
self.assertEqual(f(bytearray([0, 1, 254, 255])),
|
|
|
|
"bytearray(b'\\x00\\x01\\xfe\\xff')")
|
|
|
|
self.assertEqual(f(b"abc"), "b'abc'")
|
|
|
|
self.assertEqual(f(b"'"), '''b"'"''') # '''
|
|
|
|
self.assertEqual(f(b"'\""), r"""b'\'"'""") # '
|
|
|
|
|
|
|
|
def test_compare_bytes_to_bytearray(self):
|
|
|
|
self.assertEqual(b"abc" == bytes(b"abc"), True)
|
|
|
|
self.assertEqual(b"ab" != bytes(b"abc"), True)
|
|
|
|
self.assertEqual(b"ab" <= bytes(b"abc"), True)
|
|
|
|
self.assertEqual(b"ab" < bytes(b"abc"), True)
|
|
|
|
self.assertEqual(b"abc" >= bytes(b"ab"), True)
|
|
|
|
self.assertEqual(b"abc" > bytes(b"ab"), True)
|
|
|
|
|
|
|
|
self.assertEqual(b"abc" != bytes(b"abc"), False)
|
|
|
|
self.assertEqual(b"ab" == bytes(b"abc"), False)
|
|
|
|
self.assertEqual(b"ab" > bytes(b"abc"), False)
|
|
|
|
self.assertEqual(b"ab" >= bytes(b"abc"), False)
|
|
|
|
self.assertEqual(b"abc" < bytes(b"ab"), False)
|
|
|
|
self.assertEqual(b"abc" <= bytes(b"ab"), False)
|
|
|
|
|
|
|
|
self.assertEqual(bytes(b"abc") == b"abc", True)
|
|
|
|
self.assertEqual(bytes(b"ab") != b"abc", True)
|
|
|
|
self.assertEqual(bytes(b"ab") <= b"abc", True)
|
|
|
|
self.assertEqual(bytes(b"ab") < b"abc", True)
|
|
|
|
self.assertEqual(bytes(b"abc") >= b"ab", True)
|
|
|
|
self.assertEqual(bytes(b"abc") > b"ab", True)
|
|
|
|
|
|
|
|
self.assertEqual(bytes(b"abc") != b"abc", False)
|
|
|
|
self.assertEqual(bytes(b"ab") == b"abc", False)
|
|
|
|
self.assertEqual(bytes(b"ab") > b"abc", False)
|
|
|
|
self.assertEqual(bytes(b"ab") >= b"abc", False)
|
|
|
|
self.assertEqual(bytes(b"abc") < b"ab", False)
|
|
|
|
self.assertEqual(bytes(b"abc") <= b"ab", False)
|
|
|
|
|
|
|
|
def test_doc(self):
|
|
|
|
self.failUnless(bytearray.__doc__ != None)
|
|
|
|
self.failUnless(bytearray.__doc__.startswith("bytearray("), bytearray.__doc__)
|
|
|
|
self.failUnless(bytes.__doc__ != None)
|
|
|
|
self.failUnless(bytes.__doc__.startswith("bytes("), bytes.__doc__)
|
|
|
|
|
|
|
|
def test_from_bytearray(self):
|
|
|
|
sample = bytes(b"Hello world\n\x80\x81\xfe\xff")
|
|
|
|
buf = memoryview(sample)
|
|
|
|
b = bytearray(buf)
|
|
|
|
self.assertEqual(b, bytearray(sample))
|
|
|
|
|
|
|
|
def test_to_str(self):
|
|
|
|
warnings.simplefilter('ignore', BytesWarning)
|
|
|
|
self.assertEqual(str(b''), "b''")
|
|
|
|
self.assertEqual(str(b'x'), "b'x'")
|
|
|
|
self.assertEqual(str(b'\x80'), "b'\\x80'")
|
|
|
|
self.assertEqual(str(bytearray(b'')), "bytearray(b'')")
|
|
|
|
self.assertEqual(str(bytearray(b'x')), "bytearray(b'x')")
|
|
|
|
self.assertEqual(str(bytearray(b'\x80')), "bytearray(b'\\x80')")
|
|
|
|
|
|
|
|
def test_literal(self):
|
|
|
|
tests = [
|
|
|
|
(b"Wonderful spam", "Wonderful spam"),
|
|
|
|
(br"Wonderful spam too", "Wonderful spam too"),
|
|
|
|
(b"\xaa\x00\000\200", "\xaa\x00\000\200"),
|
|
|
|
(br"\xaa\x00\000\200", r"\xaa\x00\000\200"),
|
|
|
|
]
|
|
|
|
for b, s in tests:
|
|
|
|
self.assertEqual(b, bytearray(s, 'latin-1'))
|
|
|
|
for c in range(128, 256):
|
|
|
|
self.assertRaises(SyntaxError, eval,
|
|
|
|
'b"%s"' % chr(c))
|
|
|
|
|
|
|
|
def test_translate(self):
|
|
|
|
b = b'hello'
|
|
|
|
rosetta = bytearray(range(0, 256))
|
|
|
|
rosetta[ord('o')] = ord('e')
|
|
|
|
c = b.translate(rosetta, b'l')
|
|
|
|
self.assertEqual(b, b'hello')
|
|
|
|
self.assertEqual(c, b'hee')
|
|
|
|
|
|
|
|
def test_split_bytearray(self):
|
|
|
|
self.assertEqual(b'a b'.split(memoryview(b' ')), [b'a', b'b'])
|
|
|
|
|
|
|
|
def test_rsplit_bytearray(self):
|
|
|
|
self.assertEqual(b'a b'.rsplit(memoryview(b' ')), [b'a', b'b'])
|
|
|
|
|
|
|
|
# Optimizations:
|
|
|
|
# __iter__? (optimization)
|
|
|
|
# __reversed__? (optimization)
|
|
|
|
|
|
|
|
# XXX More string methods? (Those that don't use character properties)
|
|
|
|
|
|
|
|
# There are tests in string_tests.py that are more
|
|
|
|
# comprehensive for things like split, partition, etc.
|
|
|
|
# Unfortunately they are all bundled with tests that
|
|
|
|
# are not appropriate for bytes
|
|
|
|
|
|
|
|
# I've started porting some of those into bytearray_tests.py, we should port
|
|
|
|
# the rest that make sense (the code can be cleaned up to use modern
|
|
|
|
# unittest methods at the same time).
|
|
|
|
|
|
|
|
class BytearrayPEP3137Test(unittest.TestCase,
|
|
|
|
test.buffer_tests.MixinBytesBufferCommonTests):
|
|
|
|
def marshal(self, x):
|
|
|
|
return bytearray(x)
|
|
|
|
|
|
|
|
def test_returns_new_copy(self):
|
|
|
|
val = self.marshal(b'1234')
|
|
|
|
# On immutable types these MAY return a reference to themselves
|
|
|
|
# but on mutable types like bytearray they MUST return a new copy.
|
|
|
|
for methname in ('zfill', 'rjust', 'ljust', 'center'):
|
|
|
|
method = getattr(val, methname)
|
|
|
|
newval = method(3)
|
|
|
|
self.assertEqual(val, newval)
|
|
|
|
self.assertTrue(val is not newval,
|
|
|
|
methname+' returned self on a mutable object')
|
|
|
|
|
|
|
|
|
|
|
|
class FixedStringTest(test.string_tests.BaseTest):
|
|
|
|
|
|
|
|
def fixtype(self, obj):
|
|
|
|
if isinstance(obj, str):
|
|
|
|
return obj.encode("utf-8")
|
|
|
|
return super(FixedStringTest, self).fixtype(obj)
|
|
|
|
|
|
|
|
# Currently the bytes containment testing uses a single integer
|
|
|
|
# value. This may not be the final design, but until then the
|
|
|
|
# bytes section with in a bytes containment not valid
|
|
|
|
def test_contains(self):
|
|
|
|
pass
|
|
|
|
def test_expandtabs(self):
|
|
|
|
pass
|
|
|
|
def test_upper(self):
|
|
|
|
pass
|
|
|
|
def test_lower(self):
|
|
|
|
pass
|
|
|
|
def test_hash(self):
|
|
|
|
# XXX check this out
|
|
|
|
pass
|
|
|
|
|
|
|
|
|
|
|
|
class ByteArrayAsStringTest(FixedStringTest):
|
|
|
|
type2test = bytearray
|
|
|
|
|
|
|
|
|
|
|
|
class ByteArraySubclass(bytearray):
|
|
|
|
pass
|
|
|
|
|
|
|
|
class ByteArraySubclassTest(unittest.TestCase):
|
|
|
|
|
|
|
|
def test_basic(self):
|
|
|
|
self.assert_(issubclass(ByteArraySubclass, bytearray))
|
|
|
|
self.assert_(isinstance(ByteArraySubclass(), bytearray))
|
|
|
|
|
|
|
|
a, b = b"abcd", b"efgh"
|
|
|
|
_a, _b = ByteArraySubclass(a), ByteArraySubclass(b)
|
|
|
|
|
|
|
|
# test comparison operators with subclass instances
|
|
|
|
self.assert_(_a == _a)
|
|
|
|
self.assert_(_a != _b)
|
|
|
|
self.assert_(_a < _b)
|
|
|
|
self.assert_(_a <= _b)
|
|
|
|
self.assert_(_b >= _a)
|
|
|
|
self.assert_(_b > _a)
|
|
|
|
self.assert_(_a is not a)
|
|
|
|
|
|
|
|
# test concat of subclass instances
|
|
|
|
self.assertEqual(a + b, _a + _b)
|
|
|
|
self.assertEqual(a + b, a + _b)
|
|
|
|
self.assertEqual(a + b, _a + b)
|
|
|
|
|
|
|
|
# test repeat
|
|
|
|
self.assert_(a*5 == _a*5)
|
|
|
|
|
|
|
|
def test_join(self):
|
|
|
|
# Make sure join returns a NEW object for single item sequences
|
|
|
|
# involving a subclass.
|
|
|
|
# Make sure that it is of the appropriate type.
|
|
|
|
s1 = ByteArraySubclass(b"abcd")
|
|
|
|
s2 = bytearray().join([s1])
|
|
|
|
self.assert_(s1 is not s2)
|
|
|
|
self.assert_(type(s2) is bytearray, type(s2))
|
|
|
|
|
|
|
|
# Test reverse, calling join on subclass
|
|
|
|
s3 = s1.join([b"abcd"])
|
|
|
|
self.assert_(type(s3) is bytearray)
|
|
|
|
|
|
|
|
def test_pickle(self):
|
|
|
|
a = ByteArraySubclass(b"abcd")
|
|
|
|
a.x = 10
|
|
|
|
a.y = ByteArraySubclass(b"efgh")
|
Merged revisions 66801,66803-66804,66813,66854-66856,66866,66870-66872,66874,66887,66903,66905,66911,66913,66927,66932,66938,66942,66962,66964,66973-66974,66977,66992,66998-66999,67002,67005,67007,67028,67040-67041,67044,67070,67089,67091,67101,67117-67119,67123-67124 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
................
r66801 | andrew.kuchling | 2008-10-04 23:51:59 +0200 (Sat, 04 Oct 2008) | 1 line
Punctuation fix; expand dict.update docstring to be clearer
................
r66803 | benjamin.peterson | 2008-10-05 00:15:31 +0200 (Sun, 05 Oct 2008) | 1 line
fix typo
................
r66804 | andrew.kuchling | 2008-10-05 02:11:56 +0200 (Sun, 05 Oct 2008) | 1 line
#1415508 from Rocky Bernstein: add docstrings for enable_interspersed_args(), disable_interspersed_args()
................
r66813 | andrew.kuchling | 2008-10-06 14:07:04 +0200 (Mon, 06 Oct 2008) | 3 lines
Per Greg Ward, optparse is no longer being externally maintained.
I'll look at the bugs in the Optik bug tracker and copy them to the Python bug
tracker if they're still relevant.
................
r66854 | georg.brandl | 2008-10-08 19:20:20 +0200 (Wed, 08 Oct 2008) | 2 lines
#4059: patch up some sqlite docs.
................
r66855 | georg.brandl | 2008-10-08 19:30:55 +0200 (Wed, 08 Oct 2008) | 2 lines
#4058: fix some whatsnew markup.
................
r66856 | georg.brandl | 2008-10-08 20:47:17 +0200 (Wed, 08 Oct 2008) | 3 lines
#3935: properly support list subclasses in the C impl. of bisect.
Patch reviewed by Raymond.
................
r66866 | benjamin.peterson | 2008-10-09 22:54:43 +0200 (Thu, 09 Oct 2008) | 1 line
update paragraph about __future__ for 2.6
................
r66870 | armin.rigo | 2008-10-10 10:40:44 +0200 (Fri, 10 Oct 2008) | 2 lines
Typo: "ThreadError" is the name in the C source.
................
r66871 | benjamin.peterson | 2008-10-10 22:38:49 +0200 (Fri, 10 Oct 2008) | 1 line
fix a small typo
................
r66872 | benjamin.peterson | 2008-10-10 22:51:37 +0200 (Fri, 10 Oct 2008) | 1 line
talk about how you can unzip with zip
................
r66874 | benjamin.peterson | 2008-10-11 00:23:41 +0200 (Sat, 11 Oct 2008) | 1 line
PyGILState_Acquire -> PyGILState_Ensure
................
r66887 | benjamin.peterson | 2008-10-13 23:51:40 +0200 (Mon, 13 Oct 2008) | 1 line
document how to disable fixers
................
r66903 | benjamin.peterson | 2008-10-15 22:34:09 +0200 (Wed, 15 Oct 2008) | 1 line
don't recurse into directories that start with '.'
................
r66905 | benjamin.peterson | 2008-10-15 23:05:55 +0200 (Wed, 15 Oct 2008) | 1 line
support the optional line argument for idle
................
r66911 | benjamin.peterson | 2008-10-16 01:10:28 +0200 (Thu, 16 Oct 2008) | 41 lines
Merged revisions 66805,66841,66860,66884-66886,66893,66907,66910 via svnmerge from
svn+ssh://pythondev@svn.python.org/sandbox/trunk/2to3/lib2to3
........
r66805 | benjamin.peterson | 2008-10-04 20:11:02 -0500 (Sat, 04 Oct 2008) | 1 line
mention what the fixes directory is for
........
r66841 | benjamin.peterson | 2008-10-07 17:48:12 -0500 (Tue, 07 Oct 2008) | 1 line
use assertFalse and assertTrue
........
r66860 | benjamin.peterson | 2008-10-08 16:05:07 -0500 (Wed, 08 Oct 2008) | 1 line
instead of abusing the pattern matcher, use start_tree to find a next binding
........
r66884 | benjamin.peterson | 2008-10-13 15:50:30 -0500 (Mon, 13 Oct 2008) | 1 line
don't print tokens to stdout when -v is given
........
r66885 | benjamin.peterson | 2008-10-13 16:28:57 -0500 (Mon, 13 Oct 2008) | 1 line
add the -x option to disable fixers
........
r66886 | benjamin.peterson | 2008-10-13 16:33:53 -0500 (Mon, 13 Oct 2008) | 1 line
cut down on some crud
........
r66893 | benjamin.peterson | 2008-10-14 17:16:54 -0500 (Tue, 14 Oct 2008) | 1 line
add an optional set literal fixer
........
r66907 | benjamin.peterson | 2008-10-15 16:59:41 -0500 (Wed, 15 Oct 2008) | 1 line
don't write backup files by default
........
r66910 | benjamin.peterson | 2008-10-15 17:43:10 -0500 (Wed, 15 Oct 2008) | 1 line
add the -n option; it stops backupfiles from being written
........
................
r66913 | benjamin.peterson | 2008-10-16 20:52:14 +0200 (Thu, 16 Oct 2008) | 1 line
document that deque indexing is O(n) #4123
................
r66927 | andrew.kuchling | 2008-10-16 22:15:47 +0200 (Thu, 16 Oct 2008) | 1 line
Fix wording (2.6.1 backport candidate)
................
r66932 | benjamin.peterson | 2008-10-16 23:09:28 +0200 (Thu, 16 Oct 2008) | 1 line
check for error conditions in _json #3623
................
r66938 | benjamin.peterson | 2008-10-16 23:27:54 +0200 (Thu, 16 Oct 2008) | 1 line
fix possible ref leak
................
r66942 | benjamin.peterson | 2008-10-16 23:48:06 +0200 (Thu, 16 Oct 2008) | 1 line
fix more possible ref leaks in _json and use Py_CLEAR
................
r66962 | benjamin.peterson | 2008-10-17 22:01:01 +0200 (Fri, 17 Oct 2008) | 1 line
clarify CALL_FUNCTION #4141
................
r66964 | georg.brandl | 2008-10-17 23:41:49 +0200 (Fri, 17 Oct 2008) | 2 lines
Fix duplicate word.
................
r66973 | armin.ronacher | 2008-10-19 10:27:43 +0200 (Sun, 19 Oct 2008) | 3 lines
Fixed #4067 by implementing _attributes and _fields for the AST root node.
................
r66974 | benjamin.peterson | 2008-10-19 15:59:01 +0200 (Sun, 19 Oct 2008) | 1 line
fix compiler warning
................
r66977 | benjamin.peterson | 2008-10-19 21:39:16 +0200 (Sun, 19 Oct 2008) | 1 line
mention -n
................
r66992 | benjamin.peterson | 2008-10-21 22:51:13 +0200 (Tue, 21 Oct 2008) | 1 line
make sure to call iteritems()
................
r66998 | benjamin.peterson | 2008-10-22 22:57:43 +0200 (Wed, 22 Oct 2008) | 1 line
fix a few typos
................
r66999 | benjamin.peterson | 2008-10-22 23:05:30 +0200 (Wed, 22 Oct 2008) | 1 line
and another typo...
................
r67002 | hirokazu.yamamoto | 2008-10-23 02:37:33 +0200 (Thu, 23 Oct 2008) | 1 line
Issue #4183: Some tests didn't run with pickle.HIGHEST_PROTOCOL.
................
r67005 | walter.doerwald | 2008-10-23 15:11:39 +0200 (Thu, 23 Oct 2008) | 2 lines
Use the correct names of the stateless codec functions (Fixes issue 4178).
................
r67007 | benjamin.peterson | 2008-10-23 23:43:48 +0200 (Thu, 23 Oct 2008) | 1 line
only nonempty __slots__ don't work
................
r67028 | benjamin.peterson | 2008-10-26 01:27:07 +0200 (Sun, 26 Oct 2008) | 1 line
don't use a catch-all
................
r67040 | armin.rigo | 2008-10-28 18:01:21 +0100 (Tue, 28 Oct 2008) | 5 lines
Fix one of the tests: it relied on being present in an "output test" in
order to actually test what it was supposed to test, i.e. that the code
in the __del__ method did not crash. Use instead the new helper
test_support.captured_output().
................
r67041 | benjamin.peterson | 2008-10-29 21:33:00 +0100 (Wed, 29 Oct 2008) | 1 line
mention the version gettempdir() was added
................
r67044 | amaury.forgeotdarc | 2008-10-30 00:15:57 +0100 (Thu, 30 Oct 2008) | 3 lines
Correct error message in io.open():
closefd=True is the only accepted value with a file name.
................
r67070 | benjamin.peterson | 2008-10-31 21:41:44 +0100 (Fri, 31 Oct 2008) | 1 line
rephrase has_key doc
................
r67089 | benjamin.peterson | 2008-11-03 21:43:20 +0100 (Mon, 03 Nov 2008) | 1 line
clarify by splitting into multiple paragraphs
................
r67091 | benjamin.peterson | 2008-11-03 23:34:57 +0100 (Mon, 03 Nov 2008) | 1 line
move a FileIO test to test_fileio
................
r67101 | georg.brandl | 2008-11-04 21:49:35 +0100 (Tue, 04 Nov 2008) | 2 lines
#4167: fix markup glitches.
................
r67117 | georg.brandl | 2008-11-06 11:17:58 +0100 (Thu, 06 Nov 2008) | 2 lines
#4268: Use correct module for two toplevel functions.
................
r67118 | georg.brandl | 2008-11-06 11:19:11 +0100 (Thu, 06 Nov 2008) | 2 lines
#4267: small fixes in sqlite3 docs.
................
r67119 | georg.brandl | 2008-11-06 11:20:49 +0100 (Thu, 06 Nov 2008) | 2 lines
#4245: move Thread section to the top.
................
r67123 | georg.brandl | 2008-11-06 19:49:15 +0100 (Thu, 06 Nov 2008) | 2 lines
#4247: add "pass" examples to tutorial.
................
r67124 | andrew.kuchling | 2008-11-06 20:23:02 +0100 (Thu, 06 Nov 2008) | 1 line
Fix grammar error; reword two paragraphs
................
2008-11-07 04:56:27 -04:00
|
|
|
for proto in range(pickle.HIGHEST_PROTOCOL + 1):
|
Merged revisions 61750,61752,61754,61756,61760,61763,61768,61772,61775,61805,61809,61812,61819,61917,61920,61930,61933-61934 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/branches/trunk-bytearray
........
r61750 | christian.heimes | 2008-03-22 20:47:44 +0100 (Sat, 22 Mar 2008) | 1 line
Copied files from py3k w/o modifications
........
r61752 | christian.heimes | 2008-03-22 20:53:20 +0100 (Sat, 22 Mar 2008) | 7 lines
Take One
* Added initialization code, warnings, flags etc. to the appropriate places
* Added new buffer interface to string type
* Modified tests
* Modified Makefile.pre.in to compile the new files
* Added bytesobject.c to Python.h
........
r61754 | christian.heimes | 2008-03-22 21:22:19 +0100 (Sat, 22 Mar 2008) | 2 lines
Disabled bytearray.extend for now since it causes an infinite recursion
Fixed serveral unit tests
........
r61756 | christian.heimes | 2008-03-22 21:43:38 +0100 (Sat, 22 Mar 2008) | 5 lines
Added PyBytes support to several places:
str + bytearray
ord(bytearray)
bytearray(str, encoding)
........
r61760 | christian.heimes | 2008-03-22 21:56:32 +0100 (Sat, 22 Mar 2008) | 1 line
Fixed more unit tests related to type('') is not unicode
........
r61763 | christian.heimes | 2008-03-22 22:20:28 +0100 (Sat, 22 Mar 2008) | 2 lines
Fixed more unit tests
Fixed bytearray.extend
........
r61768 | christian.heimes | 2008-03-22 22:40:50 +0100 (Sat, 22 Mar 2008) | 1 line
Implemented old buffer interface for bytearray
........
r61772 | christian.heimes | 2008-03-22 23:24:52 +0100 (Sat, 22 Mar 2008) | 1 line
Added backport of the io module
........
r61775 | christian.heimes | 2008-03-23 03:50:49 +0100 (Sun, 23 Mar 2008) | 1 line
Fix str assignement to bytearray. Assignment of a str of size 1 is interpreted as a single byte
........
r61805 | christian.heimes | 2008-03-23 19:33:48 +0100 (Sun, 23 Mar 2008) | 3 lines
Fixed more tests
Fixed bytearray() comparsion with unicode()
Fixed iterator assignment of bytearray
........
r61809 | christian.heimes | 2008-03-23 21:02:21 +0100 (Sun, 23 Mar 2008) | 2 lines
str(bytesarray()) now returns the bytes and not the representation of the bytearray object
Enabled and fixed more unit tests
........
r61812 | christian.heimes | 2008-03-23 21:53:08 +0100 (Sun, 23 Mar 2008) | 3 lines
Clear error PyNumber_AsSsize_t() fails
Use CHARMASK for ob_svall access
disabled a test with memoryview again
........
r61819 | christian.heimes | 2008-03-23 23:05:57 +0100 (Sun, 23 Mar 2008) | 1 line
Untested updates to the PCBuild directory
........
r61917 | christian.heimes | 2008-03-26 00:57:06 +0100 (Wed, 26 Mar 2008) | 1 line
The type system of Python 2.6 has subtle differences to 3.0's. I've removed the Py_TPFLAGS_BASETYPE flags from bytearray for now. bytearray can't be subclasses until the issues with bytearray subclasses are fixed.
........
r61920 | christian.heimes | 2008-03-26 01:44:08 +0100 (Wed, 26 Mar 2008) | 2 lines
Disabled last failing test
I don't understand what the test is testing and how it suppose to work. Ka-Ping, please check it out.
........
r61930 | christian.heimes | 2008-03-26 12:46:18 +0100 (Wed, 26 Mar 2008) | 1 line
Re-enabled bytes warning code
........
r61933 | christian.heimes | 2008-03-26 13:20:46 +0100 (Wed, 26 Mar 2008) | 1 line
Fixed a bug in the new buffer protocol. The buffer slots weren't copied into a subclass.
........
r61934 | christian.heimes | 2008-03-26 13:25:09 +0100 (Wed, 26 Mar 2008) | 1 line
Re-enabled bytearray subclassing - all tests are passing.
........
2008-03-26 09:49:49 -03:00
|
|
|
b = pickle.loads(pickle.dumps(a, proto))
|
|
|
|
self.assertNotEqual(id(a), id(b))
|
|
|
|
self.assertEqual(a, b)
|
|
|
|
self.assertEqual(a.x, b.x)
|
|
|
|
self.assertEqual(a.y, b.y)
|
|
|
|
self.assertEqual(type(a), type(b))
|
|
|
|
self.assertEqual(type(a.y), type(b.y))
|
|
|
|
|
|
|
|
def test_copy(self):
|
|
|
|
a = ByteArraySubclass(b"abcd")
|
|
|
|
a.x = 10
|
|
|
|
a.y = ByteArraySubclass(b"efgh")
|
|
|
|
for copy_method in (copy.copy, copy.deepcopy):
|
|
|
|
b = copy_method(a)
|
|
|
|
self.assertNotEqual(id(a), id(b))
|
|
|
|
self.assertEqual(a, b)
|
|
|
|
self.assertEqual(a.x, b.x)
|
|
|
|
self.assertEqual(a.y, b.y)
|
|
|
|
self.assertEqual(type(a), type(b))
|
|
|
|
self.assertEqual(type(a.y), type(b.y))
|
|
|
|
|
|
|
|
def test_init_override(self):
|
|
|
|
class subclass(bytearray):
|
|
|
|
def __init__(self, newarg=1, *args, **kwargs):
|
|
|
|
bytearray.__init__(self, *args, **kwargs)
|
|
|
|
x = subclass(4, source=b"abcd")
|
|
|
|
self.assertEqual(x, b"abcd")
|
|
|
|
x = subclass(newarg=4, source=b"abcd")
|
|
|
|
self.assertEqual(x, b"abcd")
|
|
|
|
|
|
|
|
def test_main():
|
|
|
|
#test.test_support.run_unittest(BytesTest)
|
|
|
|
#test.test_support.run_unittest(AssortedBytesTest)
|
|
|
|
#test.test_support.run_unittest(BytesAsStringTest)
|
|
|
|
test.test_support.run_unittest(
|
|
|
|
ByteArrayTest,
|
|
|
|
ByteArrayAsStringTest,
|
|
|
|
ByteArraySubclassTest,
|
|
|
|
BytearrayPEP3137Test)
|
|
|
|
|
|
|
|
if __name__ == "__main__":
|
|
|
|
test_main()
|