U
    yh&                     @   s<  d dl Z d dlZd dlZd dlmZmZmZmZm	Z	 dZ
e e
je eje eje ejde jZe e
je eje eje ejde jZdZddZejddd	d
ieddddfdd	dieddddfgdd Zejddi eddddfdi eddddfgdd Zejdeddeddd fi ed!d"d#dfed$dd%ed$dd%d fi ed&d'dd(feddedd)d fi ed*d+d dfd,i edd-ddfeddeddd fi ed!d"d#dfed$dd%ed$dd%d fi ed&d'dd(fed$dd%ed$d.d%d fi ed/d0d d1fed$d2d%ed$d)d%d fd3d4ied5d6d7fed$d2d%ed$d)d%d fd3d8ied9d:dd;fg	d<d= Zejjd>eefeefgd?d@gdAejdBdCd4d dDdEgfdCdFd5dGdHgfdCdId dDdEgfdCdJdKdLdMgfdCdNd/dOdPgfdCddQdRdSgfdCdTdUdVdWgfgdXdY ZdS )[    N)FormatterDMSFormatterHMSselect_stepselect_step24select_step360a'  \$  # Mathtext
        (
            # The sign sometimes appears on a 0 when a fraction is shown.
            # Check later that there's only one.
            (?P<degree_sign>-)?
            (?P<degree>[0-9.]+)  # Degrees value
            {degree}  # Degree symbol (to be replaced by format.)
        )?
        (
            (?(degree)\\,)  # Separator if degrees are also visible.
            (?P<minute_sign>-)?
            (?P<minute>[0-9.]+)  # Minutes value
            {minute}  # Minute symbol (to be replaced by format.)
        )?
        (
            (?(minute)\\,)  # Separator if minutes are also visible.
            (?P<second_sign>-)?
            (?P<second>[0-9.]+)  # Seconds value
            {second}  # Second symbol (to be replaced by format.)
        )?
        \$  # Mathtext
    degreeminutesecondc                 C   s   | |d  |d  S )N      N@      @ )degreesminutessecondsr   r   S/tmp/pip-unpacked-wheel-44jxpman/mpl_toolkits/axisartist/tests/test_angle_helper.py	dms2float,   s    r   z.args, kwargs, expected_levels, expected_factor)L   
   hourFr         g      ?)   r   Tr         c                 C   s>   t | |\}}}|t|ks ttj|| ||ks:td S N)r   lenAssertionErrornptestingassert_array_equalargskwargsZexpected_levelsZexpected_factorlevelsnfactorr   r   r   test_select_step0   s    r)   ii     r   c                 C   s>   t | |\}}}|t|ks ttj|| ||ks:td S r   )r   r   r   r    r!   r"   r#   r   r   r   test_select_step24<   s    r+      3333335@   fffff@@   i  i     g     4@)r   i\  ik  r   gfffffJ@i  i  )r-   r/   r0   #   gffffff5@ihp i}p g     Agffffff&@Zthreshold_factor<   i0  i0  g     @   iP  i%P  g     @@c                 C   s>   t | |\}}}|t|ks ttj|| ||ks:td S r   )r   r   r   r    r!   r"   r#   r   r   r   test_select_step360H   s    r5   zFormatter, regexzDegree/Minute/SecondzHour/Minute/Second)idszdirection, factor, valuesleftiiiX  i0  i0  i  i  iC iC iC i@~ imp irp -   .   /   g      $@i  i  i  c                    s2  |  }||||}d  } }}	t ||D ]\}
}||
  d k	sRt|
dt fdddD }|dkstd|
d|dkrdnd	}t d
p|pd}t dp|pd}t dp|	pd}| tkrt|d | }nt|| }|t	||| |ks t|
d|}|}|}	q(d S )Nz  is not an expected tick format.c                 3   s    | ]}  |d  dk	V  qdS )_signN)group).0signmr   r   	<genexpr>{   s   z"test_formatters.<locals>.<genexpr>r   r4   zOnly one element of tick z may have a sign.r   r   r	   r
   r1   z$ does not match expected tick value.)
zipmatchr   sumfloatr<   r   pytestZapproxr   )	Formatterregex	directionr(   valuesfmtresultZprev_degreeZprev_minuteZprev_secondZtickvaluer>   r   r	   r
   Zexpected_valuer   r?   r   test_formatterse   s.    
rO   )r   r   )reZnumpyr    rG   Z$mpl_toolkits.axisartist.angle_helperr   r   r   r   r   Z_MS_REcompileformatescapeZdeg_markZmin_markZsec_markVERBOSEZDMS_REZHMS_REr   markZparametrizeZaranger)   r+   r5   rO   r   r   r   r   <module>   s   






        
   
	