Skip to content

Commit

Permalink
Formatting changes
Browse files Browse the repository at this point in the history
  • Loading branch information
jpolchlo committed May 4, 2023
1 parent de36225 commit 1cf260b
Showing 1 changed file with 53 additions and 42 deletions.
95 changes: 53 additions & 42 deletions tests/extensions/test_classification.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,16 +7,24 @@

import pystac
from pystac import ExtensionTypeError, Item
from pystac.extensions.classification import Classification, Bitfield, ClassificationExtension
from pystac.extensions.classification import (
Classification,
Bitfield,
ClassificationExtension,
)
from pystac.utils import get_opt
import pytest
from tests.utils import TestCases

logging.basicConfig(level=logging.DEBUG)
logger = logging.getLogger()

LANDSAT_EXAMPLE_URI = TestCases.get_path("data-files/classification/classification-landsat-example.json")
CLASSIFICATION_COLLECTION_URI = TestCases.get_path("data-files/classification/collection-item-assets.json")
LANDSAT_EXAMPLE_URI = TestCases.get_path(
"data-files/classification/classification-landsat-example.json"
)
CLASSIFICATION_COLLECTION_URI = TestCases.get_path(
"data-files/classification/collection-item-assets.json"
)
PLAIN_ITEM = TestCases.get_path("data-files/item/sample-item.json")


Expand All @@ -25,41 +33,50 @@ def item_dict() -> Dict[str, Any]:
with open(LANDSAT_EXAMPLE_URI) as f:
return json.load(f)


@pytest.fixture
def landsat_item() -> Item:
return Item.from_file(LANDSAT_EXAMPLE_URI)


@pytest.fixture
def plain_item() -> Item:
return Item.from_file(PLAIN_ITEM)


def test_stac_extensions(landsat_item: Item) -> None:
assert ClassificationExtension.has_extension(landsat_item)


def test_get_schema_uri(landsat_item: Item) -> None:
assert ClassificationExtension.get_schema_uri() in landsat_item.stac_extensions


def test_ext_raises_if_item_does_not_conform(plain_item: Item) -> None:
with pytest.raises(pystac.errors.ExtensionNotImplemented):
ClassificationExtension.ext(plain_item)


def test_apply(plain_item: Item) -> None:
ClassificationExtension.add_to(plain_item)
ClassificationExtension.ext(plain_item).apply(bitfields=[
Bitfield.create(
offset=0,
length=1,
classes=[
Classification.create(name="no", value=0),
Classification.create(name="yes", value=1)
]
)
])
ClassificationExtension.ext(plain_item).apply(
bitfields=[
Bitfield.create(
offset=0,
length=1,
classes=[
Classification.create(name="no", value=0),
Classification.create(name="yes", value=1),
],
)
]
)
# plain_item.validate() ## THIS FAILS
assert len(ClassificationExtension.ext(plain_item).bitfields)==1
assert ClassificationExtension.ext(plain_item).bitfields[0].offset==0
assert ClassificationExtension.ext(plain_item).bitfields[0].length==1
assert len(ClassificationExtension.ext(plain_item).bitfields[0].classes)==2
assert len(ClassificationExtension.ext(plain_item).bitfields) == 1
assert ClassificationExtension.ext(plain_item).bitfields[0].offset == 0
assert ClassificationExtension.ext(plain_item).bitfields[0].length == 1
assert len(ClassificationExtension.ext(plain_item).bitfields[0].classes) == 2


def test_create() -> None:
field = Bitfield.create(
Expand All @@ -69,43 +86,32 @@ def test_create() -> None:
length=2,
classes=[
Classification.create(
name="not_set",
description="No confidence level set",
value=0
name="not_set", description="No confidence level set", value=0
),
Classification.create(
name="low",
description="Low confidence cloud",
value=1
name="low", description="Low confidence cloud", value=1
),
Classification.create(
name="medium",
description="Medium confidence cloud",
value=2
name="medium", description="Medium confidence cloud", value=2
),
Classification.create(
name="high",
description="High confidence cloud",
value=3
)
]
name="high", description="High confidence cloud", value=3
),
],
)

assert field.__repr__() == "<Bitfield offset=8 length=2 classes=[<Classification name=not_set value=0>, <Classification name=low value=1>, <Classification name=medium value=2>, <Classification name=high value=3>]>"
assert (
field.__repr__()
== "<Bitfield offset=8 length=2 classes=[<Classification name=not_set value=0>, <Classification name=low value=1>, <Classification name=medium value=2>, <Classification name=high value=3>]>"
)

logger.info(field)


def test_incomplete_fields():
with pytest.raises(Exception):
field = Bitfield.create(
offset=2,
length=1,
classes=[
Classification.create(
name="dummy",
value=1
)
]
offset=2, length=1, classes=[Classification.create(name="dummy", value=1)]
)


Expand All @@ -130,6 +136,7 @@ def _parse_times(a_dict: Dict[str, Any]) -> None:
_parse_times(d2)
assert d1 == d2, f"Mismatch between dictionaries: \n{d1}\n{d2}"


def test_add_to(plain_item: Item) -> None:
assert ClassificationExtension.get_schema_uri() not in plain_item.stac_extensions

Expand All @@ -143,12 +150,16 @@ def test_add_to(plain_item: Item) -> None:
ClassificationExtension.add_to(plain_item)

classification_uris = [
uri for uri in plain_item.stac_extensions if uri == ClassificationExtension.get_schema_uri()
uri
for uri in plain_item.stac_extensions
if uri == ClassificationExtension.get_schema_uri()
]
assert len(classification_uris) == 1


def test_validate_classification(landsat_item: Item) -> None:
landsat_item.validate()


def test_set_field(landsat_item: Item) -> None:
logger.warning(landsat_item.assets['qa_pixel']['raster:bands'])
logger.warning(landsat_item.assets["qa_pixel"]["raster:bands"])

0 comments on commit 1cf260b

Please sign in to comment.