
    HR-eM-                        d Z ddlZddlZddlmc m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 ddlmZmZ dd	lmZ d
ddddZ G d de          Z G d de          Z G d deeee          Z G d dee          Zej                            e d          d             Zej                            e d          d             Z dS )z0Testing :mod:`astropy.cosmology.flrw.wpwazpcdm`.    N)FlatwpwaCDMwpwaCDM)	Parameter)ParameterTestMixin)	HAS_SCIPY   )FlatFLRWMixinTestFLRWTest)ParameterwaTestMixin      ?皙?        )wpzpwaTcmb0c                       e Zd ZdZd Zd ZdS )ParameterwpTestMixina%  Tests for `astropy.cosmology.Parameter` wp on a Cosmology.

    wp 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 ``wp``.zat the pivotNr   )
isinstancer   r   __doc__unit_wp
cls_kwargsself	cosmo_clscosmos      Klib/python3.11/site-packages/astropy/cosmology/flrw/tests/test_wpwazpcdm.pytest_wpzParameterwpTestMixin.test_wp(   sz     ),	22222!55555| ((( 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 ``wp``.r   
   N)	argumentsuoneargskwargsr   valuekmpytestraises	TypeErrorr   r   bar   s       r    test_init_wpz!ParameterwpTestMixin.test_init_wp3   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!   r1    r"   r    r   r       s<         	1 	1 	1- - - - -r"   r   c                       e Zd ZdZd Zd ZdS )ParameterzpTestMixina%  Tests for `astropy.cosmology.Parameter` zp on a Cosmology.

    zp 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        t
          j        k    sJ |j        |j        u sJ |j        | j        d         t
          j        z  k    sJ dS )zTest Parameter ``zp``.zpivot redshiftr   N)	r   r   r   r   r   curedshift_zpr   r   s      r    test_zpzParameterzpTestMixin.test_zpM   s     ),	222229<#77777| BK//// x59$$$$x4?40BK???????r"   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        |j         d         k    sJ dt          j        z  |j         d<   t          j	        t          j
                  5   ||j        i |j         ddd           dS # 1 swxY w Y   dS )z)Test initialization for values of ``zp``.r   r$   N)r%   r&   r'   r(   r)   r   r*   r+   r,   r-   UnitConversionErrorr/   s       r    test_init_zpz!ParameterzpTestMixin.test_init_zpX   s@     \$/158T	270bi00x2<-----  \$/5T	270bi00x~d!33333  !$YT]1011 	- 	-Irw,"),,,	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	-s   C++C/2C/N)r2   r3   r4   r   r<   r?   r5   r"   r    r7   r7   E   s?         	@ 	@ 	@- - - - -r"   r7   c                       e Zd ZdZ fdZ fdZd Z fdZej	        
                    e d          ej	                            dd	i g d
ej        z  fdddddej        z  dg dej        z  fdddddej        z  dg dej        z  fdi g dej        z  fdddddej        z  dg dej        z  fdddddej        z  dg dej        z  fg           fd                        Z xZS )TestwpwaCDMz(Test :class:`astropy.cosmology.wpwaCDM`.c                     t                                          |            t          | _        | j                            ddd           dS )Setup for testing.r   皙?r   r   r   r   N)supersetup_classr   clsr   updater   	__class__s    r    rG   zTestwpwaCDM.setup_classo   sE    D!!!$3377777r"   c                    t                                          |           |                    ddd          }|j        dk    sJ |j        dk    sJ |j        dk    sJ t          |j                  h d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).r   rD      rE   >   r   r   r   N-C6?r   r   )atol)rF   test_clone_change_paramcloner   r   r   set__parameters__getattrr&   allclose)r   r   cnvrK   s        r    rP   z#TestwpwaCDM.test_clone_change_paramx   s   ''... KK332K..ts{{{{ts{{{{trzzzzU)**-?-?-?? 	 	A1AyGE1-------zwua((tga6K6K/K      	 	r"   c                     t          j        |                    d          d          sJ t          j        |                    g d          g d          sJ dS )z)Test :meth:`astropy.cosmology.wpwaCDM.w`.r   r   )r   rD   r         ?      @g      '@)gpYgr   gUlHgQȥ\g7N)r&   rU   w)r   r   s     r    test_wzTestwpwaCDM.test_w   sm     z%''#,,-----zGG33344SSS
 
 	
 	
 	
 	
 	
r"   c                 z    t                                          ||           d}t          |          |k    sJ dS )Test method ``.__repr__()``.zwpwaCDM(name="ABCMeta", H0=70.0 km / (Mpc s), Om0=0.27, Ode0=0.73, wp=-0.9, wa=0.2, zp=0.5 redshift, Tcmb0=3.0 K, Neff=3.04, m_nu=[0. 0. 0.] eV, Ob0=0.03)NrF   	test_reprreprr   r   r   expectedrK   s       r    ra   zTestwpwaCDM.test_repr   F    )U+++8 	
 E{{h&&&&&&r"   scipy required for this test.reasonr(   r)   rd   )     R@333333?g333333?)gvM'a@gT!@gyfF
@gu\@)rj         ?r   皙?      @   r   r   r   Neffm_nu)gH7\Φ@g'}α@gh@g,޸@      ?      )gD@gtDD@gP@gi@)rj   rk   ffffff?gOh@gŤӉ@gA$Ķ@g}Ú@)rj   rl   g      ?g$u>S@gEHO@gytt@gU@)rj   rl   g)Rx?gu
4,@g#lܬ@gcY-2@gO#j@c                 b    t                                          ||i 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rF   test_comoving_distance_example COMOVING_DISTANCE_EXAMPLE_KWARGSr   r   r(   r)   rd   rK   s        r    r}   z*TestwpwaCDM.test_comoving_distance_example   sA    V 	..tK @KFKX	
 	
 	
 	
 	
r"   )r2   r3   r4   r   rG   rP   r]   ra   r,   markskipifr   parametrizer&   MpceVr}   __classcell__rK   s   @r    rA   rA   j   s        328 8 8 8 8    &
 
 
	' 	' 	' 	' 	' [I.MNN[& !LLLquT "S!QXFFKKKaeS "S!QXFFLLLquT !LLLquT #S!QXFFLLLquT .S!QXFFLLLquT7 	
