ó
šßÈ[c           @` sß   d  Z  d d l m Z m Z m Z m 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 d	 l m Z d d
 l m Z d d l m Z d „  Z d „  Z d e f d „  ƒ  YZ d d d „  ƒ  YZ d S(   uA   
Tests that relate to evaluating models with quantity parameters
i    (   t   absolute_importt   unicode_literalst   divisiont   print_functionN(   t   assert_allclosei   (   t   Model(   t
   Gaussian1Di   (   t   units(   t
   UnitsError(   t   assert_quantity_allclosec       	   C` sS  t  d d d ƒ }  t  d t j d t j d t j ƒ } t | d t j ƒ |  d ƒ t j ƒ t j t ƒ  } | d ƒ Wd QX| j j	 d d k sž t
 ‚ t | d ƒ |  d ƒ t j ƒ t | d t j ƒ j |  d ƒ ƒ t j t ƒ  } | d t j ƒ Wd QX| j j	 d d	 k s&t
 ‚ t j t ƒ  } |  d t j ƒ Wd QXd S(
   un   
    Test evaluation of a single model with Quantity parameters that do
    not explicitly require units.
    i   gš™™™™™¹?Ni    ua   Units of input 'x', (dimensionless), could not be converted to required input units of m (length)gü©ñÒMb@?g      à?i   uZ   Units of input 'x', s (time), could not be converted to required input units of m (length)(   R   t   ut   Jt   mR	   t   pytestt   raisesR   t   valuet   argst   AssertionErrorR   t   kmt   s(   t   gt   gqt   exc(    (    sP   lib/python2.7/site-packages/astropy/modeling/tests/test_quantities_evaluation.pyt   test_evaluate_with_quantities   s    	'' #c          C` sª   t  d t j d t j d t j ƒ }  t j t ƒ  } |  d t j ƒ Wd QX| j j	 d d k sl t
 ‚ t |  d t j d i t j ƒ  d	 6ƒ|  d
 t j ƒ ƒ d S(   uN   
    We now make sure that equivalencies are correctly taken into account
    i   i
   i   i   Ni    ub   Units of input 'x', PHz (frequency), could not be converted to required input units of nm (length)t   equivalenciesu   xgŠÔ3<uü#@(   R   R
   t   Jyt   nmR   R   R   t   PHzR   R   R   R	   t   spectral(   R   R   (    (    sP   lib/python2.7/site-packages/astropy/modeling/tests/test_quantities_evaluation.pyt/   test_evaluate_with_quantities_and_equivalenciesF   s    '&t   MyTestModelc           B` s   e  Z d Z d Z d „  Z RS(   u   au   bu   fc         C` s"   t  d | ƒ t  d | ƒ | | S(   Nu   au   b(   t   print(   t   selft   at   b(    (    sP   lib/python2.7/site-packages/astropy/modeling/tests/test_quantities_evaluation.pyt   evaluate]   s    (   u   au   b(   u   f(   t   __name__t
   __module__t   inputst   outputsR#   (    (    (    sP   lib/python2.7/site-packages/astropy/modeling/tests/test_quantities_evaluation.pyR   Y   s   t   TestInputUnitsc           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  ƒ  |  _ d  S(   N(   R   t   model(   R    t   method(    (    sP   lib/python2.7/site-packages/astropy/modeling/tests/test_quantities_evaluation.pyt   setup_methode   s    c         C` sk   t  |  j d d ƒ d ƒ t  |  j d t j d ƒ d t j ƒ t  |  j d t j d ƒ d t j ƒ d  S(   Ni   i   i   i   i   (   R	   R)   R
   R   t   deg(   R    (    (    sP   lib/python2.7/site-packages/astropy/modeling/tests/test_quantities_evaluation.pyt   test_evaluateh   s    'c         C` s,  i t  j d 6|  j _ t |  j d t  j d ƒ d t  j ƒ t |  j d t  j d ƒ d t  j ƒ t |  j d t  j d t  j ƒ d t  j t  j ƒ t j t	 ƒ  } |  j d t  j d ƒ Wd  QX| j
 j d d k sä t ‚ t j t	 ƒ  } |  j d d ƒ Wd  QX| j
 j d d	 k s(t ‚ d  S(
   Nu   ai   i   i   i   i   i    u[   Units of input 'a', s (time), could not be converted to required input units of deg (angle)ub   Units of input 'a', (dimensionless), could not be converted to required input units of deg (angle)(   R
   R,   R)   t   input_unitsR	   t   radR   R   R   R   R   R   R   (   R    R   (    (    sP   lib/python2.7/site-packages/astropy/modeling/tests/test_quantities_evaluation.pyt   test_input_unitsn   s    ''5c         C` sØ   i t  j d 6|  j _ t |  j _ t |  j d t  j d ƒ d t  j ƒ t |  j d t  j d ƒ d t  j ƒ t j	 t
 ƒ  } |  j d t  j d ƒ Wd  QX| j j d d k s» t ‚ t |  j d d ƒ d	 ƒ d  S(
   Nu   ai   i   i   i   i   i    u[   Units of input 'a', s (time), could not be converted to required input units of deg (angle)i	   (   R
   R,   R)   R.   t   Truet   input_units_allow_dimensionlessR	   R/   R   R   R   R   R   R   R   (   R    R   (    (    sP   lib/python2.7/site-packages/astropy/modeling/tests/test_quantities_evaluation.pyt$   test_input_units_allow_dimensionless€   s    ''c         C` s•   i t  j d 6|  j _ t |  j _ t |  j d t  j d ƒ d t  j ƒ |  j t j t  j	 d ƒ } t | d t  j ƒ | j
 t  j k s‘ t ‚ d  S(   Nu   ai   i   i   i   ih  (   R
   R,   R)   R.   R1   t   input_units_strictR	   t   npt   piR/   t   unitR   (   R    t   result(    (    sP   lib/python2.7/site-packages/astropy/modeling/tests/test_quantities_evaluation.pyt   test_input_units_strict   s    'c         C` sÁ   i t  j d 6|  j _ t j t ƒ  } |  j d t  j d ƒ Wd  QX| j j	 d d k sa t
 ‚ i t  j ƒ  d 6|  j _ t |  j d t  j d ƒ d d t  j j t  j d t  j ƒ  ƒƒ d  S(   Nu   ai   i    uf   Units of input 'a', PHz (frequency), could not be converted to required input units of micron (length)R   (   R
   t   micronR)   R.   R   R   R   R   R   R   R   R   t   input_units_equivalenciesR	   t   to(   R    R   (    (    sP   lib/python2.7/site-packages/astropy/modeling/tests/test_quantities_evaluation.pyt   test_input_units_equivalenciesš   s    c         C` su   i t  j d 6|  j _ i t  j d 6|  j _ |  j d t  j d ƒ } t | d t  j ƒ | j t  j k sq t ‚ d  S(   Nu   au   fi   i   i   (	   R
   R,   R)   R.   R/   t   return_unitsR	   R7   R   (   R    R8   (    (    sP   lib/python2.7/site-packages/astropy/modeling/tests/test_quantities_evaluation.pyt   test_return_units©   s
    c         C` sn   i t  j d 6|  j _ t  j |  j _ |  j d t  j d ƒ } t | d t  j ƒ | j t  j k sj t ‚ d  S(   Nu   ai   i   i   (	   R
   R,   R)   R.   R/   R>   R	   R7   R   (   R    R8   (    (    sP   lib/python2.7/site-packages/astropy/modeling/tests/test_quantities_evaluation.pyt   test_return_units_scalar³   s
    (
   R$   R%   R+   R-   R0   R3   R9   R=   R?   R@   (    (    (    sP   lib/python2.7/site-packages/astropy/modeling/tests/test_quantities_evaluation.pyR(   c   s   							
(    (   t   __doc__t
   __future__R    R   R   R   t   numpyR5   R   t   numpy.testingR   t   coreR   t   modelsR   t    R   R
   R   t   tests.helperR	   R   R   R   R(   (    (    (    sP   lib/python2.7/site-packages/astropy/modeling/tests/test_quantities_evaluation.pyt   <module>   s   "	+	
