
    HR-e                        d Z ddl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mZ ddlmZ ddlmZmZ  G d	 d
e          Z G d dee          Z G d dee          Zej                            e d          d             ZdS )z,Testing :mod:`astropy.cosmology.flrw.w0cdm`.    N)FlatwCDMwCDM)	Parameter)ParameterTestMixinvalid_zs)	HAS_SCIPY   )FlatFLRWMixinTestFLRWTestc                       e Zd ZdZd Zd ZdS )Parameterw0TestMixina%  Tests for `astropy.cosmology.Parameter` w0 on a Cosmology.

    w0 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                     t          |j        t                    sJ d|j        j        v sJ |j        j        J |j        |j        u sJ |j        | j        d         k    sJ dS )zTest Parameter ``w0``.zDark energy equation of stateNw0)
isinstancer   r   __doc__unit_w0
cls_kwargs)self	cosmo_clscosmos      Glib/python3.11/site-packages/astropy/cosmology/flrw/tests/test_w0cdm.pytest_w0zParameterw0TestMixin.test_w0"   sz     ),	22222.),2FFFFF| ((( x59$$$$x4?40000000    c                    |j         d         t          j        z  |j         d<    ||j        i |j        }|j        |j         d         k    sJ |j         d         j        |j         d<    ||j        i |j        }|j        |j         d         k    sJ dt          j        z  |j         d<   t          j	        t                    5   ||j        i |j         ddd           dS # 1 swxY w Y   dS )z)Test initialization for values of ``w0``.r   
   N)	argumentsuoneargskwargsr   valuekmpytestraises	TypeError)r   r   bar   s       r   test_init_w0z!Parameterw0TestMixin.test_init_w0-   s;     \$/158T	270bi00x2<-----  \$/5T	270bi00x2<-----  !$YT]9%% 	- 	-Irw,"),,,	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	-s   C!!C%(C%N)__name__
