
[c           @   s   d  d l  Z  d  d l Z d  d l Z d  d l Z d d l m Z d d l m Z e  j	 e j
 d d d d Z e  j	 e j
 d d	 d d	 d
 Z e  j	 e j
 d d	 d d d
 Z d   Z d d d     YZ d d d     YZ d d d     YZ d S(   iNi   (   t   Time(   t   SIDEREAL_TIME_MODELSt   rtolgV瞯<t   atolg&.>g      ?g      @g       @c          C   sB   x; d D]3 }  x* t  |  D] } | t j j k s t  q Wq Wd S(   s?   The doc string is formatted; this ensures this remains working.t   meant   apparentN(   R   R   (   R   R    t   sidereal_timet   __doc__t   AssertionError(   t   kindt   model(    (    s?   lib/python2.7/site-packages/astropy/time/tests/test_sidereal.pyt   test_doc_string_contains_models   s    t   TestERFATestCasesc           B   s   e  Z d  Z e d d d d d d Z e d d d d d d Z d e _ d e j j e j e _ e	 j
 e j j e j d d d s t  e j j d d d  d! d" d# d$ d% f  d    Z RS(&   sB   Test that we reproduce the test cases given in erfa/src/t_erfa_c.cg   @OBAg     =@t   scalet   ut1t   formatt   jdt   ttg        i   i  R   g+=t   erfa_test_inputg?g-q=t	   eraGmst00gLz?t	   eraGmst06g(?t	   eraGmst82gR(?t	   eraGst00agT?t	   eraGst00bg	?t	   eraGst06agY?t   eraGst94c   
      C   sP  | \ } } } | d d k rT d } d j  | d d k rA d n d | d  } n8 d	 } d j  | d
 d k rv d n d | d
 j    } | t j   k s t  | t | k s t  t | | } |  j j |  } t j | j	 d  | d d d | st  |  j j
 | d |  }	 t j |	 j	 d  | d d d | sLt  d  S(   Ni   t   mR   s   IAU{0:2d}{1:s}i   t   0i   i   R   i   t   radianR   g      ?R   t	   greenwich(   R   t   upperR   t   keysR   t   time_ut1t   _erfa_sidereal_timet   npt   allcloset   to_valueR   (
   t   selfR   t   resultt	   precisiont   nameR	   t
   model_nameR
   t   gst_erfat   gst(    (    s?   lib/python2.7/site-packages/astropy/time/tests/test_sidereal.pyt   test_iau_models$   s"    	iQ (   g?g-q=R   (   gLz?g-q=R   (   g(?g-q=R   (   gR(?g-q=R   (   gT?g-q=R   (   g	?g-q=R   (   gY?g-q=R   (   t   __name__t
   __module__R   R    R    t   time_ttt   delta_ut1_utcR   t   jd2R"   R#   R   t   pytestt   markt   parametrizeR,   (    (    (    s?   lib/python2.7/site-packages/astropy/time/tests/test_sidereal.pyR      s   	+t   TestSTc           B   s   e  Z d  Z e d d d d d g d d Z e e d d Z d   Z d   Z d   Z d   Z	 e
 j j d d  d    Z d   Z RS(   s   Test Greenwich Sidereal Time.  Unlike above, this is relative to
    what was found earlier, so checks changes in implementation, including
    leap seconds, rather than correctnesss   2012-06-30 12:00:00s   2012-06-30 23:59:59s   2012-06-30 23:59:60s   2012-07-01 00:00:00s   2012-07-01 12:00:00R   t   utct   locationt   120dt   10dc         C   sO   t  j d d d d d g  } |  j j d d  } t | j |  sK t  d S(	   sI   Compare Greenwich Mean Sidereal Time with what was found earlier
        g"Y,c@g?"2@g&,S42@gF2@g5x@R   R   N(   R"   t   arrayt   t1R   t   allclose_hourst   valueR   (   R%   t   gmst_comparet   gmst(    (    s?   lib/python2.7/site-packages/astropy/time/tests/test_sidereal.pyt	   test_gmstN   s
    c         C   sO   t  j d d d d d g  } |  j j d d  } t | j |  sK t  d S(	   sM   Compare Greenwich Apparent Sidereal Time with what was found earlier
        grc@g	'32@g/E2@g8'&X2@g:@R   R   N(   R"   R:   R;   R   R<   R=   R   (   R%   t   gst_compareR+   (    (    s?   lib/python2.7/site-packages/astropy/time/tests/test_sidereal.pyt   test_gstW   s
    c         C   sI   |  j  j d d  } |  j  j d d  } t | j | j  sE t  d S(   s6   Check that Mean and Apparent are within a few seconds.R   R   R   N(   R;   R   t   within_2_secondsR=   R   (   R%   R?   R+   (    (    s?   lib/python2.7/site-packages/astropy/time/tests/test_sidereal.pyt   test_gmst_gst_close`   s    c         C   sI   |  j  j d d  } |  j j d d  } t | j | j  sE t  d S(   s:   Check that Greenwich time does not depend on self.locationR   R   N(   R;   R   t   t2R<   R=   R   (   R%   t   gmst1t   gmst2(    (    s?   lib/python2.7/site-packages/astropy/time/tests/test_sidereal.pyt&   test_gmst_independent_of_self_locationf   s    R	   R   R   c         C   s   i t  j d d d d d g  d 6t  j d d d	 d
 d g  d 6} |  j j | d  } |  j j |  } t | j | |  s t  t | | j d  j |  j j j	 j
 d   s t  |  j j | |  j j j	  } t | j | |  s t  d S(   st   Compare Local Sidereal Time with what was found earlier,
        as well as with what is expected from GMST
        gҬK1-@gH	@g(ay	@g@4
@g_S-@R   gL1-@gH8	@g|q(/
@g91
@gpтS-@R   R   t   12ht	   hourangleN(   R"   R:   RE   R   R<   R=   R   t   wrap_atR7   t   lonR$   R;   (   R%   R	   t   lst_compareRG   t   lmst2t   lmst1(    (    s?   lib/python2.7/site-packages/astropy/time/tests/test_sidereal.pyt   test_lstl   s    !c         C   sS   t  j t   |  j j d  Wd  QXt  j t   |  j j d d   Wd  QXd  S(   NR   (   R2   t   raisest
   ValueErrorR;   R   t   None(   R%   (    (    s?   lib/python2.7/site-packages/astropy/time/tests/test_sidereal.pyt   test_lst_needs_location   s    (   R8   R9   (   R   R   (   R-   R.   R   R    R;   RE   R@   RB   RD   RH   R2   R3   R4   RP   RT   (    (    (    s?   lib/python2.7/site-packages/astropy/time/tests/test_sidereal.pyR5   D   s   							t   TestModelInterpretationc           B   sk   e  Z d  Z e d g d d d d Z e j j d d  d
    Z e j j d d d f  d    Z	 RS(   sE   Check that models are different, and that wrong models are recognizeds   2012-06-30 12:00:00R   R6   R7   R8   R9   R	   R   R   c         C   s	  xt  j t | j   d  D] \ } } |  j j | d |  } |  j j | d |  } t j | j | j k  sz t	  t
 | j | j  s t	  |  j j | d |  } |  j j | d |  } t j | j | j k  s t	  t
 | j | j  s t	  q Wd S(   s3   Check models give different answers, yet are close.i   R   N(   t	   itertoolst   combinationsR   R   t   tR   R"   t   allR=   R   t   within_1_secondRS   (   R%   R	   t   model1t   model2t   gst1t   gst2t   lst1t   lst2(    (    s?   lib/python2.7/site-packages/astropy/time/tests/test_sidereal.pyt   test_model_uniqueness   s    	 !!t   otherc         C   s   t  j t   |  j j | d d  Wd  QXx t t | j    t t | j    D]^ } t  j t   |  j j | d |  Wd  QXt  j t   |  j j | d  |  Wd  QXqW Wd  S(   NR   t   nonsense(	   R2   RQ   RR   RX   R   t   setR   R   RS   (   R%   R	   Rb   R
   (    (    s?   lib/python2.7/site-packages/astropy/time/tests/test_sidereal.pyt"   test_wrong_models_raise_exceptions   s    (   R8   R9   (   R   R   (   R	   Rb   (   R   R   (   R   R   (
   R-   R.   R   R    RX   R2   R3   R4   Ra   Re   (    (    (    s?   lib/python2.7/site-packages/astropy/time/tests/test_sidereal.pyRU      s
   (    (    (    (   t	   functoolsRV   R2   t   numpyR"   t    R    t   coreR   t   partialR#   R<   RZ   RC   R   R   R5   RU   (    (    (    s?   lib/python2.7/site-packages/astropy/time/tests/test_sidereal.pyt   <module>   s   ""	,E