コード例 #1
0
    def test_ext_add_to(self) -> None:
        item = pystac.Item.from_file(self.PLAIN_ITEM)
        asset = item.assets["thumbnail"]

        self.assertNotIn(FileExtension.get_schema_uri(), item.stac_extensions)

        _ = FileExtension.ext(asset, add_if_missing=True)

        self.assertIn(FileExtension.get_schema_uri(), item.stac_extensions)
コード例 #2
0
    def test_migrates_old_checksum(self) -> None:
        example_path = TestCases.get_path(
            "data-files/examples/1.0.0-beta.2/"
            "extensions/checksum/examples/sentinel1.json")
        item = pystac.Item.from_file(example_path)

        self.assertTrue(FileExtension.has_extension(item))
        self.assertEqual(
            FileExtension.ext(item.assets["noises"]).checksum,
            "90e40210a30d1711e81a4b11ef67b28744321659",
        )
コード例 #3
0
    def test_item_asset_header_size(self) -> None:
        item = pystac.Item.from_file(self.FILE_ITEM_EXAMPLE_URI)
        asset = item.assets["measurement"]

        # Get
        self.assertEqual(4096, FileExtension.ext(asset).header_size)

        # Set
        new_header_size = 8192
        FileExtension.ext(asset).header_size = new_header_size
        self.assertEqual(new_header_size, FileExtension.ext(asset).header_size)
        item.validate()
コード例 #4
0
    def test_item_asset_size(self) -> None:
        item = pystac.Item.from_file(self.FILE_ITEM_EXAMPLE_URI)
        asset = item.assets["thumbnail"]

        # Get
        self.assertEqual(146484, FileExtension.ext(asset).size)

        # Set
        new_size = 1
        FileExtension.ext(asset).size = new_size
        self.assertEqual(new_size, FileExtension.ext(asset).size)
        item.validate()
コード例 #5
0
    def test_extension_not_implemented(self) -> None:
        # Should raise exception if Item does not include extension URI
        item = pystac.Item.from_file(self.PLAIN_ITEM)
        asset = item.assets["thumbnail"]

        with self.assertRaises(pystac.ExtensionNotImplemented):
            _ = FileExtension.ext(asset)

        # Should succeed if Asset has no owner
        ownerless_asset = pystac.Asset.from_dict(asset.to_dict())

        _ = FileExtension.ext(ownerless_asset)
コード例 #6
0
    def test_item_asset_checksum(self) -> None:
        item = pystac.Item.from_file(self.FILE_ITEM_EXAMPLE_URI)
        asset = item.assets["thumbnail"]

        # Get
        self.assertEqual(
            "90e40210f52acd32b09769d3b1871b420789456c",
            FileExtension.ext(asset).checksum,
        )

        # Set
        new_checksum = "90e40210163700a8a6501eccd00b6d3b44ddaed0"
        FileExtension.ext(asset).checksum = new_checksum
        self.assertEqual(new_checksum, FileExtension.ext(asset).checksum)
        item.validate()
コード例 #7
0
    def test_repr(self) -> None:
        item = pystac.Item.from_file(self.FILE_ITEM_EXAMPLE_URI)
        asset = item.assets["thumbnail"]
        file_ext = FileExtension.ext(asset)

        self.assertEqual(file_ext.__repr__(),
                         f"<AssetFileExtension Asset href={asset.href}>")
コード例 #8
0
    def test_item_asset_apply(self) -> None:
        item = pystac.Item.from_file(self.FILE_ITEM_EXAMPLE_URI)
        asset = item.assets["thumbnail"]
        file_ext = FileExtension.ext(asset)

        new_checksum = "90e40210163700a8a6501eccd00b6d3b44ddaed0"
        new_size = 1
        new_header_size = 8192
        new_mapping_obj = {"values": [0], "summary": "clouds"}
        new_values = [MappingObject.from_dict(new_mapping_obj)]
        new_byte_order = ByteOrder.LITTLE_ENDIAN

        self.assertNotEqual(file_ext.checksum, new_checksum)
        self.assertNotEqual(file_ext.size, new_size)
        self.assertNotEqual(file_ext.header_size, new_header_size)
        self.assertNotEqual(file_ext.values, new_values)
        self.assertNotEqual(file_ext.byte_order, new_byte_order)

        file_ext.apply(
            byte_order=new_byte_order,
            checksum=new_checksum,
            size=new_size,
            header_size=new_header_size,
            values=new_values,
        )

        self.assertEqual(asset.extra_fields["file:checksum"], new_checksum)
        self.assertEqual(asset.extra_fields["file:size"], new_size)
        self.assertEqual(asset.extra_fields["file:header_size"],
                         new_header_size)
        self.assertEqual(asset.extra_fields["file:values"], [new_mapping_obj])
        self.assertEqual(asset.extra_fields["file:byte_order"], new_byte_order)
コード例 #9
0
    def test_item_asset_byte_order(self) -> None:
        # Get
        item = pystac.Item.from_file(self.FILE_ITEM_EXAMPLE_URI)
        asset = item.assets["thumbnail"]
        file_ext = FileExtension.ext(asset)

        self.assertEqual(ByteOrder.BIG_ENDIAN, file_ext.byte_order)

        # Set
        new_byte_order = ByteOrder.LITTLE_ENDIAN
        file_ext.byte_order = new_byte_order

        self.assertEqual(file_ext.byte_order, new_byte_order)

        item.validate()
コード例 #10
0
    def test_item_asset_values(self) -> None:
        # Set/get
        item = pystac.Item.from_file(self.FILE_ITEM_EXAMPLE_URI)
        asset = item.assets["thumbnail"]
        file_ext = FileExtension.ext(asset)
        mapping_obj = {"values": [0], "summary": "clouds"}

        # file_ext.values = values
        file_ext.apply(values=[MappingObject.from_dict(mapping_obj)])

        self.assertListEqual(asset.extra_fields["file:values"], [mapping_obj])

        values_field = asset.extra_fields["file:values"]
        self.assertIsInstance(values_field, list)
        for mapping_obj in values_field:
            self.assertIsInstance(mapping_obj, dict)
コード例 #11
0
    def test_extension_type_error(self) -> None:
        item = pystac.Item.from_file(self.FILE_ITEM_EXAMPLE_URI)

        with self.assertRaises(pystac.ExtensionTypeError):
            _ = FileExtension.ext(item)  # type: ignore