mirror of
https://github.com/panda3d/panda3d.git
synced 2026-05-05 06:00:43 -05:00
129 lines
3.4 KiB
Python
129 lines
3.4 KiB
Python
from panda3d.core import StringStream
|
|
|
|
import pytest
|
|
|
|
|
|
ISTREAM_DATA = b'abcdefghijklmnopqrstuvwxyz' * 500
|
|
|
|
@pytest.fixture
|
|
def istream():
|
|
return StringStream(ISTREAM_DATA)
|
|
|
|
|
|
def test_istream_readall(istream):
|
|
assert istream.readall() == ISTREAM_DATA
|
|
assert istream.readall() == b''
|
|
assert istream.readall() == b''
|
|
assert istream.tellg() == len(ISTREAM_DATA)
|
|
|
|
|
|
def test_istream_read(istream):
|
|
assert istream.read() == ISTREAM_DATA
|
|
assert istream.read() == b''
|
|
assert istream.read() == b''
|
|
assert istream.tellg() == len(ISTREAM_DATA)
|
|
|
|
|
|
def test_istream_read_size(istream):
|
|
assert istream.read(100) == ISTREAM_DATA[:100]
|
|
assert istream.read(5000) == ISTREAM_DATA[100:5100]
|
|
assert istream.read(5000) == ISTREAM_DATA[5100:10100]
|
|
assert istream.read(5000) == ISTREAM_DATA[10100:15100]
|
|
assert istream.read() == b''
|
|
assert istream.tellg() == len(ISTREAM_DATA)
|
|
|
|
|
|
def test_istream_read1(istream):
|
|
accumulated = b''
|
|
data = istream.read1()
|
|
while data:
|
|
accumulated += data
|
|
data = istream.read1()
|
|
|
|
assert accumulated == ISTREAM_DATA
|
|
assert istream.tellg() == len(ISTREAM_DATA)
|
|
|
|
|
|
def test_istream_read1_size(istream):
|
|
accumulated = b''
|
|
data = istream.read1(4000)
|
|
while data:
|
|
accumulated += data
|
|
data = istream.read1(4000)
|
|
|
|
assert accumulated == ISTREAM_DATA
|
|
assert istream.tellg() == len(ISTREAM_DATA)
|
|
|
|
|
|
def test_istream_readinto(istream):
|
|
ba = bytearray()
|
|
assert istream.readinto(ba) == 0
|
|
assert istream.tellg() == 0
|
|
|
|
ba = bytearray(10)
|
|
assert istream.readinto(ba) == 10
|
|
assert ba == ISTREAM_DATA[:10]
|
|
assert istream.tellg() == 10
|
|
|
|
ba = bytearray(len(ISTREAM_DATA))
|
|
assert istream.readinto(ba) == len(ISTREAM_DATA) - 10
|
|
assert ba[:len(ISTREAM_DATA)-10] == ISTREAM_DATA[10:]
|
|
assert istream.tellg() == len(ISTREAM_DATA)
|
|
|
|
|
|
def test_istream_readline():
|
|
# Empty stream
|
|
stream = StringStream(b'')
|
|
assert stream.readline() == b''
|
|
assert stream.readline() == b''
|
|
|
|
# Single line without newline
|
|
stream = StringStream(b'A')
|
|
assert stream.readline() == b'A'
|
|
assert stream.readline() == b''
|
|
|
|
# Single newline
|
|
stream = StringStream(b'\n')
|
|
assert stream.readline() == b'\n'
|
|
assert stream.readline() == b''
|
|
|
|
# Line with text followed by empty line
|
|
stream = StringStream(b'A\n\n')
|
|
assert stream.readline() == b'A\n'
|
|
assert stream.readline() == b'\n'
|
|
assert stream.readline() == b''
|
|
|
|
# Preserve null byte
|
|
stream = StringStream(b'\x00\x00')
|
|
assert stream.readline() == b'\x00\x00'
|
|
|
|
|
|
def test_istream_readlines():
|
|
istream = StringStream(b'a')
|
|
assert istream.readlines() == [b'a']
|
|
assert istream.readlines() == []
|
|
|
|
istream = StringStream(b'a\nb\nc\n')
|
|
assert istream.readlines() == [b'a\n', b'b\n', b'c\n']
|
|
|
|
istream = StringStream(b'\na\nb\nc')
|
|
assert istream.readlines() == [b'\n', b'a\n', b'b\n', b'c']
|
|
|
|
istream = StringStream(b'\n\n\n')
|
|
assert istream.readlines() == [b'\n', b'\n', b'\n']
|
|
|
|
|
|
def test_istream_iter():
|
|
istream = StringStream(b'a')
|
|
assert tuple(istream) == (b'a',)
|
|
assert tuple(istream) == ()
|
|
|
|
istream = StringStream(b'a\nb\nc\n')
|
|
assert tuple(istream) == (b'a\n', b'b\n', b'c\n')
|
|
|
|
istream = StringStream(b'\na\nb\nc')
|
|
assert tuple(istream) == (b'\n', b'a\n', b'b\n', b'c')
|
|
|
|
istream = StringStream(b'\n\n\n')
|
|
assert tuple(istream) == (b'\n', b'\n', b'\n')
|