code: def test_fetch_extension(self):
      value_and_expected_ext = [
          (FileVal("some/file.txt"), "txt"),
          (FileVal("some/file"), ""),
          (FileVal.from_content("Some text stream"), "txt"),
          (FileVal.from_content(b"Some binary stream"), "bin"),
          (
              FileVal.from_content(
                  b"Some binary stream", extension="png"
              ),
              "png",
          ),
      ]
  
      for value, expected_ext in value_and_expected_ext:
          with self._exp() as exp:
              path, wait = (
                  self._random_path(),
                  self._random_wait(),
              )
              var = File(exp, path)
              var.assign(value, wait=wait)
              self.assertEqual(expected_ext, var.fetch_extension())
  
imports: import os
  import unittest
  from io import BytesIO, StringIO
  from pathlib import Path
  from unittest.mock import PropertyMock
  from mock import MagicMock, patch
  from neptune.attributes.atoms.file import File, FileVal
  from neptune.attributes.file_set import FileSet, FileSetVal
  from neptune.common.utils import IS_WINDOWS
  from neptune.envs import NEPTUNE_CLEAN_INTERNAL_DATA, NEPTUNE_DISABLE_PARENT_DIR_DELETION
  from neptune.internal.operation import UploadFile, UploadFileSet
  from neptune.internal.types.file_types import FileType
  from tests.e2e.utils import tmp_context
  from tests.unit.neptune.new.attributes.test_attribute_base import TestAttributeBase
label_desc: Use image node_id 7 for calling the TestFile obj's underlying member method code with example usage: obj.test_fetch_extension() without return types