"""Tests around :mod:`django_downloadview.io`.""" import unittest from django_downloadview import BytesIteratorIO, TextIteratorIO HELLO_TEXT = "Hello world!\né\n" HELLO_BYTES = b"Hello world!\n\xc3\xa9\n" def generate_hello_text(): """Generate u'Hello world!\n'.""" yield "Hello " yield "world!" yield "\n" yield "é" yield "\n" def generate_hello_bytes(): """Generate b'Hello world!\n'.""" yield b"Hello " yield b"world!" yield b"\n" yield b"\xc3\xa9" yield b"\n" class TextIteratorIOTestCase(unittest.TestCase): """Tests around :class:`~django_downloadview.io.TextIteratorIO`.""" def test_read_text(self): """TextIteratorIO obviously accepts text generator.""" file_obj = TextIteratorIO(generate_hello_text()) self.assertEqual(file_obj.read(), HELLO_TEXT) def test_read_bytes(self): """TextIteratorIO converts bytes as text.""" file_obj = TextIteratorIO(generate_hello_bytes()) self.assertEqual(file_obj.read(), HELLO_TEXT) class BytesIteratorIOTestCase(unittest.TestCase): """Tests around :class:`~django_downloadview.io.BytesIteratorIO`.""" def test_read_bytes(self): """BytesIteratorIO obviously accepts bytes generator.""" file_obj = BytesIteratorIO(generate_hello_bytes()) self.assertEqual(file_obj.read(), HELLO_BYTES) def test_read_text(self): """BytesIteratorIO converts text as bytes.""" file_obj = BytesIteratorIO(generate_hello_text()) self.assertEqual(file_obj.read(), HELLO_BYTES)