From db5b92778d0d578b42cfc4cdee5d6a856763b798 Mon Sep 17 00:00:00 2001 From: dutcu Date: Thu, 20 Jun 2024 12:16:19 +0200 Subject: [PATCH] 2 functions coverage tool and improvements done --- Tests/test_frombytes_image.py | 64 +++++++++++++++++++++++++++++++++++ Tests/test_image_merge.py | 30 ---------------- Tests/test_new_pdfparser.py | 26 ++++++++++++++ 3 files changed, 90 insertions(+), 30 deletions(-) create mode 100644 Tests/test_frombytes_image.py delete mode 100644 Tests/test_image_merge.py create mode 100644 Tests/test_new_pdfparser.py diff --git a/Tests/test_frombytes_image.py b/Tests/test_frombytes_image.py new file mode 100644 index 000000000..77e3363a1 --- /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() + diff --git a/Tests/test_image_merge.py b/Tests/test_image_merge.py deleted file mode 100644 index 21b8a1bfd..000000000 --- a/Tests/test_image_merge.py +++ /dev/null @@ -1,30 +0,0 @@ -import pytest - -from PIL import Image - -def calculate_branch_coverage(): - b = Image.Branches - print("Branches covered:", sum(b.values())) - - -def test_merge_wrong_number_of_bands(): - R = Image.new('L', (100, 100), color=255) - G = Image.new('L', (100, 100), color=128) - with pytest.raises(ValueError, match="wrong number of bands"): - Image.merge('RGB', [R, G]) - -def test_merge_mode_mismatch(): - R = Image.new('L', (100, 100), color=255) - G = Image.new('L', (100, 100), color=128) - B = Image.new('1', (100, 100)) # Incorrect mode - with pytest.raises(ValueError, match="mode mismatch"): - Image.merge('RGB', [R, G, B]) - -def test_merge_size_mismatch(): - R = Image.new('L', (100, 100), color=255) - G = Image.new('L', (200, 100), color=128) # Different size - B = Image.new('L', (100, 100), color=0) - with pytest.raises(ValueError, match="size mismatch"): - Image.merge('RGB', [R, G, B]) - - diff --git a/Tests/test_new_pdfparser.py b/Tests/test_new_pdfparser.py new file mode 100644 index 000000000..cbefc04ea --- /dev/null +++ b/Tests/test_new_pdfparser.py @@ -0,0 +1,26 @@ +import pytest +from PIL import PdfParser + +def test_delitem_new_entries(): + parser = PdfParser.XrefTable() + parser.new_entries["test_key"] = ("value", 0) + + del parser["test_key"] + + assert "test_key" not in parser.new_entries + assert parser.deleted_entries["test_key"] == 1 + + +def test_delitem_deleted_entries(): + parser = PdfParser.XrefTable() + parser.deleted_entries["test_key"] = 0 + + del parser["test_key"] + + assert parser.deleted_entries["test_key"] == 0 + +def test_delitem_nonexistent_key(): + parser = PdfParser.XrefTable() + + with pytest.raises(IndexError): + del parser["nonexistent_key"] \ No newline at end of file