U
    e»{j	  ã                   @   s–   d Z ddlZddlmZ ddlmZmZ ddlm	Z	 ddl
mZ ddlmZmZ ddlmZ G d	d
„ d
eƒZG dd„ deeeƒZG dd„ deeƒZdS )z.Testing :mod:`astropy.cosmology.flrw.w0wacdm`.é    N)ÚFlatw0waCDMÚw0waCDM)Ú	Parameter)ÚParameterTestMixiné   )ÚFlatFLRWMixinTestÚFLRWSubclassTest)ÚParameterw0TestMixinc                   @   s    e Zd ZdZdd„ Zdd„ ZdS )ÚParameterwaTestMixina%  Tests for `astropy.cosmology.Parameter` wa on a Cosmology.

    wa is a descriptor, which are tested by mixin, here with ``TestFLRW``.
    These tests expect dicts ``_cls_args`` and ``cls_kwargs`` which give the
    args and kwargs for the cosmology class, respectively. See ``TestFLRW``.
    c                 C   sX   t |jtƒst‚d|jjks t‚|jjdks0t‚|j|jks@t‚|j| jd ksTt‚dS )zTest Parameter ``wa``.zNegative derivativeNÚwa)Ú
isinstancer   r   ÚAssertionErrorÚ__doc__ÚunitZ_waÚ
cls_kwargs)ÚselfÚ	cosmo_clsÚcosmo© r   úh/var/www/html/bwave/python/venv/lib/python3.8/site-packages/astropy/cosmology/flrw/tests/test_w0wacdm.pyÚtest_wa#   s
    zParameterwaTestMixin.test_wac              	   C   s¤   |j d tj> |j d< ||j|jŽ}|j|j d ks8t‚|j d j|j d< ||j|jŽ}|j|j d kslt‚dtj |j d< t	 
t¡� ||j|jŽ W 5 Q R X dS )z)Test initialization for values of ``wa``.r   é
   N)Ú	argumentsÚuÚoneÚargsÚkwargsr   r   ÚvalueÚkmÚpytestZraisesÚ	TypeError)r   r   Úbar   r   r   r   Útest_init_wa.   s    z!ParameterwaTestMixin.test_init_waN)Ú__name__Ú
__module__Ú__qualname__r   r   r"   r   r   r   r   r
      s   r
   c                       s@   e Zd ZdZ‡ fdd„Z‡ fdd„Zdd„ Z‡ fdd	„Z‡  ZS )
ÚTestw0waCDMz(Test :class:`astropy.cosmology.w0waCDM`.c                    s&   t ƒ  | ¡ t| _| jjddd� dS ©zSetup for testing.éÿÿÿÿg      à¿©Úw0r   N)ÚsuperÚsetup_classr   Úclsr   Úupdate©r   ©Ú	__class__r   r   r,   C   s    zTestw0waCDM.setup_classc              	      sž   t ƒ  |¡ |jddd�}|jdks(t‚|jdks6t‚t|jƒddh D ]P}t||ƒ}|dkrr|t||ƒks˜t‚qHt	j
|t||ƒdt|dd	ƒ d
�sHt‚qHdS )z7Test method ``.clone()`` changing a(many) Parameter(s).gš™™™™™¹?gš™™™™™É?r)   r*   r   Ng-Cëâ6?r   r   )Zatol)r+   Útest_clone_change_paramÚcloner*   r   r   ÚsetÚ__parameters__Úgetattrr   Úallclose)r   r   ÚcÚnÚvr0   r   r   r2   L   s    
  ÿz#Testw0waCDM.test_clone_change_paramc              	   C   sD   t  | d¡d¡st‚t  | dddddg¡dddd	d
g¡s@t‚dS )z)Test :meth:`astropy.cosmology.w0waCDM.w`.g      ð?g      ô¿g        g      à?g      ø?gffffff@r(   gI»�«ªªò¿gÍÌÌÌÌÌô¿gglžÙd“õ¿N)r   r7   Úwr   )r   r   r   r   r   Útest_w^   s
    þzTestw0waCDM.test_wc                    s&   t ƒ  ||¡ d}t|ƒ|ks"t‚dS )úTest method ``.__repr__()``.zŠw0waCDM(name="ABCMeta", H0=70.0 km / (Mpc s), Om0=0.27, Ode0=0.73, w0=-1.0, wa=-0.5, Tcmb0=3.0 K, Neff=3.04, m_nu=[0. 0. 0.] eV, Ob0=0.03)N©r+   Ú	test_reprÚreprr   ©r   r   r   Úexpectedr0   r   r   r?   h   s    ÿzTestw0waCDM.test_repr)	r#   r$   r%   r   r,   r2   r<   r?   Ú__classcell__r   r   r0   r   r&   @   s
   	
r&   c                       s,   e Zd ZdZ‡ fdd„Z‡ fdd„Z‡  ZS )ÚTestFlatw0waCDMz,Test :class:`astropy.cosmology.Flatw0waCDM`.c                    s&   t ƒ  | ¡ t| _| jjddd� dS r'   )r+   r,   r   r-   r   r.   r/   r0   r   r   r,   z   s    zTestFlatw0waCDM.setup_classc                    s&   t ƒ  ||¡ d}t|ƒ|ks"t‚dS )r=   zƒFlatw0waCDM(name="ABCMeta", H0=70.0 km / (Mpc s), Om0=0.27, w0=-1.0, wa=-0.5, Tcmb0=3.0 K, Neff=3.04, m_nu=[0. 0. 0.] eV, Ob0=0.03)Nr>   rA   r0   r   r   r?   €   s    ÿzTestFlatw0waCDM.test_repr)r#   r$   r%   r   r,   r?   rC   r   r   r0   r   rD   w   s   rD   )r   r   Zastropy.unitsZunitsr   Zastropy.cosmologyr   r   Zastropy.cosmology.parameterr   Z!astropy.cosmology.tests.test_corer   Z	test_baser   r   Z
test_w0cdmr	   r
   r&   rD   r   r   r   r   Ú<module>   s   %7