File: C:/Users/fred/anaconda3/Lib/site-packages/astropy/cosmology/_io/tests/test_cosmology.py
# Licensed under a 3-clause BSD style license - see LICENSE.rst
import pytest
from astropy.cosmology._io.cosmology import from_cosmology, to_cosmology
from .base import IODirectTestBase, ToFromTestMixinBase
###############################################################################
class ToFromCosmologyTestMixin(ToFromTestMixinBase):
"""
Tests for a Cosmology[To/From]Format with ``format="astropy.cosmology"``.
This class will not be directly called by :mod:`pytest` since its name does
not begin with ``Test``. To activate the contained tests this class must
be inherited in a subclass. Subclasses must define a :func:`pytest.fixture`
``cosmo`` that returns/yields an instance of a |Cosmology|.
See ``TestCosmology`` for an example.
"""
def test_to_cosmology_default(self, cosmo, to_format):
"""Test cosmology -> cosmology."""
newcosmo = to_format("astropy.cosmology")
assert newcosmo is cosmo
def test_from_not_cosmology(self, cosmo, from_format):
"""Test incorrect type in ``Cosmology``."""
with pytest.raises(TypeError):
from_format("NOT A COSMOLOGY", format="astropy.cosmology")
def test_from_cosmology_default(self, cosmo, from_format):
"""Test cosmology -> cosmology."""
newcosmo = from_format(cosmo)
assert newcosmo is cosmo
@pytest.mark.parametrize("format", [True, False, None, "astropy.cosmology"])
def test_is_equivalent_to_cosmology(self, cosmo, to_format, format):
"""Test :meth:`astropy.cosmology.Cosmology.is_equivalent`.
This test checks that Cosmology equivalency can be extended to any
Python object that can be converted to a Cosmology -- in this case
a Cosmology! Since it's the identity conversion, the cosmology is
always equivalent to itself, regardless of ``format``.
"""
obj = to_format("astropy.cosmology")
assert obj is cosmo
is_equiv = cosmo.is_equivalent(obj, format=format)
assert is_equiv is True # equivalent to self
class TestToFromCosmology(IODirectTestBase, ToFromCosmologyTestMixin):
"""Directly test ``to/from_cosmology``."""
def setup_class(self):
self.functions = {"to": to_cosmology, "from": from_cosmology}