
    HR-e'                     r   d Z ddlZddlZddlmZ ddlmZ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  G d
 de          Z G d deee          Z G d dee          Zej                            e d          d             Zd Zej                            e d          d             ZdS )z.Testing :mod:`astropy.cosmology.flrw.w0wacdm`.    N)Flatw0waCDMPlanck18w0waCDM)	Parameter)ParameterTestMixin)	HAS_SCIPY   )FlatFLRWMixinTestFLRWTest)Parameterw0TestMixinc                       e Zd ZdZd Z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                     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 ``wa``.zNegative derivativeNwa)
isinstancer   r   __doc__unit_wa
cls_kwargs)self	cosmo_clscosmos      Ilib/python3.11/site-packages/astropy/cosmology/flrw/tests/test_w0wacdm.pytest_wazParameterwaTestMixin.test_wa#   sz     ),	22222$	(<<<<<| ((( 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 ``wa``.r   
   N)	argumentsuoneargskwargsr   valuekmpytestraises	TypeError)r   r   bar   s       r   test_init_waz!ParameterwaTestMixin.test_init_wa.   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d Z fdZej	        
                    e d          ej	                            dd	d
dddg dej        z  fdd
ddd ej        dej                  dg dej        z  fdd
ddd ej        dej                  dg dej        z  fg           fd                        Z xZS )Testw0waCDMz(Test :class:`astropy.cosmology.w0waCDM`.c                     t                                          |            t          | _        | j                            dd           dS zSetup for testing.      ࿩w0r   N)supersetup_classr   clsr   updater   	__class__s    r   r7   zTestw0waCDM.setup_classC   sC    D!!!".....r   c                    t                                          |           |                    dd          }|j        dk    sJ |j        dk    sJ t          |j                  d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).皙?皙?r4   r5   r   N-C6?r   r	   )atol)
r6   test_clone_change_paramcloner5   r   set__parameters__getattrr   allclose)r   r   cnvr;   s        r   rA   z#Testw0waCDM.test_clone_change_paramL   s    ''... KK33K''ts{{{{ts{{{{U)**dD\9 	 	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.w0waCDM.w`.      ?      )              ?rK         ?gffffff@)r2   gIrL   gggldN)r   rF   w)r   r   s     r   test_wzTestw0waCDM.test_w^   sm     z%''#,,.....zGG---..777
 
 	
 	
 	
 	
 	
r   c                 z    t                                          ||           d}t          |          |k    sJ dS )Test method ``.__repr__()``.zw0waCDM(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r6   	test_reprreprr   r   r   expectedr;   s       r   rU   zTestw0waCDM.test_reprh   F    )U+++- 	
 E{{h&&&&&&r   scipy is not installedreasonr!   r"   rX   )     R@333333?333333?r=   rM   r5   r   Tcmb0)gE@g}lyܱ@gH`9@g9ø@)r^         ?rN         @   r5   r   rc   Neffm_nu)g:BǱ@gPi@gٵ@g;RƸ@      $@)gN]@gPr%b@gAWrİ@g^ȢZ@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r6   test_comoving_distance_exampler   r   r!   r"   rX   r;   s        r   rn   z*Testw0waCDM.test_comoving_distance_examplev   *    N 	..y$QQQQQr   )r*   r+   r,   r   r7   rA   rQ   rU   r%   markskipifr   parametrizer   MpcQuantityeVrn   __classcell__r;   s   @r   r/   r/   @   s       22/ / / / /    $
 
 
	' 	' 	' 	' 	' [I.FGG[& !355JJJQUR " &AJsAD11  LKKaeS
 " &AJtQT22  MLLquT
#	
 @R R R RA  HGB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
dg dej        z  fddd	dd ej        d
ej                  dg dej        z  fddd	dd ej        dej                  dg dej        z  fg           fd                        Z xZS )TestFlatw0waCDMz,Test :class:`astropy.cosmology.Flatw0waCDM`.c                     t                                          |            t          | _        | j                            dd           dS r1   )r6   r7   r   r8   r   r9   r:   s    r   r7   zTestFlatw0waCDM.setup_class   sC    D!!!".....r   c                 z    t                                          ||           d}t          |          |k    sJ dS )rS   zFlatw0waCDM(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)NrT   rW   s       r   rU   zTestFlatw0waCDM.test_repr   rY   r   rZ   r[   r]   )r^   rd   gffffffg333333?rM   rb   )gf@g|J&\@g]'@g6.C$@re   rf   rg   )gvze@g	[@gєA@gHZ!@rj   )gΰfC@g?FX@gRpP)@g>Z9@c                 P    t                                          ||||           dS rl   rm   ro   s        r   rn   z.TestFlatw0waCDM.test_comoving_distance_example   rp   r   )r*   r+   r,   r   r7   rU   r%   rq   rr   r   rs   r   rt   ru   rv   rn   rw   rx   s   @r   rz   rz      s|       66/ / / / /	' 	' 	' 	' 	' [I.FGG[& D377LLLquT  &AJsAD11  MLLquT
  &AJtQT22  LKKaeS
#	
 @R R R RA  HGBR R R R Rr   rz   zrequires scipy.r[   c                     t          j        g d          } t          dddddd          }t          j        |                    |           g dt          j        z  d	
          sJ t          j        |                    d          dd
          sJ t          j        |                    g d          g d          sJ t          dddddd          }t          j        |                    |           g dt          j        z  d	
          sJ t          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.)r>   g?g?g333333?F   r>   g?grM   )H0Om0Ode0r5   r   rc   )g     `@g
ףp=@g(\y@gR@r?   rtolrK   gh㈵>)rM   rN   rO   )rK   g-䓖?g
_c?r_   ffffff?ra   )guV]@gp=
W@g)\5@g\h@r3   )gV-p@g\(ڠ@gR뗶@gףp=
)@N)nparrayr   r   rF   luminosity_distancert   de_density_scale)zr   s     r   test_varyde_lumdist_mathematicar      s    	%%%&&A rs#SIIIE:!!!$$+++ae3     
 :e,,S113TBBBBBB://555    
 rs#SIIIE:!!!$$,,,qu4      rs$cJJJE:!!!$$,,,qu4       r   c                  n    t          di t          j        ddi} | t          k    sJ t          | k    sJ dS )zTest equality and equivalence.r   r`   Nr-   )r   r   _init_arguments)newcosmos    r   test_equalityr     sM     <<1<<<<<Hxxr   ztest requires scipyc                     t          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 d S )Nr   r_   r   r2   r3   )r   r   r   r5   r   )r=   r>   rN   rO   g      @)g?g`A?gGr?gxx[?g08?r?   r   rf   re   gHz>)r	      rf   )rK   g       @re   )r   r   r   r   rF   r   )r   r   s     r   test_de_densityscaler     s   rs">>>E
***++A:q!!===      :e,,Q//1G1G1L1LSWXXXXXX:yyy))//       r   )r   numpyr   r%   astropy.unitsunitsr   astropy.cosmologyr   r   r   astropy.cosmology.parameterr   !astropy.cosmology.tests.test_corer   "astropy.utils.compat.optional_depsr   	test_baser
   r   
test_w0cdmr   r   r/   rz   rq   rr   r   r   r   r-   r   r   <module>r      s   5 4            < < < < < < < < < < 1 1 1 1 1 1 @ @ @ @ @ @ 8 8 8 8 8 8 2 2 2 2 2 2 2 2 , , , , , ,"- "- "- "- "-- "- "- "-J]R ]R ]R ]R ]R(02F ]R ]R ]RF>R >R >R >R >R' >R >R >RJ 	M*;<<  =<J      	M*?@@  A@  r   