U
    e»{j  ã                   @   sf   d dl Z d dlmZ d dlZd dlZd dlmZmZm	Z	m
Z
 dd„ Zdd„ Zdd	„ ZG d
d„ dƒZdS )é    N)Ú	Parameter)Ú_SpecialOperatorsDictÚ_validate_domain_windowÚget_inputs_and_paramsÚpoly_map_domainc               	   C   sÒ   t  ddddg¡} t| ddƒddd	dgk ¡ s2t‚d
}tjt|d�� t| ddƒ W 5 Q R X tjt|d�� t| ddƒ W 5 Q R X tjt|d�� t| ddƒ W 5 Q R X tjt|d�� t| ddƒ W 5 Q R X d S )Né   é   é   é   )éüÿÿÿr
   )éýÿÿÿr	   g      è?g      ø?g      @z6Expected "domain" and "window" to be a tuple of size 2©Úmatch)r   )r   r
   r   )r   )r   r	   r   )ÚnpÚarrayr   ÚallÚAssertionErrorÚpytestÚraisesÚ
ValueError)ZoldxÚMESSAGE© r   ú`/var/www/html/bwave/python/venv/lib/python3.8/site-packages/astropy/modeling/tests/test_utils.pyÚtest_poly_map_domain   s     r   c               	   C   s
  t d ƒd kst‚t dƒdks t‚t ddgƒdks4t‚t t ddg¡ƒdksNt‚d} tjt| d�� t dƒ W 5 Q R X tjt| d�� t dƒ W 5 Q R X tjt| d�� t dgƒ W 5 Q R X tjt| d�� t t dg¡ƒ W 5 Q R X tjt| d�� t dƒ W 5 Q R X d S )N)éþÿÿÿr   r   r   z,domain and window should be tuples of size 2r   )r   r   r   )r   )r   r   r   r   r   r   r   )r   r   r   r   Útest__validate_domain_window#   s    r   c            
   	   C   s4  ddd„} t | ƒ\}}t|ƒD ]J\}}t|tƒs4t‚|jd|› �ksHt‚|j|jksXt‚|jtj	kst‚qddg}t|ƒD ]L\}}t|tƒs�t‚|jd|› �ks¤t‚|j|jks´t‚|j|| kszt‚qzt
 d¡}dddœd	d
„}ddd„}	tjt|d�� t |ƒ W 5 Q R X tjt|d�� t |	ƒ W 5 Q R X d S )Né   é   c                 S   s   d S ©Nr   )Úinput0Úinput1Úparam0Úparam1r   r   r   Úfunc1<   s    z)test_get_inputs_and_params.<locals>.func1ÚinputÚparamz)Signature must not have *args or **kwargs)r!   r"   c                W   s   d S r   r   )r   r    r!   r"   Úargsr   r   r   Úfunc2O   s    z)test_get_inputs_and_params.<locals>.func2c                 [   s   d S r   r   )r   r    r!   r"   Úkwargsr   r   r   Úfunc3R   s    z)test_get_inputs_and_params.<locals>.func3r   )r   r   )r   r   )r   Ú	enumerateÚ
isinstancer   r   ÚnameÚkindÚPOSITIONAL_OR_KEYWORDÚdefaultÚemptyÚreÚescaper   r   r   )
r#   ÚinputsÚparamsÚindexÚ_inputr/   r%   r   r'   r)   r   r   r   Útest_get_inputs_and_params:   s(    


r7   c                   @   s4   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ ZdS )ÚTest_SpecialOperatorsDictc                 C   s   d| _ d| _d S )NÚtestÚvalue)ÚkeyÚval)Úselfr   r   r   Úsetup_method\   s    z&Test_SpecialOperatorsDict.setup_methodc              	   C   st   t ƒ }| j|kst‚| | j| j¡ | j|ks2t‚|| j | jksFt‚tjtdd�� | | j| j¡ W 5 Q R X d S )Nz&Special operator "test" already existsr   )r   r;   r   Z
_set_valuer<   r   r   r   ©r=   Úspecial_operatorsr   r   r   Útest__set_value`   s    z)Test_SpecialOperatorsDict.test__set_valuec              	   C   sZ   t ƒ }| j|kst‚t ¡ � | j|| j< W 5 Q R X | j|ksBt‚|| j | jksVt‚d S r   )r   r;   r   r   Zdeprecated_callr<   r?   r   r   r   Útest___setitem__k   s    
z*Test_SpecialOperatorsDict.test___setitem__c                 C   sr   t ƒ }|jdkst‚| ¡ dks$t‚|jdks2t‚| ¡ dksBt‚|jdksPt‚| ¡ dks`t‚|jdksnt‚d S )Nr   r   r   r	   )r   Ú
_unique_idr   Z_get_unique_idr?   r   r   r   Ú)test__SpecialOperatorsDict__get_unique_idt   s    zCTest_SpecialOperatorsDict.test__SpecialOperatorsDict__get_unique_idc                 C   s’   t ƒ }d}d}| ||¡}|||jfks,t‚||ks8t‚|| |ksHt‚| ||¡}|||jfksft‚||ksrt‚|| |ks‚t‚||ksŽt‚d S )Nr9   Úoperator)r   ÚaddrC   r   )r=   r@   Zoperator_namerE   Úkey0Úkey1r   r   r   Útest__SpecialOperatorsDict_add�   s    z8Test_SpecialOperatorsDict.test__SpecialOperatorsDict_addN)Ú__name__Ú
__module__Ú__qualname__r>   rA   rB   rD   rI   r   r   r   r   r8   [   s
   	r8   )r1   Úinspectr   Únumpyr   r   Zastropy.modeling.utilsr   r   r   r   r   r   r7   r8   r   r   r   r   Ú<module>   s   !