
    IR-e,                         d Z ddlZddlZddlmZ  e            fdZd Z	 G d d          Z
 G d d	          Z G d
 d          ZdS )z;Test the propagation of info on Quantity during operations.    N)unitsc                     | j         }|j         }|j        |j        z  |z
  D ]P}|dk    r"|j                            |j                  sJ *t	          ||d           t	          ||d           k    sJ Qd S )Nunit)info
attr_namesr   is_equivalentgetattr)abignorea_infob_infoattrs         Flib/python3.11/site-packages/astropy/units/tests/test_quantity_info.pyassert_info_equalr      s    VFVF"V%66&@ N N6>>;,,V[99999964..'&$2M2MMMMMM	N N    c                     d| j         vsJ d S )Nr   )__dict__)r
   s    r   assert_no_infor      s    ######r   c                   f    e Zd Zed             Zd Zd Zd Zd Zd Z	d Z
d Zd	 Zd
 Zd Zd ZdS )TestQuantityInfoc                     t          j        t          j        dd          d          | _        d| j        j        _        d| j        j        _        d S )N      ?g      @zm/svzair speed of a african swallow)uQuantitynparangeqr   namedescriptionselfs    r   setup_classzTestQuantityInfo.setup_class   s?    BIc3//77"Br   c                    | j                                         }t          || j                    t          j        | j                   }t          || j                    t          j        | j                   }t          || j                    d S N)r   copyr   deepcopy)r#   q_copy1q_copy2q_copy3s       r   	test_copyzTestQuantityInfo.test_copy    so    &++--'46***)DF##'46***-'''46*****r   c                     | j         dd         }t          || j                    | j                             ddg          }t          || j                    d S )N      r   )r   r   take)r#   q_sliceq_takes      r   
