a
    ߙfb	                     @   s   d dl m Z  d dl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mZmZmZ i Zdd	 Zd
d ZG dd dZG dd deZdZdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd  Zd!d" ZdS )#    )copy)	MagicMockN)assert_equal)Table)ArrayWrapper)	_handlersregister_mixin_handlerMixinRegistryErrorget_mixin_handlerc                 C   s   t ttd< t  d S Nhandlers)r   r   ORIGINALclearZfunction r   Glib/python3.9/site-packages/astropy/table/mixins/tests/test_registry.pysetup_function   s    r   c                 C   s   t   t td  d S r   )r   r   updater   r   r   r   r   teardown_function   s    r   c                   @   s   e Zd ZdS )SpamDataN)__name__
__module____qualname__r   r   r   r   r      s   r   c                       s   e Zd Z fddZ  ZS )SpamWrapperc                    s   t  g d d S )Nr               )super__init__)self	__class__r   r   r       s    zSpamWrapper.__init__)r   r   r   r    __classcell__r   r   r"   r   r      s   r   z1astropy.table.mixins.tests.test_registry.SpamDatac                 C   s   t  S Nr   objr   r   r   handle_spam&   s    r)   c                 C   s   t  S r%   r&   r'   r   r   r   handle_spam_alt*   s    r*   c                  C   s   t  } t| d u sJ d S r%   )r   r
   )datar   r   r   test_no_handler.   s    r,   c                   C   s    t tt tt tu sJ d S r%   )r   FULL_QUALNAMEr)   r
   r   r   r   r   r   test_register_handler3   s    
r.   c                  C   sv   t tt tt} t tt W d    n1 s40    Y  | jjd dksRJ t ttdd t	t
 tu srJ d S )Nr   zVHandler for class astropy.table.mixins.tests.test_registry.SpamData is already definedT)Zforce)r   r-   r)   pytestraisesr	   r*   valueargsr
   r   )excr   r   r   test_register_handler_override8   s    
(r4   c                   C   s   t tt tttu sJ d S r%   )r   r-   r)   r
   r   r   r   r   test_get_mixin_handler_strA   s    
r5   c                  C   s   t  } tt t | d< W d    n1 s00    Y  ttt t | d< t| dks^J t	| d t
spJ t| d jg d d S )Nar   r   )r   r/   r0   	TypeErrorr   r   r-   r)   len
isinstancer   r   r+   )tr   r   r   test_add_columnG   s    (

r;   c                 C   s   dS )NZinvalidr   r'   r   r   r   invalid_handlerV   s    r<   c                  C   sd   t  } ttt tt}t | d< W d    n1 s:0    Y  |jj	d dt dks`J d S )Nr6   r   z!Mixin handler for object of type z$ did not return a valid mixin column)
r   r   r-   r<   r/   r0   r7   r   r1   r2   )r:   r3   r   r   r   test_invalid_handlerZ   s
    
(r=   ) r   Zunittest.mockr   r/   ZnumpyZnpZnumpy.testingr   Zastropy.tabler   Zastropy.table.table_helpersr   Zastropy.table.mixins.registryr   r   r	   r
   r   r   r   r   r   r-   r)   r*   r,   r.   r4   r5   r;   r<   r=   r   r   r   r   <module>   s,   	