ó
šßÈ[c           @€  sŠ   d  d l  m Z 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
 d d l m Z d e f d	 „  ƒ  YZ d S(
   iÿÿÿÿ(   t   with_statementNi   (   t   FitsTestCase(   t   comparerecordsi   (   t   fitst   TestGroupsFunctionsc           B€  sP   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 RS(   c         C€  sÿ  t  j |  j d ƒ ƒ á} t | d t  j ƒ s7 t ‚ d } d d d d	 d
 g } d d d d d | d d f g } | j d t ƒ | k s‘ t ‚ | d } | j | k s° t ‚ t	 | j j
 j ƒ | d g k sØ t ‚ t | j t  j ƒ só t ‚ | j d t | j ƒ k st ‚ | j j j t | j ƒ f | d  d  d … k sMt ‚ | j j | k set ‚ t | j d t  j ƒ s„t ‚ t | j d ƒ t | ƒ d k s­t ‚ | j d j j | d  d  d … k sÙt ‚ | j d j | k sõt ‚ Wd  QXd  S(   Ns   random_groups.fitsi    i   i   i€   t   UUt   VVt   WWt   BASELINEt   DATEt   PRIMARYt	   GroupsHDUi“   t   float32s   3 Groups  5 Parameterst   outputt   DATAt   GCOUNTiÿÿÿÿ(   i   i   i€   i   i   (   R   t   opent   datat
   isinstanceR   t   AssertionErrort   infot   Falset   parnamest   listt   dtypet   namest	   GroupDatat   headert   lent   shapet   Group(   t   selft   hdult   naxest
   parametersR   t   ghdu(    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_groups.pyt	   test_open   s$    
("8),c         C€  sˆ   |  j  d ƒ t j |  j d ƒ ƒ j } t j d ƒ t j |  j d ƒ d d d t	 ƒj
 ƒ  | t j |  j d ƒ ƒ j k s„ t ‚ d S(   s  
        Test that opening a file containing a groups HDU in update mode and
        then immediately closing it does not result in any unnecessary file
        modifications.

        Similar to
        test_image.TestImageFunctions.test_open_scaled_in_update_mode().
        s   random_groups.fitsi   t   modet   updatet   memmapN(   t	   copy_filet   ost   statt   tempt   st_mtimet   timet   sleepR   R   R   t   closeR   (   R   t   mtime(    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_groups.pyt   test_open_groups_in_update_mode(   s    c         C€  s–   |  j  d ƒ t j |  j d ƒ d d ƒ } d | d j d <Wd QXt j |  j d ƒ d d ƒ- } t j | d j d d k ƒ sŒ t ‚ Wd QXd S(   s˜   
        Regression test for https://github.com/astropy/astropy/issues/3730 and
        for https://github.com/spacetelescope/PyFITS/issues/102
        s   random_groups.fitsR%   R&   gáz®GáÚ?i    R   N(   R(   R   R   R+   R   t   npt   allR   (   R   t   h(    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_groups.pyt   test_random_groups_data_update?   s
    !!c         C€  sú   |  j  d ƒ d d d d d g } t j |  j d ƒ d d ƒ* } | d	 j | k s\ t ‚ | j ƒ  Wd
 QXt j |  j d ƒ ƒ 6 } | d	 j | k s  t ‚ | j |  j d ƒ ƒ Wd
 QXt j |  j d ƒ ƒ   } | d	 j | k sð t ‚ Wd
 QXd
 S(   sï   
        Regression test for https://aeon.stsci.edu/ssb/trac/pyfits/ticket/130

        Ensures that opening a random groups file in update mode or writing it
        to a new file does not cause any change to the parameter names.
        s   random_groups.fitsR   R   R   R   R	   R%   R&   i    Ns	   test.fits(   R(   R   R   R+   R   R   t   flusht   writeto(   R   R"   R4   (    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_groups.pyt   test_parnames_round_tripL   s    !c         C€  s…   t  j |  j d ƒ ƒ g } | d j d } t | t  j ƒ sD t ‚ t | ƒ d k s\ t ‚ | d j j | j k s{ t ‚ Wd QXd S(   s  
        A simple test to ensure that slicing GroupData returns a new, smaller
        GroupData object, as is the case with a normal FITS_rec.  This is a
        regression test for an as-of-yet unreported issue where slicing
        GroupData returned a single Group record.
        s   random_groups.fitsi    i   i   N(   R   R   R   R   R   R   R   R   (   R   R    t   s(    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_groups.pyt   test_groupdata_slicef   s
    c         C€  sm  t  j |  j d ƒ ƒ O} | d j d } | d d !} t | ƒ d k sQ t ‚ | d | d k sk t ‚ | d | d k s… t ‚ | d d d … } t | ƒ d k s° t ‚ | d | d k j ƒ  sÐ t ‚ | d | d k sê t ‚ | d d d … } t | ƒ d	 k st ‚ | d | d k s/t ‚ | d
 | d k sIt ‚ | d | d k sct ‚ Wd QXd S(   s<   
        Tests basic slicing a single group record.
        s   random_groups.fitsi    i   i   iÿÿÿÿiýÿÿÿNi   i   i   (   R   R   R   R   R   R3   (   R   R    t   gR9   (    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_groups.pyt   test_group_slicet   s     c         C€  s:  t  j d ƒ } d | _ t  j d d t  j ƒd } d } t j j j | d	 d
 d g d | | g d d ƒ} | j d
 d g k sˆ t	 ‚ | j
 d
 ƒ | k j ƒ  s© t	 ‚ | j
 d ƒ | g t | ƒ k j ƒ  s× t	 ‚ | j | k j ƒ  sò t	 ‚ t j d | ƒ } | j |  j d ƒ ƒ t j |  j d ƒ ƒ } | d j } | d d k sXt	 ‚ | d d k snt	 ‚ | d d k s„t	 ‚ | d d k sšt	 ‚ | d d k s°t	 ‚ | d d k sÆt	 ‚ | d d k sÜt	 ‚ | d d k sòt	 ‚ | d j j d
 d g k st	 ‚ t | d j | ƒ s0t	 ‚ Wd QXd S(   sA   
        Basic test for creating GroupData from scratch.
        g      Y@i
   i   i   i   R   gš™™™™™¹?g      E@R   t   abct   xyzt   pardatat   bitpixiàÿÿÿR   s	   test.fitsi    R   t   PCOUNTt   NAXISt   NAXIS1t   NAXIS2t   NAXIS3t   NAXIS4t   NAXIS5N(   i
   i   i   i   i   (   R2   t   arangeR   R   R   t   hdut   groupsR   R   R   t   parR3   R   R   R   R7   R+   R   R   R   (   R   t   imdatat   pdata1t   pdata2t   xR#   R4   t   hdr(    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_groups.pyt   test_create_groupdataŠ   s0    	!."c      	   C€  sØ  t  j d ƒ } d | _ t  j d d t  j ƒd } d } t j j j | d d	 d
 d	 g d | | | g d d ƒ} | j d	 d
 d	 g k s‘ t	 ‚ | j
 d	 ƒ | d k j ƒ  s¶ t	 ‚ | d j
 d	 ƒ d k sÕ t	 ‚ | d j d d ƒ | d j
 d	 ƒ d k st	 ‚ t j t | d j d	 d ƒ | d j d	 d ƒ | d j
 d	 ƒ d k sXt	 ‚ | j
 d	 ƒ d d k swt	 ‚ | j
 d	 ƒ d | d d k j ƒ  s¤t	 ‚ t j d | ƒ } | j |  j d ƒ ƒ t j |  j d ƒ ƒ î } | d j } | d d k s
t	 ‚ | d d	 k s t	 ‚ | d d
 k s6t	 ‚ | d d	 k sLt	 ‚ | j d	 d
 d	 g k sjt	 ‚ | j j d k s‚t	 ‚ | j
 d	 ƒ d d k s¡t	 ‚ | j
 d	 ƒ d | d d k j ƒ  sÎt	 ‚ Wd QXd S(   s²   
        Tests support for multiple parameters of the same name, and ensures
        that the data in duplicate parameters are returned as a single summed
        value.
        g      Y@i
   i   i   i   R   g      E@R   R=   R>   R?   R@   iàÿÿÿi    i   R   s	   test.fitsRA   t   PTYPE1t   PTYPE2t   PTYPE3t   _abcR   N(   i
   i   i   i   i   (   i   i   (   R=   R>   RU   R   (   R2   RH   R   R   R   RI   RJ   R   R   R   RK   R3   t   setpart   pytestt   raisest
   ValueErrorR   R7   R+   R   R   R   R   (   R   RL   RM   RN   RO   R#   R4   RP   (    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_groups.pyt   test_duplicate_parameter«   s:    	!	%-(
   t   __name__t
   __module__R$   R1   R5   R8   R:   R<   RQ   RZ   (    (    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_groups.pyR      s   							!(   t
   __future__R    R)   R-   RW   t   numpyR2   t    R   t
   test_tableR   t   ioR   R   (    (    (    s@   lib/python2.7/site-packages/astropy/io/fits/tests/test_groups.pyt   <module>   s   