Patch #1303: Adapt str8 constructor to bytes (now buffer) one.

This commit is contained in:
Georg Brandl 2007-10-24 18:55:37 +00:00
parent 97f9d4f312
commit bd1c68c94f
15 changed files with 212 additions and 72 deletions

View file

@ -101,7 +101,7 @@ s = struct.pack('ii', 1, 2)
simple_err(struct.unpack, 'iii', s)
simple_err(struct.unpack, 'i', s)
c = str8('a')
c = str8(b'a')
b = 1
h = 255
i = 65535
@ -186,7 +186,7 @@ for fmt, arg, big, lil, asy in tests:
if isinstance(arg, str):
# Strings are returned as str8 since you can't know the encoding of
# the string when packed.
arg = str8(arg)
arg = str8(arg, 'latin1')
if rev != arg and not asy:
raise TestFailed("unpack(%r, %r) -> (%r,) # expected (%r,)" % (
fmt, res, rev, arg))
@ -428,14 +428,14 @@ for args in [("bB", 1),
def test_p_code():
for code, input, expected, expectedback in [
('p','abc', '\x00', str8('')),
('1p', 'abc', '\x00', str8('')),
('2p', 'abc', '\x01a', str8('a')),
('3p', 'abc', '\x02ab', str8('ab')),
('4p', 'abc', '\x03abc', str8('abc')),
('5p', 'abc', '\x03abc\x00', str8('abc')),
('6p', 'abc', '\x03abc\x00\x00', str8('abc')),
('1000p', 'x'*1000, '\xff' + 'x'*999, str8('x'*255))]:
('p','abc', '\x00', str8()),
('1p', 'abc', '\x00', str8()),
('2p', 'abc', '\x01a', str8(b'a')),
('3p', 'abc', '\x02ab', str8(b'ab')),
('4p', 'abc', '\x03abc', str8(b'abc')),
('5p', 'abc', '\x03abc\x00', str8(b'abc')),
('6p', 'abc', '\x03abc\x00\x00', str8(b'abc')),
('1000p', 'x'*1000, '\xff' + 'x'*999, str8(b'x'*255))]:
expected = bytes(expected, "latin-1")
got = struct.pack(code, input)
if got != expected:
@ -564,20 +564,24 @@ def test_unpack_from():
if verbose:
print("test_unpack_from using", cls.__name__)
data = cls(test_string)
vereq(s.unpack_from(data), (str8('abcd'),))
vereq(s.unpack_from(data, 2), (str8('cd01'),))
vereq(s.unpack_from(data, 4), (str8('0123'),))
if not isinstance(data, (str8, bytes)):
bytes_data = str8(data, 'latin1')
else:
bytes_data = data
vereq(s.unpack_from(data), (str8(b'abcd'),))
vereq(s.unpack_from(data, 2), (str8(b'cd01'),))
vereq(s.unpack_from(data, 4), (str8(b'0123'),))
for i in range(6):
vereq(s.unpack_from(data, i), (str8(data[i:i+4]),))
vereq(s.unpack_from(data, i), (bytes_data[i:i+4],))
for i in range(6, len(test_string) + 1):
simple_err(s.unpack_from, data, i)
for cls in (str, str8, bytes): # XXX + memoryview
data = cls(test_string)
vereq(struct.unpack_from(fmt, data), (str8('abcd'),))
vereq(struct.unpack_from(fmt, data, 2), (str8('cd01'),))
vereq(struct.unpack_from(fmt, data, 4), (str8('0123'),))
vereq(struct.unpack_from(fmt, data), (str8(b'abcd'),))
vereq(struct.unpack_from(fmt, data, 2), (str8(b'cd01'),))
vereq(struct.unpack_from(fmt, data, 4), (str8(b'0123'),))
for i in range(6):
vereq(struct.unpack_from(fmt, data, i), (str8(data[i:i+4]),))
vereq(struct.unpack_from(fmt, data, i), (bytes_data[i:i+4],))
for i in range(6, len(test_string) + 1):
simple_err(struct.unpack_from, fmt, data, i)