from helper import unittest, PillowTestCase, hopper
from test_imageqt import PillowQtTestCase

from PIL import ImageQt, Image


class TestFromQImage(PillowQtTestCase, PillowTestCase):

    files_to_test = [
        hopper(),
        Image.open('Tests/images/transparent.png'),
        Image.open('Tests/images/7x13.png'),
    ]

    def roundtrip(self, expected):
        # PIL -> Qt
        intermediate = expected.toqimage()
        # Qt -> PIL
        result = ImageQt.fromqimage(intermediate)

        if intermediate.hasAlphaChannel():
            self.assert_image_equal(result, expected.convert('RGBA'))
        else:
            self.assert_image_equal(result, expected.convert('RGB'))

    def test_sanity_1(self):
        for im in self.files_to_test:
            self.roundtrip(im.convert('1'))

    def test_sanity_rgb(self):
        for im in self.files_to_test:
            self.roundtrip(im.convert('RGB'))

    def test_sanity_rgba(self):
        for im in self.files_to_test:
            self.roundtrip(im.convert('RGBA'))

    def test_sanity_l(self):
        for im in self.files_to_test:
            self.roundtrip(im.convert('L'))

    def test_sanity_p(self):
        for im in self.files_to_test:
            self.roundtrip(im.convert('P'))


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