def test_load_fails_with_no_header_data(self): file = BytesIO(b"some initial binary data: \x00\x01") try: pnm.load( file, b"P1", bitmap=Bitmap_C_Interface, palette=Palette_C_Interface ) self.fail("should have failed") except Exception as caught_exception: if "Unsupported image format" not in str(caught_exception): raise
def test_load_works_p3_ascii(self): test_file = os.path.join( os.path.dirname(__file__), "..", "examples", "images", "netpbm_p3_rgb_ascii.ppm", ) with open(test_file, "rb") as file: bitmap, palette = pnm.load( file, b"P3", bitmap=Bitmap_C_Interface, palette=Palette_C_Interface ) # type: Bitmap_C_Interface, Palette_C_Interface self.assertTrue(isinstance(palette, Palette_C_Interface)) self.assertEqual(6, palette.num_colors) palette.validate() # self.fail(str(palette)) self.assertTrue(isinstance(bitmap, Bitmap_C_Interface), bitmap) self.assertEqual(6, bitmap.colors) self.assertEqual(16, bitmap.width) self.assertEqual(16, bitmap.height) bitmap.validate()
def test_load_works_p4_in_mem(self): file = BytesIO(b"P4\n4 2\n\x55") bitmap, palette = pnm.load( file, b"P4", bitmap=Bitmap_C_Interface, palette=Palette_C_Interface ) self.assertEqual(4, bitmap.width) self.assertEqual(2, bitmap.height) bitmap.validate() self.assertEqual("\n 0 1 0 1\n 0 1 0 1\n", str(bitmap)) palette.validate()
def test_load_works_p4_binary_high_res(self): test_file = os.path.join( os.path.dirname(__file__), "..", "examples", "images", "netpbm_p4_mono_large.pbm", ) with open(test_file, "rb") as file: bitmap, palette = pnm.load( file, b"P4", bitmap=Bitmap_C_Interface, palette=Palette_C_Interface ) self.assertTrue(isinstance(bitmap, Bitmap_C_Interface)) self.assertEqual(1, bitmap.colors) self.assertEqual(320, bitmap.width) self.assertEqual(240, bitmap.height) bitmap.validate() self.assertEqual(1, palette.num_colors) palette.validate()
def test_load_works_p5_binary(self): test_file = os.path.join( os.path.dirname(__file__), "..", "examples", "images", "netpbm_p5_binary.pgm", ) with open(test_file, "rb") as file: bitmap, palette = pnm.load(file, b"P5", bitmap=Bitmap_C_Interface, palette=Palette_C_Interface) self.assertTrue(isinstance(bitmap, Bitmap_C_Interface), bitmap) self.assertEqual(8, palette.num_colors) palette.validate() self.assertEqual(8, bitmap.colors) self.assertEqual(8, bitmap.width) self.assertEqual(8, bitmap.height) bitmap.validate()
def test_load_works_p1_ascii(self): test_file = os.path.join( os.path.dirname(__file__), "..", "examples", "images", "netpbm_p1_mono_ascii.pbm", ) with open(test_file, "rb") as file: bitmap, palette = pnm.load( file, b"P1", bitmap=Bitmap_C_Interface, palette=Palette_C_Interface ) self.assertTrue(isinstance(bitmap, Bitmap_C_Interface), bitmap) self.assertEqual(1, bitmap.colors) self.assertEqual(13, bitmap.width) self.assertEqual(21, bitmap.height) bitmap.validate() self.assertEqual(0, bitmap[0]) # check first row self.assertEqual(1, bitmap[11, 1]) # check second row self.assertEqual(1, palette.num_colors) palette.validate()