Learn more  » Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Bower components Debian packages RPM packages NuGet packages

squarecapadmin / Pillow   python

Repository URL to install this package:

/ Tests / test_file_container.py

from helper import unittest, PillowTestCase, hopper

from PIL import Image
from PIL import ContainerIO

TEST_FILE = "Tests/images/dummy.container"


class TestFileContainer(PillowTestCase):

    def test_sanity(self):
        dir(Image)
        dir(ContainerIO)

    def test_isatty(self):
        im = hopper()
        container = ContainerIO.ContainerIO(im, 0, 0)

        self.assertEqual(container.isatty(), 0)

    def test_seek_mode_0(self):
        # Arrange
        mode = 0
        with open(TEST_FILE) as fh:
            container = ContainerIO.ContainerIO(fh, 22, 100)

            # Act
            container.seek(33, mode)
            container.seek(33, mode)

            # Assert
            self.assertEqual(container.tell(), 33)

    def test_seek_mode_1(self):
        # Arrange
        mode = 1
        with open(TEST_FILE) as fh:
            container = ContainerIO.ContainerIO(fh, 22, 100)

            # Act
            container.seek(33, mode)
            container.seek(33, mode)

            # Assert
            self.assertEqual(container.tell(), 66)

    def test_seek_mode_2(self):
        # Arrange
        mode = 2
        with open(TEST_FILE) as fh:
            container = ContainerIO.ContainerIO(fh, 22, 100)

            # Act
            container.seek(33, mode)
            container.seek(33, mode)

            # Assert
            self.assertEqual(container.tell(), 100)

    def test_read_n0(self):
        # Arrange
        with open(TEST_FILE) as fh:
            container = ContainerIO.ContainerIO(fh, 22, 100)

            # Act
            container.seek(81)
            data = container.read()

            # Assert
            self.assertEqual(data, "7\nThis is line 8\n")

    def test_read_n(self):
        # Arrange
        with open(TEST_FILE) as fh:
            container = ContainerIO.ContainerIO(fh, 22, 100)

            # Act
            container.seek(81)
            data = container.read(3)

            # Assert
            self.assertEqual(data, "7\nT")

    def test_read_eof(self):
        # Arrange
        with open(TEST_FILE) as fh:
            container = ContainerIO.ContainerIO(fh, 22, 100)

            # Act
            container.seek(100)
            data = container.read()

            # Assert
            self.assertEqual(data, "")

    def test_readline(self):
        # Arrange
        with open(TEST_FILE) as fh:
            container = ContainerIO.ContainerIO(fh, 0, 120)

            # Act
            data = container.readline()

            # Assert
            self.assertEqual(data, "This is line 1\n")

    def test_readlines(self):
        # Arrange
        expected = ["This is line 1\n",
                    "This is line 2\n",
                    "This is line 3\n",
                    "This is line 4\n",
                    "This is line 5\n",
                    "This is line 6\n",
                    "This is line 7\n",
                    "This is line 8\n"]
        with open(TEST_FILE) as fh:
            container = ContainerIO.ContainerIO(fh, 0, 120)

            # Act
            data = container.readlines()

            # Assert

            self.assertEqual(data, expected)


if __name__ == '__main__':
    unittest.main()