# #H
 
 
 
I# # ONJ
 
 
 
 
r"   rA   c                   H    e Zd ZdZ fdZ fdZej                            e	 d          ej        
                    ddi g dej        z  fd	d
ddddej        z  dg dej        z  fd	ddddej        z  dg dej        z  fg           fd                        Z xZS )TestFlatwpwaCDMz,Test :class:`astropy.cosmology.FlatwpwaCDM`.c                 b    t                                          |            t          | _        dS )rC   N)rF   rG   r   rH   rJ   s    r    rG   zTestFlatwpwaCDM.setup_class   s&    D!!!r"   c                 z    t                                          ||           d}t          |          |k    sJ dS )r_   zFlatwpwaCDM(name="ABCMeta", H0=70.0 km / (Mpc s), Om0=0.27, wp=-0.9, wa=0.2, zp=0.5 redshift, Tcmb0=3.0 K, Neff=3.04, m_nu=[0. 0. 0.] eV, Ob0=0.03)Nr`   rc   s       r    ra   zTestFlatwpwaCDM.test_repr   re   r"   rf   rg   ri   )rj   rk   rw   )rj   rl   rm   r   rn   ro   r   )r   r   r   rq   rr   rx   rs   rt   ru   rp   ry   c                 b    t                                          ||i t          ||           dS r{   r|   r   s        r    r}   z.TestFlatwpwaCDM.test_comoving_distance_example   s@    6 	..tK @KFKX	
 	
 	
 	
 	
r"   )r2   r3   r4   r   rG   ra   r,   r   r   r   r   r&   r   r   r}   r   r   s   @r    r   r      s:       66    
	' 	' 	' 	' 	' [I.MNN[& LLLquT #Qad
SSLLLquT S!QXFFLLLquT	
 (
 
 
 
)  ON*
 
 
 
 
r"   r   zrequires scipy.rg   c            	      v   t          j        g d          } t          ddddddd          }t          j        |                    |           g d	t          j        z  d
          sJ t          ddddddd          }t          j        |                    |           g dt          j        z  d
          sJ dS )zMTests a few varying dark energy EOS models against a Mathematica computation.)rD   rm   ?g333333?F   rD   g?gr   r   )H0Om0Ode0r   r   r   r   )gGz@gffff@g3333s@gy@rN   rtolr   )g=
ףp@g@gQ^@gףp=!@N)nparrayr   r&   rU   luminosity_distancer   )zr   s     r    test_varyde_lumdist_mathematicar   
  s     	%%%&&A rs##SQQQE:!!!$$,,,qu4      rs##SQQQE:!!!$$+++ae3       r"   ztest requires scipyc                     t          dd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 t          dddddd          } t          ddddd          }t          j        |                     |          |                    |          d          sJ d S )Nr   rk   rv   r   rD   r   )r   r   r   r   r   r   )r   rD   r   rZ   r[   )g٤z(2?gMEҺr?gQo&f?gz&3?g-|}K?rN   r   ro   rn   gHz>)r      ro   )rs   g       @rn   )r   r   r   r   r   )r   r   r   r&   rU   de_density_scaler   )r   r   	flatcosmos      r    test_de_densityscaler   $  s   rs$33GGGE
***++A:q!!>>>      :e,,Q//1G1G1L1LSWXXXXXX:yyy))//      rs$33GGGErstDDDI:q!!9#=#=a#@#@t       r"   )!r   numpyr   r,   astropy.cosmology.units	cosmologyunitsr9   astropy.unitsr&   astropy.cosmologyr   r   astropy.cosmology.parameterr   !astropy.cosmology.tests.test_corer   "astropy.utils.compat.optional_depsr   	test_baser	   r
   test_w0wacdmr   r~   r   r7   rA   r   r   r   r   r   r5   r"   r    <module>r      s   7 6      % $ $ $ $ $ $ $ $       2 2 2 2 2 2 2 2 1 1 1 1 1 1 @ @ @ @ @ @ 8 8 8 8 8 8 2 2 2 2 2 2 2 2 . . . . . .
 +/cs#S#S  "- "- "- "- "-- "- "- "-J"- "- "- "- "-- "- "- "-Jf
 f
 f
 f
 f
"$8:Nf
 f
 f
R0
 0
 0
 0
 0
' 0
 0
 0
n 	M*;<<  =<2 	M*?@@  A@  r"   