ó
šßÈ[c           @` s]  d  Z  d d l m Z m Z m Z m Z d d l m Z 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 m Z e j e j e j g Z e j e j e j g Z e j  e j! e j" g Z# e j$ e j% e j& e j' d
 e j( f Z) d e* f d „  ƒ  YZ+ d „  Z, d „  Z- d „  Z. d „  Z/ d e* f d „  ƒ  YZ0 d e* f d „  ƒ  YZ1 d e* f d „  ƒ  YZ2 d „  Z3 d „  Z4 d e* f d „  ƒ  YZ5 d „  Z6 d „  Z7 d e* f d „  ƒ  YZ8 d e* f d  „  ƒ  YZ9 d! e* f d" „  ƒ  YZ: d# e* f d$ „  ƒ  YZ; d% e* f d& „  ƒ  YZ< d' e* f d( „  ƒ  YZ= d S()   u/   
    Test the Logarithmic Units and Quantities
i    (   t   absolute_importt   unicode_literalst   divisiont   print_functioni   (   t   six(   t   zipN(   t   assert_allclose(   t   assert_quantity_allclose(   t   unitst	   constantsi   t   TestLogUnitCreationc           B` s½   e  Z d  „  Z e j j d e e e ƒ ƒ d „  ƒ Z	 e j j d e ƒ d „  ƒ Z
 e j j d e j e e ƒ ƒ d „  ƒ Z d „  Z e j j d e j e e j g e ƒ ƒ d	 „  ƒ Z RS(
   c         C` sg   t  j j t  j ƒ d k s! t ‚ t  j j t  j ƒ d k sB t ‚ t  j j t  j ƒ d k sc t ‚ d S(   u-   Check logarithmic units are set up correctly.gš™™™™™¹?g      ÀiüÿÿÿN(   t   ut   dBt   tot   dext   AssertionErrort   mag(   t   self(    (    sC   lib/python2.7/site-packages/astropy/units/tests/test_logarithmic.pyt   test_logarithmic_units!   s    !!u   lu_unit, lu_clsc         C` sC   t  | t j ƒ s t ‚ t | ƒ s* t ‚ | j | k s? t ‚ d  S(   N(   t
   isinstanceR   t   UnitBaseR   t   callablet   _function_unit_class(   R   t   lu_unitt   lu_cls(    (    sC   lib/python2.7/site-packages/astropy/units/tests/test_logarithmic.pyt   test_callable_units'   s    u   lu_unitc         C` s7   | ƒ  } | | j  k s t ‚ | j  | k s3 t ‚ d  S(   N(   t   _default_function_unitR   (   R   R   t   lu(    (    sC   lib/python2.7/site-packages/astropy/units/tests/test_logarithmic.pyt.   test_equality_to_normal_unit_for_dimensionless-   s    	u   lu_unit, physical_unitc         C` s=   | | ƒ } | j  | k s! t ‚ | j | j k s9 t ‚ d S(   uu   Create a LogUnit subclass using the callable unit and physical unit,
        and do basic check that output is right.N(   t   physical_unitR   t   function_unitR   (   R   R   R   t   lu1(    (    sC   lib/python2.7/site-packages/astropy/units/tests/test_logarithmic.pyt   test_call_units3   s    c         C` sP   t  j t ƒ  t j g  ƒ Wd  QXt  j t ƒ  t j t j ƒ  ƒ Wd  QXd  S(   N(   t   pytestt   raisest	   TypeErrorR   R   t
   ValueError(   R   (    (    sC   lib/python2.7/site-packages/astropy/units/tests/test_logarithmic.pyt   test_call_invalid_unit<   s    u   lu_cls, physical_unitc         C` s¶   | | ƒ } | j  | k s! t ‚ | j | j k s9 t ‚ | | d d | j ƒ} | j  | k sg t ‚ | j t j d | j ƒ k sŒ t ‚ t j t ƒ  | | t j	 ƒ Wd QXd S(   uj   Create a LogUnit subclass object for given physical unit,
        and do basic check that output is right.R   i   N(
   R   R   R   R   R   t   UnitR!   R"   R$   t   m(   R   R   R   R   t   lu2(    (    sC   lib/python2.7/site-packages/astropy/units/tests/test_logarithmic.pyt   test_subclass_creationB   s    	%(   t   __name__t
   __module__R   R!   t   markt   parametrizeR   t   lu_unitst   lu_subclassesR   R   t	   itertoolst   productt	   pu_sampleR    R%   R   t   LogUnitR)   (    (    (    sC   lib/python2.7/site-packages/astropy/units/tests/test_logarithmic.pyR
      s   	'	c           C` sÀ   t  d t j j d t j t j d t j t j ƒ t  d t j j d t j t j d t j t j	 ƒ t  d t j
 j t j ƒ t  d t j j t j d t j d t j d ƒ d  S(   Ngš™™™™5Àg      ð?i   gÍÌÌÌÌLHÀi    g      @g      $@(   R   R   t   STmagt   physicalt   ergt   cmt   st   AAt   ABmagt   Hzt   M_bolt   ct   L_bol0t   m_bolt   npt   pit   pc(    (    (    sC   lib/python2.7/site-packages/astropy/units/tests/test_logarithmic.pyt   test_predefined_magnitudesT   s    ''c           C` s|   t  j d ƒ t  j k s t ‚ t  j d ƒ t  j k s< t ‚ t  j d ƒ t  j k sZ t ‚ t  j d ƒ t  j k sx t ‚ d  S(   Nu   STu   ABu   Bolu   bol(   R   R   R4   R   R:   R<   R?   (    (    (    sC   lib/python2.7/site-packages/astropy/units/tests/test_logarithmic.pyt    test_predefined_reinitialisation^   s    c           C` s¶   t  j j ƒ  ¡ t  j t  j j ƒ  ƒ t  j k s7 t ‚ t  j t  j j ƒ  ƒ t  j k s^ t ‚ t  j t  j j ƒ  ƒ t  j k s… t ‚ t  j t  j	 j ƒ  ƒ t  j	 k s¬ t ‚ Wd QXd S(   u   Ensure roundtripping; see #5015N(
   R   t   magnitude_zero_pointst   enableR&   R4   t	   to_stringR   R:   R<   R?   (    (    (    sC   lib/python2.7/site-packages/astropy/units/tests/test_logarithmic.pyt    test_predefined_string_roundtripe   s
    '''c          C` s~   t  j t  j ƒ }  t  j t  j ƒ } t  j t  j d ƒ } | |  } |  | k sV t ‚ |  | k sh t ‚ |  | k sz t ‚ d S(   u+   Check __ne__ works (regresssion for #5342).i   N(   R   R   t   JyR   R   (   R   R(   t   lu3t   lu4(    (    sC   lib/python2.7/site-packages/astropy/units/tests/test_logarithmic.pyt   test_inequalityn   s    
t   TestLogUnitStringsc           B` s   e  Z d  „  Z RS(   c         C` s¨  t  j t  j ƒ } t | ƒ d k s* t ‚ t | ƒ d k sB t ‚ | j d ƒ d k s] t ‚ t j t	 ƒ  | j d ƒ Wd QXt  j
 ƒ  } t | ƒ d k s¤ t ‚ t | ƒ d k s¼ t ‚ | j ƒ  d k sÔ t ‚ t  j t  j d	 d
 t  j ƒ} t | ƒ d k st ‚ t | ƒ d k s#t ‚ | j ƒ  d k s;t ‚ t  j t  j ƒ } | j d ƒ d k sht ‚ | j d ƒ d k sƒt ‚ | j ƒ  | j d ƒ k s¤t ‚ d S(   u:   Do some spot checks that str, repr, etc. work as expected.u   mag(Jy)u   Unit("mag(Jy)")u   genericu   fitsNu   dexu   Unit("dex(1)")u   dex(1)R   i   u	   2 mag(Jy)u   MagUnit("Jy", unit="2 mag")u   mag(ct)u   latexu3   $\mathrm{mag}$$\mathrm{\left( \mathrm{ct} \right)}$(   R   R   RI   t   strR   t   reprRG   R!   R"   R$   R   t   MagUnitt   ctt   _repr_latex_(   R   R   R(   RJ   RK   (    (    sC   lib/python2.7/site-packages/astropy/units/tests/test_logarithmic.pyt   test_str{   s$    (   R*   R+   RS   (    (    (    sC   lib/python2.7/site-packages/astropy/units/tests/test_logarithmic.pyRM   y   s   t   TestLogUnitConversionc           B` s   e  Z e j j d  e j e e ƒ ƒ d „  ƒ Z	 e j j d e ƒ d „  ƒ Z
 e j j d e j e e e ƒ ƒ d „  ƒ Z d „  Z d „  Z RS(   u   lu_unit, physical_unitc         C` s±  | | ƒ } | j  | ƒ s! t ‚ | j | d ƒ d k s? t ‚ | j  | ƒ sT t ‚ | j | d ƒ d k sr t ‚ t j d | ƒ } | j  | ƒ sš t ‚ | j | d ƒ d k s¸ t ‚ | j  | ƒ sÍ t ‚ t | j | d ƒ d d d ƒt j d d d ƒ } t | j | | j | | ƒ ƒ | d d ƒt j } | j  | ƒ sKt ‚ t	 j
 t j ƒ  | j | ƒ Wd	 QX| j  | ƒ s‡t ‚ t	 j
 t j ƒ  | j | ƒ Wd	 QXd	 S(
   uf   Check various LogUnit subclasses are equivalent and convertible
        to their non-log counterparts.g        g      ð?g       @g      À?t   atolgVçž¯Ò<g      $@i   N(   t   is_equivalentR   R   R   R&   R   R@   t   linspacet   gR!   R"   t
   UnitsError(   R   R   R   R   t   put   valuet   pu2(    (    sC   lib/python2.7/site-packages/astropy/units/tests/test_logarithmic.pyt   test_physical_unit_conversion–   s&    +	u   lu_unitc         C` s°   t  j d d d ƒ } | t j ƒ } | j | j ƒ s< t ‚ t | j | j | ƒ | ƒ | t j	 ƒ } | j | j ƒ s€ t ‚ t
 j t j ƒ  | j | j | ƒ Wd QXd S(   u   Check that conversion to logarithmic units (u.mag, u.dB, u.dex)
        is only possible when the physical unit is dimensionless.g        g      $@i   N(   R@   RW   R   t   dimensionless_unscaledRV   R   R   R   R   RI   R!   R"   RY   (   R   R   t   valuesR   R(   (    (    sC   lib/python2.7/site-packages/astropy/units/tests/test_logarithmic.pyt   test_container_unit_conversion¶   s    u!   flu_unit, tlu_unit, physical_unitc   
      C` sš  t  j d d d ƒ } | | ƒ } | | ƒ } | j | ƒ sB t ‚ t | j | ƒ | j j | j ƒ ƒ t | j | | ƒ | | j j | j ƒ ƒ | t j d | ƒ ƒ } | j | ƒ sÁ t ‚ t | j | | j | | ƒ ƒ | d d ƒ| | j	 t j
 ƒ d ƒ } | j | ƒ st ‚ t | j | | j | | ƒ ƒ | d d ƒ| t j ƒ }	 | j |	 ƒ smt ‚ t j t j ƒ  | j |	 | ƒ Wd QXd S(	   u†   Check various LogUnit subclasses are equivalent and convertible
        to each other if they correspond to equivalent physical units.g        g      $@i   g      Y@RU   gVçž¯Ò<i    N(   R@   RW   RV   R   R   R   R   R   R&   t	   to_systemt   siRX   R!   R"   RY   (
   R   t   flu_unitt   tlu_unitR   R_   t   flut   tlut   tlu2t   tlu3t   tlu4(    (    sC   lib/python2.7/site-packages/astropy/units/tests/test_logarithmic.pyt   test_subclass_conversionÄ   s"    %++c         C` s   t  j t  j ƒ } | j ƒ  t  j t  j j ƒ  ƒ k s< t ‚ | j ƒ  j j t  j t  j g k sf t ‚ | j	 t  j t  j j	 ƒ k sŠ t ‚ | j	 j j t  j t  j g k s± t ‚ | j
 t  j t  j j
 ƒ k sÕ t ‚ | j
 j j t  j t  j g k sü t ‚ d  S(   N(   R   R   RI   t	   decomposeR   R   t   basest   kgR8   Rb   t   cgsRX   (   R   R   (    (    sC   lib/python2.7/site-packages/astropy/units/tests/test_logarithmic.pyt   test_unit_decompositioná   s    **$'$c         C` s+   t  j t  j ƒ } | j t ƒ s' t ‚ d  S(   N(   R   R   RI   RV   R2   R   (   R   R   (    (    sC   lib/python2.7/site-packages/astropy/units/tests/test_logarithmic.pyt)   test_unit_multiple_possible_equivalenciesê   s    (   R*   R+   R!   R,   R-   R0   R1   R.   R2   R]   R`   Rj   Ro   Rp   (    (    (    sC   lib/python2.7/site-packages/astropy/units/tests/test_logarithmic.pyRT   •   s   	!		t   TestLogUnitArithmeticc           B` sÜ   e  Z d  „  Z e j j d d ƒ d „  ƒ Z e j j d e ƒ d „  ƒ Z d	 „  Z	 e j j d e
 j e
 j ƒ  e
 j e
 j ƒ e
 j e
 j ƒ e
 j d e
 j ƒ e
 j d
 d e
 j ƒ f ƒ d „  ƒ Z d „  Z d „  Z RS(   c   	      C` s`  t  j t  j ƒ } t j t  j ƒ  | t  j Wd QXt j t  j ƒ  t  j | Wd QXt j t  j ƒ  | | Wd QXxG t  j t  j t  j t  j f D]' } t j t  j ƒ  | | Wd QXqš Wt  j t  j ƒ } t j t  j ƒ  | | Wd QXt j t  j ƒ  | | Wd QX| | t  j k s2t	 ‚ | t  j } t  j | } x‘ | | f D]ƒ } t
 | t | ƒ ƒ s{t	 ‚ | | j t  j k s—t	 ‚ t  j t  j ƒ  ƒ . t j t  j ƒ  | j | j ƒ Wd QXWd QXqYW| t  j } t  j t  j ƒ  ƒ ^ | j | j ƒ st	 ‚ t | j t  j t j d ƒ d ƒ | j | j t j d ƒ ƒ ƒ Wd QX| | } t
 | t | ƒ ƒ sˆt	 ‚ | t  j k st	 ‚ | | j } t
 | t | ƒ ƒ sÆt	 ‚ | t  j k sÛt	 ‚ t j t ƒ  | t ƒ  Wd QXt j t ƒ  t d ƒ | Wd QXt j t ƒ  | g  Wd QXt j t ƒ  d | Wd QXd S(   u­   Check that multiplication/division with other units is only
        possible when the physical unit is dimensionless, and that this
        turns the unit into a normal one.Ng      @g      Y@i   (   R   R   RI   R!   R"   RY   R'   R^   R   R   R   t   typeR   t   set_enabled_equivalenciest   logarithmicR   R   R7   RV   R   R@   t   arangeR#   t   objectt   slicet   None(	   R   R   t   unitR(   t   tft   trt   tt   t2t   t3(    (    sC   lib/python2.7/site-packages/astropy/units/tests/test_logarithmic.pyt   test_multiplication_divisionð   sV    % "%
u   poweri   g      à?i   i    c         C` s–  t  j t  j ƒ } | d k r: | | t  j k s€ t ‚ nF | d k r_ | | | k s€ t ‚ n! t j t  j ƒ  | | Wd QXt  j t  j ƒ } | | } | d k rÀ | t  j k s’t ‚ nÒ | d k rá | | k s’t ‚ n± t | t	 | ƒ ƒ sý t ‚ | | j
 | k st ‚ | d | } | | j
 k s9t ‚ t  j t  j ƒ  ƒ B t | j t  j t j d ƒ ƒ | j | j t j d ƒ ƒ ƒ Wd QXd S(   uÛ   Check that raising LogUnits to some power is only possible when the
        physical unit is dimensionless, and that conversion is turned off when
        the resulting logarithmic unit (such as mag**2) is incompatible.i    i   Ng      ð?g      @(   R   R   RI   R^   R   R!   R"   RY   R   Rr   R   Rs   Rt   R   R   R@   Ru   R   (   R   t   powerR   R(   R|   R}   (    (    sC   lib/python2.7/site-packages/astropy/units/tests/test_logarithmic.pyt   test_raise_to_power1  s(    
u   otherc         C` sy   t  j t  j ƒ } t j t  j ƒ  | | Wd  QXt j t  j ƒ  | | Wd  QXt j t  j ƒ  | | Wd  QXd  S(   N(   R   R   RI   R!   R"   RY   (   R   t   otherR   (    (    sC   lib/python2.7/site-packages/astropy/units/tests/test_logarithmic.pyt/   test_addition_subtraction_to_normal_units_failsR  s    c      	   C` s[   t  j t  j ƒ } t j t ƒ  | d Wd  QXt j t ƒ  | d d d g Wd  QXd  S(   Ng      ð?g       @g      @(   R   R   RI   R!   R"   R#   (   R   R   (    (    sC   lib/python2.7/site-packages/astropy/units/tests/test_logarithmic.pyt,   test_addition_subtraction_to_non_units_fails^  s
    u    g       @c         C` sÃ   t  j t  j ƒ } t | d t  j ƒ } | | } | j | j | ƒ sM t ‚ | | } | j | j | ƒ ss t ‚ | | } | j | j | ƒ s™ t ‚ | | } | j | | j ƒ s¿ t ‚ d S(   u.   Check physical units are changed appropriatelyu   physical_unitN(   R   R   RI   t   getattrR^   RV   R   R   (   R   R‚   R   t   other_put   lu_sft   lu_srt   lu_dft   lu_dr(    (    sC   lib/python2.7/site-packages/astropy/units/tests/test_logarithmic.pyt   test_addition_subtractionf  s    



c         C` sr   t  j d d d t j d t  j d ƒ } t  j | ƒ } t  j | } | j t  j t  j	 t  j
 ƒ sn t ‚ d S(   u?   for fun, a more complicated example of addition and subtractionu   DMg      ð?g      @g      $@i   N(   R   R&   R@   RA   RB   R   R4   RV   R6   R8   R9   R   (   R   t   dm0t   lu_dmt   lu_absST(    (    sC   lib/python2.7/site-packages/astropy/units/tests/test_logarithmic.pyt%   test_complicated_addition_subtractionz  s    ,c         C` s‰   t  j t  j ƒ } | } | | k s+ t ‚ | j t  j d k sG t ‚ | | k sZ t ‚ | 
} | | k	 ss t ‚ | | k s… t ‚ d  S(   Niÿÿÿÿ(   R   R   RI   R   R   (   R   R   t   neg_lut   pos_lu(    (    sC   lib/python2.7/site-packages/astropy/units/tests/test_logarithmic.pyt   test_neg_pos  s    (   i   g      à?i   i    (   R*   R+   R   R!   R,   R-   R   R2   Rƒ   R„   R   R   RI   R'   R&   RP   R‹   R   R’   (    (    (    sC   lib/python2.7/site-packages/astropy/units/tests/test_logarithmic.pyRq   ï   s   	A!		0;	c          C` sQ   t  j t  j t  j d ƒ }  t j |  ƒ } t j | ƒ } |  | k sM t ‚ d  S(   Ni   (   R   R   R7   R8   t   picklet   dumpst   loadsR   (   R   R8   R(   (    (    sC   lib/python2.7/site-packages/astropy/units/tests/test_logarithmic.pyt   test_pickleŒ  s    c          C` s   t  j t  j ƒ }  t  j t  j ƒ } t  j t  j ƒ } t |  ƒ t | ƒ k sT t ‚ t |  ƒ t | ƒ k sr t ‚ |  | | h } t | ƒ d k s™ t ‚ d  S(   Ni   (   R   R   t   mWR'   t   hashR   t   len(   R   R(   RJ   t   luset(    (    sC   lib/python2.7/site-packages/astropy/units/tests/test_logarithmic.pyt   test_hashable“  s    t   TestLogQuantityCreationc           B` sp  e  Z e j j d  e e e j g e	 e j
 g ƒ ƒ d „  ƒ Z e j j d e j e e ƒ ƒ d „  ƒ Z e j j d e j e j ƒ  e j e j ƒ e j e j ƒ e j d e j ƒ e j d d e j ƒ e j e j d e j ƒ e j e j d	 e j ƒ f ƒ d
 „  ƒ Z e j j d d e j e j ƒ d f d e j e j ƒ d f d e j e j e j d e j ƒ e j e j ƒ f d e j e j e j d e j ƒ e j e j ƒ f f ƒ d „  ƒ Z e j j d e j ƒ  e j e j ƒ e j e j ƒ e j d d e j ƒ e j e j d e j ƒ e j e j d	 e j ƒ f ƒ d „  ƒ Z d „  Z d „  Z RS(   u   lq, luc         C` s=   | j  | k s t ‚ t | ƒ  j d ƒ ƒ | k s9 t ‚ d S(   u5   Check logarithmic quantities are all set up correctlyg      ð?N(   t   _unit_classR   Rr   t   _quantity_class(   R   t   lqR   (    (    sC   lib/python2.7/site-packages/astropy/units/tests/test_logarithmic.pyt   test_logarithmic_quantitiesŸ  s    u   lq_cls, physical_unitc         C` s’   t  j d d ƒ } | | | ƒ } | j j | k s: t ‚ | j j | j j k sX t ‚ t | j j	 | ƒ t
 j t ƒ  | | | ƒ Wd QXd S(   ug   Create LogQuantity subclass objects for some physical units,
        and basic check on transformationsg      ð?g      $@N(   R@   Ru   Ry   R   R   R   R   R   R5   R[   R!   R"   R$   (   R   t   lq_clsR   R[   t   log_q(    (    sC   lib/python2.7/site-packages/astropy/units/tests/test_logarithmic.pyR)   ¦  s    u   uniti   u    g       @iÿÿÿÿg       Àc         C` sa   t  j d | ƒ } | j j t | d | ƒ k s6 t ‚ | j j t | d t  j ƒ k s] t ‚ d  S(   Ng®Gáz®ó?u   function_unitu   physical_unit(   R   t	   MagnitudeRy   R   R…   R   R   R^   (   R   Ry   t   q(    (    sC   lib/python2.7/site-packages/astropy/units/tests/test_logarithmic.pyt   test_different_units³  s    $u   value, unitg      ð?c         C` sm   t  j | | ƒ } | | k s$ t ‚ | j j t  j k s? t ‚ | j j t | d | j j ƒ k si t ‚ d  S(   Nu   physical_unit(   R   R£   R   Ry   R   R   R   R…   (   R   R[   Ry   RŸ   (    (    sC   lib/python2.7/site-packages/astropy/units/tests/test_logarithmic.pyt   test_function_values½  s
    c         C` sö   d | } t  | t j ƒ s" t ‚ | j d k s7 t ‚ | j | k sL t ‚ d | j } | | } | j | k sx t ‚ | j j | j k s“ t ‚ | j | j ƒ d k s± t ‚ | j t j	 j d ƒ d k sÖ t ‚ | d } | | k sò t ‚ d  S(   Ng      @g      Y@i   g      Àgš™™™™™Ù?(
   R   R   R£   R   R[   Ry   R   t   to_valuet   _function_viewR   (   R   Ry   t   q1t   pvt   q2t   q3(    (    sC   lib/python2.7/site-packages/astropy/units/tests/test_logarithmic.pyt   test_indirect_creationÉ  s    

%
c         C` s»   d d g t  j t  j d } t j t ƒ  | j t  j ƒ Wd  QXd d g t  j } | j t  j ƒ } t	 | t  j ƒ s t
 ‚ | j j t  j k sœ t
 ‚ t j | | k ƒ s· t
 ‚ d  S(   Ng      Y@g     @@i   g       @g      @(   R   R7   R8   R!   R"   R#   t   viewt   DexR   R   R   Ry   R   R^   R@   t   all(   R   R¤   RŸ   (    (    sC   lib/python2.7/site-packages/astropy/units/tests/test_logarithmic.pyt   test_from_viewÚ  s    c         C` sr   t  j t  j ƒ } t j t  j ƒ  t  j d | ƒ Wd QXt  j d | d t ƒ} t | ƒ | j	 k sn t
 ‚ d S(   u4   Check that we can use Quantity if we have subok=Trueg      ð?Nt   subok(   R   R   R9   R!   R"   t   UnitTypeErrort   Quantityt   TrueRr   Rž   R   (   R   R   R¤   (    (    sC   lib/python2.7/site-packages/astropy/units/tests/test_logarithmic.pyt   test_using_quantity_classç  s
    N(   R*   R+   R!   R,   R-   R   t   lq_subclassesR   t   LogQuantityR/   R3   R    R0   R1   R2   R)   R   RI   R'   R&   RP   R¥   Rx   R   t   WR;   R¦   R­   R±   R¶   (    (    (    sC   lib/python2.7/site-packages/astropy/units/tests/test_logarithmic.pyRœ     s$   	0)D7I	@D	c          C` s  d d d g t  j }  |  j } | j t  j ƒ } t | t  j ƒ sI t ‚ | j |  j k sa t ‚ t | j	 |  j	 ƒ d d d g t  j
 } |  j t  j d t  j | ƒ ƒ} | j t  j t  j | ƒ ƒ } t | t  j ƒ sá t ‚ | j |  j k sù t ‚ t | j	 |  j	 ƒ d S(	   u/   Ensures we can convert from regular quantities.g      $@g      (@g      ,@gÍÌÌÌÌ\³@gÍÌÌÌŒ_³@gÍÌÌÌLb³@t   equivalenciesN(   R   R4   R5   R   R   R£   R   Ry   R   R[   R9   RI   t   spectral_density(   t   mstt   flux_lambdat   mst_roundtript   wavet   flux_nut   mst_roundtrip2(    (    sC   lib/python2.7/site-packages/astropy/units/tests/test_logarithmic.pyt/   test_conversion_to_and_from_physical_quantitiesñ  s    	!c          C` sÝ   d t  j t  j ƒ }  |  j ƒ  |  k s. t ‚ |  j ƒ  j j j t  j t  j	 g k s[ t ‚ |  j
 |  k sp t ‚ |  j
 j j j t  j t  j	 g k sš t ‚ |  j |  k s¯ t ‚ |  j j j j t  j t  j	 g k sÙ t ‚ d  S(   Ng      $@(   R   R   RI   Rk   R   Ry   R   Rl   Rm   R8   Rb   Rn   RX   (   RŸ   (    (    sC   lib/python2.7/site-packages/astropy/units/tests/test_logarithmic.pyt   test_quantity_decomposition  s    -*t   TestLogQuantityViewsc           B` s,   e  Z d  „  Z d „  Z d „  Z d „  Z RS(   c         C` sA   t  j t j d ƒ t  j ƒ |  _ t  j t j d ƒ ƒ |  _ d  S(   Ng      $@g      @(   R   R£   R@   Ru   RI   RŸ   t   lq2(   R   (    (    sC   lib/python2.7/site-packages/astropy/units/tests/test_logarithmic.pyt   setup  s    "c         C` sV   |  j  j } t | ƒ t j k s' t ‚ d | d <t j |  j  j | k ƒ sR t ‚ d  S(   Ng      ð¿i   (   RŸ   R[   Rr   R@   t   ndarrayR   R°   (   R   t   lq_value(    (    sC   lib/python2.7/site-packages/astropy/units/tests/test_logarithmic.pyt   test_value_view  s    
c         C` s~   |  j  j } t | ƒ t j k s' t ‚ | j |  j  j j k sE t ‚ d | j | d <t j	 |  j  j
 | j
 k ƒ sz t ‚ d  S(   Ng       Ài   (   RŸ   R¨   Rr   R   R´   R   Ry   R   R@   R°   R[   (   R   t   lq_fv(    (    sC   lib/python2.7/site-packages/astropy/units/tests/test_logarithmic.pyt   test_function_view  s
    c         C` sç   t  j t ƒ  |  j j t j ƒ Wd  QX|  j j t j ƒ } | j t j	 k sV t
 ‚ t j | j |  j j k ƒ sz t
 ‚ | j t j ƒ } t | j ƒ t j k sª t
 ‚ | j j t j k sÅ t
 ‚ t j | |  j k ƒ sã t
 ‚ d  S(   N(   R!   R"   R#   RŸ   R®   R   R´   RÅ   Ry   R   R   R@   R°   R[   R£   Rr   RP   R   R^   (   R   R«   t   lq3(    (    sC   lib/python2.7/site-packages/astropy/units/tests/test_logarithmic.pyt   test_quantity_view  s    $(   R*   R+   RÆ   RÉ   RË   RÍ   (    (    (    sC   lib/python2.7/site-packages/astropy/units/tests/test_logarithmic.pyRÄ     s   			t   TestLogQuantitySlicingc           B` s   e  Z d  „  Z d „  Z RS(   c      	   C` s0  t  j t j d d ƒ t  j ƒ } | d t  j d t  j ƒ k sH t ‚ d t  j | d <| d t  j d t  j ƒ k s t ‚ t j t  j ƒ  d t  j	 | d <Wd  QXt j t  j ƒ  d t  j
 | d <Wd  QXt j t  j ƒ  t  j d t  j	 ƒ | d <Wd  QX| d t  j d t  j ƒ k s,t ‚ d  S(   Ng      ð?g      &@i	   g      $@g      Y@i   (   R   R£   R@   Ru   RI   R   R!   R"   RY   R'   R   (   R   t   lq1(    (    sC   lib/python2.7/site-packages/astropy/units/tests/test_logarithmic.pyt   test_item_get_and_set-  s    "&& c      
   C` s+  t  j t j d d ƒ t  j ƒ } d t  j | d d +t j | d d !t  j d t  j ƒ k ƒ sh t ‚ t j t  j	 ƒ  d t  j
 | d d +Wd  QXt j t  j	 ƒ  d t  j | d d +Wd  QXt j t  j	 ƒ " t  j d t  j
 ƒ | d d +Wd  QXt j | d t  j d t  j ƒ k ƒ s't ‚ d  S(   Ng      ð?g      $@g      Y@i   i   (   R   R£   R@   Ru   RI   R°   R   R!   R"   RY   R'   R   (   R   RÏ   (    (    sC   lib/python2.7/site-packages/astropy/units/tests/test_logarithmic.pyt   test_slice_get_and_set:  s    "2#(   R*   R+   RÐ   RÑ   (    (    (    sC   lib/python2.7/site-packages/astropy/units/tests/test_logarithmic.pyRÎ   ,  s   	t   TestLogQuantityArithmeticc           B` s  e  Z d  „  Z e j j d d ƒ d „  ƒ Z d „  Z e j j d e ƒ d	 „  ƒ Z	 e j j d d
 e
 j d e
 j ƒ  e
 j d e
 j ƒ e
 j d e
 j ƒ d e
 j d e
 j ƒ e
 j d d e
 j ƒ f ƒ d „  ƒ Z e j j d e ƒ d „  ƒ Z e j j d d
 e
 j d e
 j ƒ  e
 j d e
 j ƒ e
 j d e
 j ƒ d e
 j d e
 j ƒ e
 j d d e
 j ƒ f ƒ d „  ƒ Z d „  Z RS(   c         C` s²  t  j t j d d ƒ t  j ƒ } t j t  j ƒ  | d t  j Wd QXt j t  j ƒ  d t  j | Wd QXt j t  j ƒ  | | Wd QXxA t  j t  j	 t  j
 f D]' } t j t  j ƒ  | | Wd QXq¬ Wt  j t j d d ƒ ƒ } t j t  j ƒ  | | Wd QXt j t  j ƒ  | | Wd QXt j t  j ƒ  | | Wd QX| t  j d ƒ } | j t  j k s€t ‚ t j | j | j d k ƒ s¥t ‚ | t  j } t  j | } xš | | f D]Œ } t | t | ƒ ƒ sît ‚ | j | j j t  j k st ‚ t  j t  j ƒ  ƒ 1 t j t  j ƒ  | j | j j ƒ Wd QXWd QXqÌW| d t  j } | j j | j j ƒ s‹t ‚ t | j | j j ƒ | j d ƒ d S(   u¹   Check that multiplication/division with other quantities is only
        possible when the physical unit is dimensionless, and that this turns
        the result into a normal quantity.g      ð?g      &@Ni   g       @g      I@i   (   R   R£   R@   Ru   RI   R!   R"   RY   R'   R   R   Ry   R^   R   R°   R[   R   Rr   R   Rs   Rt   R   R   R7   RV   R   R¨   (   R   RŸ   Ry   RÅ   t   rRz   R{   R|   (    (    sC   lib/python2.7/site-packages/astropy/units/tests/test_logarithmic.pyR   H  s>    "%"#u   poweri   g      à?i   i    c         C` s´  t  j t j d d ƒ t  j ƒ } | d k rP t j | | d k ƒ sŸ t ‚ nO | d k r~ t j | | | k ƒ sŸ t ‚ n! t j t  j	 ƒ  | | Wd QXt  j t j d ƒ ƒ } | | } | d k r| j
 t  j k så t ‚ t j | j d k ƒ s°t ‚ nª | d k r0t j | | k ƒ s°t ‚ n€ t | t | ƒ ƒ sLt ‚ | j
 | j
 j | k skt ‚ t  j t  j ƒ  ƒ . t j t  j	 ƒ  | j t  j ƒ Wd QXWd QXd S(   uÝ   Check that raising LogQuantities to some power is only possible when
        the physical unit is dimensionless, and that conversion is turned off
        when the resulting logarithmic unit (say, mag**2) is incompatible.g      ð?g      @i    i   Ng      $@(   R   R£   R@   Ru   RI   R°   R   R!   R"   RY   Ry   R^   R[   R   Rr   R   Rs   Rt   R   (   R   R€   RŸ   RÅ   R|   (    (    sC   lib/python2.7/site-packages/astropy/units/tests/test_logarithmic.pyR   z  s&    """
!c         C` sD   t  j t j d d ƒ t  j ƒ } t j t ƒ  | | Wd  QXd  S(   Ng      ð?g      @(   R   R£   R@   Ru   RI   R!   R"   R#   (   R   RŸ   (    (    sC   lib/python2.7/site-packages/astropy/units/tests/test_logarithmic.pyt   test_error_on_lq_as_powerš  s    "u   otherc         C` s“   t  j t j d d ƒ t  j ƒ } d | } t j t  j ƒ  | | Wd  QXt j t  j ƒ  | | Wd  QXt j t  j ƒ  | | Wd  QXd  S(   Ng      ð?g      $@g®Gáz®ó?(   R   R£   R@   Ru   RI   R!   R"   RY   (   R   R‚   RŸ   R¤   (    (    sC   lib/python2.7/site-packages/astropy/units/tests/test_logarithmic.pyRƒ   Ÿ  s    "
g®Gáz®ó?g¸…ëQ¸@gš™™™™™@g=
×£p=@g®Gáz®@g…ëQ¸@g       @c         C` s×   t  j t j d d ƒ t  j ƒ } | j t | j d t  j ƒ d t  j	 ƒ  ƒ} | | } t
 | j | j | ƒ | | } t
 | j | j | ƒ | | } t
 | j | j | ƒ | | } t
 | j | | j ƒ d S(   uœ   Check that addition/subtraction with quantities with magnitude or
        MagUnit units works, and that it changes the physical units
        appropriately.g      ð?g      $@u   physical_unitRº   N(   R   R£   R@   Ru   RI   R   R…   Ry   R^   Rt   R   R5   (   R   R‚   RŸ   t   other_physicalt   lq_sft   lq_srt   lq_dft   lq_dr(    (    sC   lib/python2.7/site-packages/astropy/units/tests/test_logarithmic.pyR‹   ¬  s    "



c         C` sø   t  j t  j ƒ } t  j t j d d ƒ | ƒ } t j t  j ƒ  | | 7} Wd  QXt j	 | j
 t j d d ƒ k ƒ s} t ‚ | j | k s’ t ‚ t j t  j ƒ  | | 8} Wd  QXt j	 | j
 t j d d ƒ k ƒ sß t ‚ | j | k sô t ‚ d  S(   Ng      ð?g      $@(   R   R   RI   R£   R@   Ru   R!   R"   RY   R°   R[   R   Ry   (   R   R‚   R   RÏ   (    (    sC   lib/python2.7/site-packages/astropy/units/tests/test_logarithmic.pyt-   test_inplace_addition_subtraction_unit_checksÅ  s    **c         C` s­   t  j t j d d ƒ t  j ƒ } | j t | j d t  j ƒ d t  j	 ƒ  ƒ} | j
 ƒ  } | | 7} t | j | j | ƒ | j
 ƒ  } | | 8} t | j | j | ƒ d S(   u¤   Check that inplace addition/subtraction with quantities with
        magnitude or MagUnit units works, and that it changes the physical
        units appropriately.g      ð?g      $@u   physical_unitRº   N(   R   R£   R@   Ru   RI   R   R…   Ry   R^   Rt   t   copyR   R5   (   R   R‚   RŸ   RÕ   RÖ   RØ   (    (    sC   lib/python2.7/site-packages/astropy/units/tests/test_logarithmic.pyt!   test_inplace_addition_subtractionÕ  s    "

c         C` sÌ   t  j d d d t j d t  j d ƒ } t  j | ƒ } d t  j } d | } | | } | j j t  j	 t  j
 t  j ƒ s… t ‚ t j | j | j d t j d t  j d d ƒ d k  sÈ t ‚ d	 S(
   u@   For fun, a more complicated example of addition and subtraction.u   DMg      ð?g      @g      $@i   g      @g      Y@gVçž¯Ò<N(   R   R&   R@   RA   RB   R   R4   Ry   RV   R6   R8   R9   R   t   absR5   (   R   RŒ   t   DMmagt   m_stt   dmt   M_st(    (    sC   lib/python2.7/site-packages/astropy/units/tests/test_logarithmic.pyR   é  s    ,

)(   i   g      à?i   i    (   R*   R+   R   R!   R,   R-   R   RÔ   R2   Rƒ   R   R   R£   RI   R'   R&   R‹   RÚ   RÜ   R   (    (    (    sC   lib/python2.7/site-packages/astropy/units/tests/test_logarithmic.pyRÒ   G  s   	2 		&?	&?t   TestLogQuantityComparisonsc           B` s   e  Z d  „  Z d „  Z RS(   c         C` sw   t  j t j d d ƒ t  j ƒ } t j sN t j t	 ƒ  | d k Wd  QXn  | d k sa t
 ‚ | d k ss t
 ‚ d  S(   Ng      ð?g      $@u   a(   R   R£   R@   Ru   RI   R   t   PY2R!   R"   R#   R   (   R   RŸ   (    (    sC   lib/python2.7/site-packages/astropy/units/tests/test_logarithmic.pyt'   test_comparison_to_non_quantities_failsö  s    "	c      
   C` s¶  t  j t j d d ƒ t  j ƒ } t  j d t  j ƒ } t j | | k t j t t t g ƒ k ƒ sk t	 ‚ t j | | k t j t t t g ƒ k ƒ sž t	 ‚ t  j
 d t  j ƒ } t j | | k t j t t t g ƒ k ƒ sç t	 ‚ t j | | k t j t t t g ƒ k ƒ st	 ‚ t  j d t  j ƒ } | | k sCt	 ‚ | | k sUt	 ‚ t j t  j ƒ  | | k  Wd  QXd t  j } t j | | k t j t t t g ƒ k ƒ s¸t	 ‚ t j | | k  t j t t t g ƒ k ƒ sët	 ‚ t j t  j ƒ  | d t  j k Wd  QXt j t  j ƒ  | | j t  j k Wd  QXt  j t j d d ƒ ƒ } | j t  j } t j | | k ƒ sˆt	 ‚ t j t  j ƒ  | d t  j k  Wd  QXd  S(   Ng      ð?g      @g       @g      ø?(   R   R£   R@   Ru   RI   R°   t   arrayRµ   t   FalseR   R¯   R'   R!   R"   RY   R[   R   (   R   RÏ   RÅ   RÌ   t   lq4t   q5t   lq6t   fv6(    (    sC   lib/python2.7/site-packages/astropy/units/tests/test_logarithmic.pyt   test_comparison  s0    "333333(   R*   R+   Rä   Rë   (    (    (    sC   lib/python2.7/site-packages/astropy/units/tests/test_logarithmic.pyRâ   õ  s   	t   TestLogQuantityMethodsc           B` s}   e  Z d  „  Z e j j d d ƒ d „  ƒ Z d „  Z e j j d d ƒ d „  ƒ Z d „  Z	 e j j d d ƒ d „  ƒ Z
 RS(   c         C` sx   t  j d d ƒ j d d ƒ t j t j ƒ |  _ t  j d d d ƒ j d d ƒ t j ƒ  |  _ |  j |  j f |  _ d  S(   Ng      ð?g      @i   g      @g      à?i   (	   R@   Ru   t   reshapeR   R   RI   t   mJyt   m1t   mags(   R   (    (    sC   lib/python2.7/site-packages/astropy/units/tests/test_logarithmic.pyRÆ     s    1.u   methodu   meanu   minu   maxu   roundu   traceu   stdu   varu   ptpu   diffu   ediff1dc         C` sÇ   xÀ |  j  D]µ } t | | ƒ ƒ  } t j | j t | j | ƒ ƒ  j k ƒ sR t ‚ | d k r| | j t j	 ƒ  k s¿ t ‚ q
 | d k r§ | j t j	 d k s¿ t ‚ q
 | j | j k s
 t ‚ q
 Wd  S(   Nu   stdu   ptpu   diffu   ediff1du   vari   (   u   stdu   ptpu   diffu   ediff1d(
   Rð   R…   R@   R°   R[   R¨   R   Ry   R   R   (   R   t   methodR   t   res(    (    sC   lib/python2.7/site-packages/astropy/units/tests/test_logarithmic.pyt   test_always_ok$  s    $c         C` s_   xX |  j  D]M } t j | j d | j d | j ƒ j | j j d d ƒ k ƒ s
 t ‚ q
 Wd  S(   Ng       @g      @(   Rð   R@   R°   t   clipRy   R[   R   (   R   R   (    (    sC   lib/python2.7/site-packages/astropy/units/tests/test_logarithmic.pyt	   test_clip2  s    &u   sumu   cumsumu   nansumc         C` s   t  |  j | ƒ ƒ  } t j | j t  |  j j | ƒ ƒ  j k ƒ sH t ‚ | j |  j j k sc t ‚ t j	 t
 ƒ  t  |  j | ƒ ƒ  Wd  QXd  S(   N(   R…   Rï   R@   R°   R[   R¨   R   Ry   R!   R"   R#   Rî   (   R   Rñ   Rò   (    (    sC   lib/python2.7/site-packages/astropy/units/tests/test_logarithmic.pyt   test_only_ok_if_dimensionless7  s    'c         C` sF   t  j |  j j |  j ƒ j |  j j j |  j j ƒ k ƒ sB t ‚ d  S(   N(   R@   R°   Rï   t   dotR[   R   (   R   (    (    sC   lib/python2.7/site-packages/astropy/units/tests/test_logarithmic.pyt   test_dot@  s    u   produ   cumprodc         C` sV   t  j t ƒ  t |  j | ƒ ƒ  Wd  QXt  j t ƒ  t |  j | ƒ ƒ  Wd  QXd  S(   N(   R!   R"   R$   R…   Rî   Rï   (   R   Rñ   (    (    sC   lib/python2.7/site-packages/astropy/units/tests/test_logarithmic.pyt   test_never_okD  s    (
   u   meanu   minu   maxu   roundu   traceu   stdu   varu   ptpu   diffu   ediff1d(   u   sumu   cumsumu   nansum(   u   produ   cumprod(   R*   R+   RÆ   R!   R,   R-   Ró   Rõ   Rö   Rø   Rù   (    (    (    sC   lib/python2.7/site-packages/astropy/units/tests/test_logarithmic.pyRì     s   				t   TestLogQuantityUfuncsc           B` s)   e  Z d  Z d „  Z d „  Z d „  Z RS(   u   Spot checks on ufuncs.c         C` sx   t  j d d ƒ j d d ƒ t j t j ƒ |  _ t  j d d d ƒ j d d ƒ t j ƒ  |  _ |  j |  j f |  _ d  S(   Ng      ð?g      @i   g      @g      à?i   (	   R@   Ru   Rí   R   R   RI   Rî   Rï   Rð   (   R   (    (    sC   lib/python2.7/site-packages/astropy/units/tests/test_logarithmic.pyRÆ   P  s    1.c         C` så   t  j t  j |  j d ƒ d k ƒ s* t ‚ t  j t  j |  j d ƒ |  j k ƒ sW t ‚ t  j t  j |  j d ƒ |  j k ƒ s„ t ‚ t  j t  j |  j d ƒ |  j d k ƒ sµ t ‚ t j t j	 ƒ  t  j |  j d ƒ Wd  QXd  S(   Ng        g      ð?g       @i   (
   R@   R°   R€   Rî   R   Rï   R!   R"   R   RY   (   R   (    (    sC   lib/python2.7/site-packages/astropy/units/tests/test_logarithmic.pyt
   test_powerU  s    *--1c         C` s[   t  j t j ƒ  t j |  j ƒ Wd  QXt j t j |  j ƒ |  j d k ƒ sW t	 ‚ d  S(   Ni   (
   R!   R"   R   RY   R@   t   squareRî   R°   Rï   R   (   R   (    (    sC   lib/python2.7/site-packages/astropy/units/tests/test_logarithmic.pyt'   test_not_implemented_with_physical_unit]  s    (   R*   R+   t   __doc__RÆ   Rû   Rý   (    (    (    sC   lib/python2.7/site-packages/astropy/units/tests/test_logarithmic.pyRú   M  s   		(>   Rþ   t
   __future__R    R   R   R   t   externR   t   extern.six.movesR   R“   R0   R!   t   numpyR@   t   numpy.testingR   t   tests.helperR   t    R   R   R	   R=   R   R   t   decibelR.   t   DexUnitRP   t   DecibelUnitR/   R¯   R£   t   DecibelR·   R^   R'   RX   R8   RI   R2   Rv   R
   RC   RD   RH   RL   RM   RT   Rq   R–   R›   Rœ   RÂ   RÃ   RÄ   RÎ   RÒ   Râ   Rì   Rú   (    (    (    sC   lib/python2.7/site-packages/astropy/units/tests/test_logarithmic.pyt   <module>   sB   ")5	
				Z		
T		
 ®)/