code: def test_textual_chunks_after_idat(self):
      with Image.open("Tests/images/hopper.png") as im:
          assert "comment" in im.text.keys()
          for k, v in {
              "date:create": "2014-09-04T09:37:08+03:00",
              "date:modify": "2014-09-04T09:37:08+03:00",
          }.items():
              assert im.text[k] == v
  
      # Raises a SyntaxError in load_end
      with Image.open("Tests/images/broken_data_stream.png") as im:
          with pytest.raises(OSError):
              assert isinstance(im.text, dict)
  
      # Raises a UnicodeDecodeError in load_end
      with Image.open("Tests/images/truncated_image.png") as im:
          # The file is truncated
          with pytest.raises(OSError):
              im.text()
          ImageFile.LOAD_TRUNCATED_IMAGES = True
          assert isinstance(im.text, dict)
          ImageFile.LOAD_TRUNCATED_IMAGES = False
  
      # Raises an EOFError in load_end
      with Image.open(
          "Tests/images/hopper_idat_after_image_end.png"
      ) as im:
          assert im.text == {"TXT": "VALUE", "ZIP": "VALUE"}
  
imports: import re
  import sys
  import zlib
  from io import BytesIO
  import pytest
  from PIL import Image, ImageFile, PngImagePlugin, features
  from .helper import PillowLeakTestCase, assert_image, assert_image_equal, assert_image_equal_tofile, hopper, is_win32, mark_if_feature_version, skip_unless_feature
label_desc: Use image node_id 40 for calling the TestFilePng obj's underlying member method code with example usage: obj.test_textual_chunks_after_idat() without return types