from pytest import raises

from astropy.wcs.wcsapi.low_level_api import validate_physical_types


def test_validate_physical_types():
    # Check valid cases
    validate_physical_types(["pos.eq.ra", "pos.eq.ra"])
    validate_physical_types(["spect.dopplerVeloc.radio", "custom:spam"])
    validate_physical_types(["time", None])

    # Make sure validation is case sensitive
    with raises(
        ValueError, match=r"'Pos\.eq\.dec' is not a valid IOVA UCD1\+ physical type"
    ):
        validate_physical_types(["pos.eq.ra", "Pos.eq.dec"])

    # Make sure nonsense types are picked up
    with raises(ValueError, match=r"'spam' is not a valid IOVA UCD1\+ physical type"):
        validate_physical_types(["spam"])