__module____qualname__r   r   r(    r   r   r   r      s<         	1 	1 	1- - - - -r   r   c                       e Zd ZdZ fdZ fdZej                            de	           fd            Z
 fdZej                            e d          ej                            d	d
dddg dej        z  fd
ddd ej        dej                  dg dej        z  fd
ddd ej        dej                  dg dej        z  fg           fd                        Z xZS )TestwCDMz%Test :class:`astropy.cosmology.wCDM`.c                     t                                          |            t          | _        | j                            d           dS zSetup for testing.      ࿩r   N)supersetup_classr   clsr   updater   	__class__s    r   r4   zTestwCDM.setup_classB   sA    D!!!$'''''r   c                    t                                          |           |                    d          }|j        dk    sJ t	          |j                  dhz
  D ]b}t          ||          }||t          ||          u sJ )t          j        |t          ||          dt          |dd          z            sJ cdS )	z7Test method ``.clone()`` changing a(many) Parameter(s).皙?r2   r   N-C6?r   r	   )atol)	r3   test_clone_change_paramcloner   set__parameters__getattrr   allclose)r   r   cnvr8   s        r   r=   z TestwCDM.test_clone_change_paramL   s    ''... KK3Kts{{{{U)**dV3 	 	A1AyGE1-------zwua((tga6K6K/K      	 	r   zc                     t                                          ||           |                    |          }t          j        || j        d                   sJ dS )z&Test :meth:`astropy.cosmology.wCDM.w`.r   N)r3   test_wwr   rB   r   )r   r   rF   rI   r8   s       r   rH   zTestwCDM.test_w\   sQ     	ua   GGAJJz!T_T23333333r   c                 z    t                                          ||           d}t          |          |k    sJ dS )Test method ``.__repr__()``.z~wCDM(name="ABCMeta", H0=70.0 km / (Mpc s), Om0=0.27, Ode0=0.73, w0=-0.5, Tcmb0=3.0 K, Neff=3.04, m_nu=[0. 0. 0.] eV, Ob0=0.03)Nr3   	test_reprreprr   r   r   expectedr8   s       r   rM   zTestwCDM.test_reprd   sF    )U+++- 	
 E{{h&&&&&&r   scipy is not installedreasonr    r!   rP   )     R@      ?g?        r   Tcmb0)gV;C@gtL@gYJ@g߷^#@g      @   r   rZ   Neffm_nu)gɾ+@g>]@g:o@g냸@      $@)g!2R@g#@gwj@gF
?@c                 P    t                                          ||||           dS zTest :meth:`astropy.cosmology.LambdaCDM.comoving_distance`.

        These do not come from external codes -- they are just internal checks to make
        sure nothing changes if we muck with the distance calculators.
        Nr3   test_comoving_distance_exampler   r   r    r!   rP   r8   s        r   rd   z'TestwCDM.test_comoving_distance_exampler   )    6 	..y$QQQQQr   )r)   r*   r+   r   r4   r=   r$   markparametrizer   rH   rM   skipifr   r   MpcQuantityeVrd   __classcell__r8   s   @r   r.   r.   ?   s       //( ( ( ( (      [S(++4 4 4 4 ,+4	' 	' 	' 	' 	' [I.FGG[& "c**KKKaeS "c1jajad>S>STTKKKaeS "c1jajqt>T>TUULLLquT	
 (R R R R)  HG*R R R R Rr   r.   c                   |    e Zd ZdZ fdZ fdZej                            e	 d          ej        
                    dddd	d
g dej        z  fdddd ej        d	ej                  dg dej        z  fdddd ej        dej                  dg dej        z  fg           fd                        Z xZS )TestFlatwCDMz)Test :class:`astropy.cosmology.FlatwCDM`.c                     t                                          |            t          | _        | j                            d           dS r0   )r3   r4   r   r5   r   r6   r7   s    r   r4   zTestFlatwCDM.setup_class   sA    D!!!$'''''r   c                 z    t                                          ||           d}t          |          |k    sJ dS )rK   zwFlatwCDM(name="ABCMeta", H0=70.0 km / (Mpc s), Om0=0.27, w0=-0.5, Tcmb0=3.0 K, Neff=3.04, m_nu=[0. 0. 0.] eV, Ob0=0.03)NrL   rO   s       r   rM   zTestFlatwCDM.test_repr   sF    )U+++ 	
 E{{h&&&&&&r   rQ   rR   rT   )rU   rV   grX   rY   )gͨ!@gֲ5@ggj+Y@gb*@gffffffr[   r\   r]   )g+y!@gWKlR@gnUL(@gda9a@rW   r`   )gMC@g]dX@gt_m)@gtr}h9@c                 P    t                                          ||||           dS rb   rc   re   s        r   rd   z+TestFlatwCDM.test_comoving_distance_example   rf   r   )r)   r*   r+   r   r4   rM   r$   rg   ri   r   rh   r   rj   rk   rl   rd   rm   rn   s   @r   rp   rp      s]       33( ( ( ( (	' 	' 	' 	' 	' [I.FGG[& s++JJJQUR sAzqz#qt?T?TUULLLquT c1jajqt>T>TUUKKKaeS	
 (R R R R)  HG*R R R R Rr   rp   ztest requires scipyrR   c                     t          dddd          } t          j        g d          }t          j        |                     |          g dd	          sJ t          j        |                     d
          |                     d          d	          sJ t          j        |                     g d          |                     g d          d	          sJ d S )NF   g333333?g333333?r1   )H0Om0Ode0r   )r:   g?g      ?g      ?g      @)gL;u?g*P?g=d?go@g镲1@r;   )rtolr\   r[   gHz>)r	      r\   )g      ?g       @r[   )r   nparrayr   rB   de_density_scale)r   rF   s     r   test_de_densityscaler~      s   BCdt444E
***++A:q!!444      :e,,Q//1G1G1L1LSWXXXXXX:yyy))//       r   )r   numpyr{   r$   astropy.unitsunitsr   astropy.cosmologyr   r   astropy.cosmology.parameterr   !astropy.cosmology.tests.test_corer   r   "astropy.utils.compat.optional_depsr   	test_baser
   r   r   r.   rp   rg   ri   r~   r,   r   r   <module>r      s   3 2            , , , , , , , , 1 1 1 1 1 1 J J J J J J J J 8 8 8 8 8 8 2 2 2 2 2 2 2 2"- "- "- "- "-- "- "- "-JNR NR NR NR NRx- NR NR NRh2R 2R 2R 2R 2R$h 2R 2R 2Rt 	M*?@@  A@  r   