diff --git a/Tests/test_frombytes_image.py b/Tests/test_frombytes_image.py new file mode 100644 index 000000000..68fd1a465 --- /dev/null +++ b/Tests/test_frombytes_image.py @@ -0,0 +1,64 @@ +import unittest +from PIL import Image +import unittest + + +class TestFromBytes(unittest.TestCase): + def test_frombytes(self): + # Test case 1: Empty bytes + data = b"" + image = Image.frombytes("RGB", (0, 0), data) + self.assertEqual(image.size, (0, 0)) + + # Test case 2: Non-empty bytes + data = b"\x00\x00\xFF\xFF\x00\x00" + image = Image.frombytes("RGB", (2, 1), data) + self.assertEqual(image.size, (2, 1)) + self.assertEqual(image.getpixel((0, 0)), (0, 0, 255)) + self.assertEqual(image.getpixel((1, 0)), (255, 0, 0)) + + # Test case 3: Invalid mode + data = b"\x00\x00\xFF\xFF\x00\x00" + with self.assertRaises(ValueError): + Image.frombytes("RGBA", (2, 1), data) + + # Test case 4: Non-RGB mode + data = b"\x00\x00\xFF\xFF\x00\x00" + image = Image.frombytes("L", (2, 1), data) + self.assertEqual(image.size, (2, 1)) + self.assertEqual(image.getpixel((0, 0)), 0) + self.assertEqual(image.getpixel((1, 0)), 255) + + # Test case 5: Zero width + data = b"" + image = Image.frombytes("RGB", (0, 1), data) + self.assertEqual(image.size, (0, 1)) + + # Test case 6: Zero height + data = b"" + image = Image.frombytes("RGB", (1, 0), data) + self.assertEqual(image.size, (1, 0)) + + # Test case 7: s[0] < 0 + data = b"\x00\x00\xFF\xFF\x00\x00" + s = (-1, 1) + with self.assertRaises(ValueError): + Image.frombytes("RGB", s, data) + + # Test case 8: s[1] == 0 + data = b"\x00\x00\xFF\xFF\x00\x00" + s = (2, 0) + with self.assertRaises(ValueError): + Image.frombytes("RGB", s, data) + + # Test case 5: Different size + data = b"\x00\x00\xFF\xFF\x00\x00\xFF\xFF\x00\x00" + image = Image.frombytes("RGB", (3, 1), data) + self.assertEqual(image.size, (3, 1)) + self.assertEqual(image.getpixel((0, 0)), (0, 0, 255)) + self.assertEqual(image.getpixel((1, 0)), (255, 0, 0)) + self.assertEqual(image.getpixel((2, 0)), (255, 0, 0)) + +if __name__ == "__main__": + unittest.main() +