test_slicezTestQuantityInfo.test_slice(   sR    &1+'46***aV$$&$&)))))r   c                     | j         d         }t          |           | j                             d          }t          |           d S Nr.   )r   r   item)r#   q1q_items      r   	test_itemzTestQuantityInfo.test_item.   s@    VAYrQvr   c                     | j         D ]}t          |           t          | j                   D ]}t          |           d S r&   )r   r   iterr#   r   s     r   	test_iterzTestQuantityInfo.test_iter5   sV     	 	A1df 	 	A1	 	r   c                 r   | j                             t          j        t          j        z            }t          || j                    | j         j        }t          || j                    | j         j        }t          || j                    | j                                         }t          || j                    d S r&   )	r   tor   kmhrr   sicgs	decompose)r#   r7   q2q3q4s        r   test_change_to_equivalent_unitz/TestQuantityInfo.test_change_to_equivalent_unit<   s    VYYqtad{##"df%%%VY"df%%%VZ"df%%%V"df%%%%%r   c                     | j                             ddd          }t          || j                    |                                }t          || j                    d S )Nr.      )r   reshaper   squeezer#   r   rE   s      r   test_reshapezTestQuantityInfo.test_reshapeF   sP    FNN2q!$$!TV$$$YY[["df%%%%%r   c                     | j                                         }|                    ddt          j        z  t          j        z             t          || j                    d S r5   )r   r'   insertr   cmrA   r   r<   s     r   test_insertzTestQuantityInfo.test_insertL   sI    FKKMM	AHqtO$$$!TV$$$$$r   c                 4    | j          }t          |           d S r&   r   r   r<   s     r   test_unary_opzTestQuantityInfo.test_unary_opQ   s    VGqr   c                 B    | j         | j         z   }t          |           d S r&   rU   r<   s     r   test_binary_opzTestQuantityInfo.test_binary_opU   s#    FTVOqr   c                     | j         t          j        z  }t          |           t          j        | j         z  }t          |           d S r&   )r   r   sr   rN   s      r   test_unit_changez!TestQuantityInfo.test_unit_changeY   s>    FQSLqS46\qr   c                     | j                                         }|t          j        z  }t	          || j         dh           d S )Nr   )r   )r   r'   r   rZ   r   r<   s     r   test_inplace_unit_changez)TestQuantityInfo.test_inplace_unit_change_   s;    FKKMM	QS!TVVH555555r   N)__name__
__module____qualname__classmethodr$   r,   r3   r9   r=   rH   rO   rS   rV   rX   r[   r]    r   r   r   r      s        C C [C
+ + +* * *    & & && & &% % %
      6 6 6 6 6r   r   c                   6    e Zd Zed             Zd Zd Zd ZdS )TestStructuredQuantityc                     t          j        ddgddg          }t          j        |d          | _        d| j        j        _        d| j        j        _        d S )	N)r   g       @)g      @g      @)pf8)r   rg   )dtypezm, m/spvzLocation and speed)r   arrayr   r   r   r   r    r!   )r#   values     r   r$   z"TestStructuredQuantity.setup_classg   sQ    *j1+{9STTTE8,,"6r   c                 >    | j         d         }t          |           d S )Nrf   rU   )r#   q_ps     r   test_keyingz"TestStructuredQuantity.test_keyingn   s!    fSksr   c                 N    | j         d d         }t          || j                    d S r5   )r   r   r<   s     r   test_slicingz#TestStructuredQuantity.test_slicingr   s)    F2A2J!TV$$$$$r   c                 >    | j         d         }t          |           d S r5   rU   r<   s     r   r9   z TestStructuredQuantity.test_itemv   s!    F1Iqr   N)r^   r_   r`   ra   r$   rn   rp   r9   rb   r   r   rd   rd   f   sZ        7 7 [7  % % %    r   rd   c                   :    e Zd ZdZed             Zd Zd Zd ZdS )TestQuantitySubclasszRegression test for gh-14514: _new_view should __array_finalize__.

    But info should be propagated only for slicing, etc.
    c                      G d dt           j                  } |ddgt           j        t           j        z            | _        d| j        _        | j                                        | _        d| j        j        _	        d S )Nc                        e Zd Z fdZ xZS )4TestQuantitySubclass.setup_class.<locals>.MyQuantityc                     t                                          |           t          |d          r|j        | _        d S d S Nswallow)super__array_finalize__hasattrry   )r#   obj	__class__s     r   r{   zGTestQuantitySubclass.setup_class.<locals>.MyQuantity.__array_finalize__   sD    **3///3	** /#&;DLLL/ /r   )r^   r_   r`   r{   __classcell__)r~   s   @r   
MyQuantityrv      s8        / / / / / / / / /r   r   g      $@g      4@Africanry   )
r   r   mrZ   my_qry   r'   my_q_w_infor   r    )r#   r   s     r   r$   z TestQuantitySubclass.setup_class   s    	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ Jd|QS13Y77	%	9>>++%."""r   c                     t          | j                   | j        j        | j        j        k    sJ | j        j        j        dk    sJ d S rx   )r   r   r   ry   r   r    r"   s    r   
test_setupzTestQuantitySubclass.test_setup   sN    ty!!!'49+<<<<<$)Y666666r   c                     | j         d d         }|j        | j         j        k    sJ t          |           | j        dd          }|j        | j         j        k    sJ t	          || j                   d S r5   )r   ry   r   r   r   )r#   slc1slc2s      r   r3   zTestQuantitySubclass.test_slice   sy    y!}|ty00000t#|ty00000$ 011111r   c                     | j         dz  }|j        | j         j        k    sJ t          |           | j        dz  }|j        | j         j        k    sJ t          |           d S )NrK   )r   ry   r   r   )r#   square1square2s      r   test_opzTestQuantitySubclass.test_op   sl    )Q,$)"33333w"A%$)"33333wr   N)	r^   r_   r`   __doc__ra   r$   r   r3   r   rb   r   r   rs   rs   |   sf         
 
/ 
/ [
/7 7 7
2 2 2         r   rs   )r   r'   numpyr   astropyr   r   setr   r   r   rd   rs   rb   r   r   <module>r      s    A A            $'355 N N N N$ $ $J6 J6 J6 J6 J6 J6 J6 J6Z       ,&  &  &  &  &  &  &  &  &  & r   