U
    \	a                     @   sJ  d dl mZ d dlZd dlZd dlZd dlZd dl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 G dd dZG dd dZG d	d
 d
ZG dd dZG dd dZG dd dZG dd dZG dd dZG dd dZG dd dZG dd dZG dd dZG dd dZ G dd  d Z!G d!d" d"Z"G d#d$ d$Z#G d%d& d&Z$G d'd( d(Z%G d)d* d*Z&G d+d, d,Z'G d-d. d.Z(G d/d0 d0Z)d1d2 Z*G d3d4 d4Z+d5d6 Z,d7d8 Z-d9d: Z.d;d< Z/d=d> Z0e
j12d?d@dAdB Z3e
j12dCdDdEge4dFgdGdH Z5e
j12dIdJdKdLdMge
j16dNdOdP Z7dS )Q    )nullcontextN)assert_almost_equalassert_array_equal)_apic                   @   s  e Zd Zddedddddgfdd	ed
dddddgfddeddd
ddgfddedd fddeddd fgZdddeddddgfddded dd!d"d#d$gfdd%dd&d'dd(gedd)d*d+d,gfgZej	
d-ed.d/ Zej	
d0ed1d2 ZdS )3TestMaxNLocator   d         4@g      D@g      N@g      T@      Y@MbP?-C6?        g-C6*?g-C6:?ga2U0*C?g-C6J?g  4&kg  4&kCg  4&kg  4&kBr   g&q5   gLog5g&q   皙皙?N   ffffff?g      п      ?      ?      ?      ?7         ?   
         -   <   zvmin, vmax, expectedc                 C   s"   t jdd}t|||| d S )Nr   nbinsmtickerMaxNLocatorr   tick_values)selfvminvmaxexpectedloc r-   @/tmp/pip-unpacked-wheel-wjyw_3jo/matplotlib/tests/test_ticker.py
test_basic   s    zTestMaxNLocator.test_basiczvmin, vmax, steps, expectedc                 C   s&   t jdd|d}t|||| d S )Nr   T)r#   integerstepsr$   )r(   r)   r*   r1   r+   r,   r-   r-   r.   test_integer$   s    zTestMaxNLocator.test_integer)__name__
__module____qualname__nparrayarangeZ
basic_dataZinteger_datapytestmarkparametrizer/   r2   r-   r-   r-   r.   r      s   	$
r   c                   @   s   e Zd Zdd Zdd ZdS )TestLinearLocatorc                 C   s2   t jdd}tdddg}t|dd| d S )N   numticksgg333333ӿ皙?)r%   LinearLocatorr6   r7   r   r'   r(   r,   
test_valuer-   r-   r.   r/   +   s    zTestLinearLocator.test_basicc                 C   sB   t jdd}|jddg id |jdks,t|jdg iks>tdS )z
        Create linear locator with presets={}, numticks=2 and change it to
        something else. See if change was successful. Should not exception.
        r   r>      )r   r   )r?   presetsN)r%   rA   
set_paramsr?   AssertionErrorrE   r(   r,   r-   r-   r.   test_set_params0   s    z!TestLinearLocator.test_set_paramsN)r3   r4   r5   r/   rI   r-   r-   r-   r.   r<   *   s   r<   c                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
TestMultipleLocatorc              
   C   s<   t jdd}tdddddddd	g}t|d
d| d S )NV-	@basego"V-gV-	r   V-@go"@gV-)@r   )r%   MultipleLocatorr6   r7   r   r'   rB   r-   r-   r.   r/   <   s     zTestMultipleLocator.test_basicc              	   C   s<   t ddi$ tjdd}t|ddd W 5 Q R X dS )	z5
        Test basic behavior of view limits.
        axes.autolimit_modedatarK   rL   r   r   )r   r   Nmpl
rc_contextr%   rQ   r   Zview_limitsrH   r-   r-   r.   test_view_limitsB   s    z$TestMultipleLocator.test_view_limitsc              	   C   s<   t ddi$ tjdd}t|ddd W 5 Q R X dS )	zb
        Test that everything works properly with 'round_numbers' for auto
        limit.
        rR   Zround_numbersrK   rL      )rN   rO   NrT   rH   r-   r-   r.   test_view_limits_round_numbersJ   s    z2TestMultipleLocator.test_view_limits_round_numbersc                 C   s,   t jdd}|jdd |jjdks(tdS )z
        Create multiple locator with 0.7 base, and change it to something else.
        See if change was successful.
        ffffff?rL   g333333?N)r%   rQ   rF   Z_edgesteprG   )r(   Zmultr-   r-   r.   rI   S   s    z#TestMultipleLocator.test_set_paramsN)r3   r4   r5   r/   rW   rZ   rI   r-   r-   r-   r.   rJ   ;   s   	rJ   c                    @   s  e Zd Zdd ZddgZejdedd Zdd	d
ddgZ	dd Z
ejde	dd ZddddddddgZddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.gd/d0d1d2d3d4d5dd6d7d8d9d:d;d<d=d>d?d@dAdBgdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSgdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcddgdedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzd{d|d}gd~dddddddddddddddddgdddddddddddddddgdddddddddddddddddddddddddggZeeeeZejdedd ZdS )TestAutoMinorLocatorc                 C   sl   t  \}}|dd |  tddddddd	d
dddddddddddddg}t|jjdd| d S )Nr   =
ףp=?皙?皙?333333?r   333333?ffffff??r   皙??r[   r   333333??r   ?r   ffffff?      ??皙?Tminor)	pltsubplotsset_xlimminorticks_onr6   r7   r   xaxisget_ticklocs)r(   figaxrC   r-   r-   r.   r/   ^   s(                zTestAutoMinorLocator.test_basicr   r   )r   r   z%nb_majorticks, expected_nb_minorticksc                 C   sh   t  \}}d}|j|  |t|d |d | |  |jt	
  t|j |ksdtd S )N)r   r   r   r   )rp   rq   rr   
set_xticksr6   linspacers   rt   set_minor_locatorr%   AutoMinorLocatorlenget_minorticklocsrG   )r(   Znb_majorticksZexpected_nb_minorticksrv   rw   xlimsr-   r-   r.   test_low_number_of_majorticksm   s    
z2TestAutoMinorLocator.test_low_number_of_majorticks)r   r   )r   rY   )      @r   )r   r   )r   r   c              	   C   sB   t ddi* dd | jD }tj|t j W 5 Q R X d S )Nz_internal.classic_modeFc                 S   s   g | ]}|d  qS r   r-   .0xr-   r-   r.   
<listcomp>   s     zKTestAutoMinorLocator.test_using_all_default_major_steps.<locals>.<listcomp>)	rU   rV   majorstep_minordivisionsr6   ZtestingZassert_allcloser%   ZAutoLocatorZ_steps)r(   Z
majorstepsr-   r-   r.   "test_using_all_default_major_steps   s
    z7TestAutoMinorLocator.test_using_all_default_major_stepsz&major_step, expected_nb_minordivisionsc                 C   sb   t  \}}d|f}|j|  || |  |jt  t	|j
 d }||ks^td S Nr   r   )rp   rq   rr   ry   rs   rt   r{   r%   r|   r}   r~   rG   )r(   Z
major_stepZexpected_nb_minordivisionsrv   rw   r   Znb_minor_divisionsr-   r-   r.   test_number_of_minor_ticks   s    

z/TestAutoMinorLocator.test_number_of_minor_ticks)r   r^   )r   gn?)r   ԍ;)r   gVs?=)gH׊gIhG|a)gv!>ҷ>)ʔA{v()g"s2_dglEՎfUr_   r`   ra   r   rb   rc   rd   r   re   rf   r[   r   rg   rh   r   ri   r   rj   rk   rl   rm   {Gzt?{Gz?Q?g?gQ?gQ?g
ףp=
?g)\(?gp=
ף?gQ?g333333?g(\µ?g
ףp=
?gRQ?gzG?g)\(?gq=
ףp?g      ?gp=
ף?gHzG?gO
;gO
;gU;g#B;gU;g̈=;gnP*@;g#B;gԍ;gaW;g̈=;gmx;gJ;gnP*@;gnXen;g+3M;r   g+<g+=gt=gvIh%=gt =g(#=gQu.U)=gvIh%,=gU.=gnb]K2=g(3=g7Q5=gU>?7=gQu.U9=gc߯x:=g; ==gU>=g*#&,gYg#"5Ԉg_eG|gS'цgBY[%gk̈́gv!g|)vgQ؎gqrgƀg%e~gw$}g߈/|gYygv(xgS'vgv!tgz]rgqrqgw$mgHjgv(hgz]bgL>gE/w>gZMϢ>gkʹ>g	ʧ#>g!+lěN>g:0y>gR>g};h>gBY[%>gqwNP>gʔA{>gS'Ѷ>g>g.W'>gG)R>gxz)e秷>r   g5m/Gg<gT跾g`gxz)e秷gIGmg肸zggG)Rg<g&|gg5_涾gqdqAg34gY#g#"5Ըg_~r   gҷg.W'gS'Ѷr   gBY[%g:0yg	ʧ#gkʹgE/wgE̳g|)vg<sAC gz]ʲgQ؎g 4PSȱgqrg>g\+-eqg+i)+gM7܉g%eޮgw$zlim, refc                 C   sZ   t  \}}|  |jddddd |jddddd || t|jjdd	| d S )
NTro   yr   )	linewidthmajork)colorr   rn   )rp   rq   rs   Zgridset_ylimr   yaxisru   )r(   limrefrv   rw   r-   r-   r.   test_additional   s    
z$TestAutoMinorLocator.test_additionalN)r3   r4   r5   r/   paramsr9   r:   r;   r   r   r   r   Zlimits	referencelistzipZadditional_datar   r-   r-   r-   r.   r]   ]   s"  

                                                             
                       r]   c                   @   s$   e Zd Zdd Zdd Zdd ZdS )TestLogLocatorc                 C   s   t jdd}tt |dd W 5 Q R X tddddd	d
ddg}t|dd| t jdd}tddddddddddg
}t|dd| d S )Nr   r>   r     h㈵>r   r`         $@     @@     j@g    cA    eAg     @r   rL   r   r          @      @g       @g      0@g      @@g      P@g      `@g      p@r   r   )	r%   
LogLocatorr9   raises
ValueErrorr'   r6   r7   r   rB   r-   r-   r.   r/      s    
   zTestLogLocator.test_basicc              	   C   sl   t jdd}t|ddddddd	d
dg t jtddd}d|ddksTtd|ddkshtd S )Nallsubsrd   re   g)\(?gq=
ףp?gQ?r   gp=
ף?gHzG?gQ?r   r   r   rh   r	   r   )r%   r   r   r'   r6   r8   rG   rH   r-   r-   r.   test_switch_to_autolocator   s    z)TestLogLocator.test_switch_to_autolocatorc                 C   s^   t  }|jdddgdd |jdks*t|jdks8t|jdksFtt|jdgksZtdS )z
        Create log locator with default value, base=10.0, subs=[1.0],
        numdecs=4, numticks=15 and change it to something else.
        See if change was successful. Should not raise exception.
           rD   r   rY   )r?   numdecsr   rM   N)	r%   r   rF   r?   rG   r   _baser   _subsrH   r-   r-   r.   rI      s    zTestLogLocator.test_set_paramsN)r3   r4   r5   r/   r   rI   r-   r-   r-   r.   r      s   	r   c                   @   s   e Zd Zdd ZdS )TestNullLocatorc              	   C   s*   t  }tt |  W 5 Q R X dS )z
        Create null locator, and attempt to call set_params() on it.
        Should not exception, and should raise a warning.
        N)r%   ZNullLocatorr9   warnsUserWarningrF   rH   r-   r-   r.   rI      s    zTestNullLocator.test_set_paramsNr3   r4   r5   rI   r-   r-   r-   r.   r      s   r   c                   @   s$   e Zd Zedd Zedd ZdS )_LogitHelperc                 C   s`   d|   k rdk r\n nDd|  k r,dk r\n n,t t d|  d  t d| d  S dS )Nr   r   F)r6   iscloselog)r   r   r-   r-   r.   r      s     
 6z_LogitHelper.isclosec                 C   s   t | }t |}t |dkr0t |dk s4tt |dkrPt |dk sTtt d| d  }t d| d  }t|| d S r   )r6   r7   r   rG   r   r   )r   r   rw   ZayZlxZlyr-   r-   r.   r      s    

  z _LogitHelper.assert_almost_equalN)r3   r4   r5   staticmethodr   r   r-   r-   r-   r.   r      s   
r   c                   @   s  e Zd ZddddddddgZd	d
ed	d  d	d
ed	d  d	d
ed	d  d	d
ed	d  d	d
ed	d  d	d
ed	d  d	d
ed	d  d	d
ed	d
  gZdddgZej	
deeedd Zej	
dedd Zej	
dee dd Zej	
deeedd Zdd  Zd!ed"d# d	d!ed"d#  Zej	
dd$d% ejed&d'D d(d) Zej	
d*ed+d, Zd-S ).TestLogitLocatorr_   r   )r   gףp=
?)gMb@?gCl?-C6
?gSt$?)gh㈵>g;?)gƠ>g?gHj>ge(?)g:0y5>g$P?r   r   r=   rY   r   r   r   rD   	   )g?g333333?)r_   r@   )g?r   zlims, expected_low_ticksc                 C   s4   t |dd| }tjdd}t|j| | dS )zR
        Create logit locator with huge number of major, and tests ticks.
        r   r   r   r"   N)r   )sortedr%   LogitLocatorr   r   r'   )r(   limsexpected_low_ticksexpected_ticksr,   r-   r-   r.   test_basic_major  s    z!TestLogitLocator.test_basic_majorr   c                 C   s|   t jdd}t jdddddgd}dD ]P}|j|d |j|d |j| }|j| }|j|jksft||k s&tq&d	S )
zj
        When the axis is zoomed, the locator must have the same behavior as
        MaxNLocator.
        r   r"   r   r   r   r   )r#   r1   )rY   rD      N)r%   r   r&   rF   r'   shaperG   r   )r(   r   r,   Zmaxn_locr#   ticksZ
maxn_ticksr-   r-   r.   test_maxn_major0  s    

z TestLogitLocator.test_maxn_majorc                 C   sj   t tt|d  d d }tjdd}t|ddD ]*}|j|d t|j	| |d ks:t
q:dS )zB
        Assert logit locator for respecting nbins param.
        r   r   r   r   r"   r   N)intr6   floorlog10r%   r   rangerF   r}   r'   rG   )r(   r   basic_neededr,   r#   r-   r-   r.   test_nbins_major@  s
    "z!TestLogitLocator.test_nbins_majorc           
      C   s   t |dd| }t|}tjdd}tjddd}t|ddD ]r}|j|d |j|d |j| }|j| }	t|t|krt|d d	 t|	k stq@t	t ||	| q@d
S )zt
        In large scale, test the presence of minor,
        and assert no minor when major are subsampled.
        r   r   r   r"   T)r#   ro   r   r   r   N)r   )
r   r}   r%   r   r   rF   r'   rG   r   r   )
r(   r   r   r   r   r,   Z	minor_locr#   Zmajor_ticksZminor_ticksr-   r-   r.   
test_minorL  s"    



 zTestLogitLocator.test_minorc                 C   s@   t jdd}|jrtd|_|js&t|jdd |jr<td S )Nr   r"   TFrn   )r%   r   ro   rG   rF   rH   r-   r-   r.   test_minor_attri  s    

z TestLogitLocator.test_minor_attrr   r   c                 C   s    g | ]\}}||kr||fqS r-   r-   )r   abr-   r-   r.   r   x  s   zTestLogitLocator.<listcomp>r   )repeatc                 C   s*   t  }|j| }t|t|ks&tdS )zd
        Create logit locator, and test the nonsingular method for acceptable
        value
        N)r%   r   nonsingularr   rG   )r(   r   r,   Zlims2r-   r-   r.   test_nonsingular_okv  s    
z$TestLogitLocator.test_nonsingular_okokvalc                 C   s   t  }d| }}|||\}}||ks.td|  k rB|k sHn t|d }}|||\}}||ksnt||  k rdk sn tdS )zh
        Create logit locator, and test the nonsingular method for non
        acceptable value
        r   r   r   r   N)r%   r   r   rG   )r(   r   r,   r)   r*   Zvmin2Zvmax2r-   r-   r.   test_nonsingular_nok  s    

z%TestLogitLocator.test_nonsingular_nokN)r3   r4   r5   Zref_basic_limitsr6   r8   Zref_basic_major_ticksZref_maxn_limitsr9   r:   r;   r   r   r   r   r   r   Zacceptable_vmin_vmax	itertoolsproductr   r   r-   r-   r-   r.   r     s\   




	
	r   c                   @   s   e Zd Zdd ZdS )TestFixedLocatorc                 C   s2   t jtdddd}|jdd |jdks.tdS )z
        Create fixed locator with 5 nbins, and change it to something else.
        See if change was successful.
        Should not exception.
        r      r   r"   r   N)r%   ZFixedLocatorr   rF   r#   rG   )r(   Zfixedr-   r-   r.   rI     s    z TestFixedLocator.test_set_paramsNr   r-   r-   r-   r.   r     s   r   c                   @   s   e Zd Zdd ZdS )TestIndexLocatorc                 C   s<   t jddd}|jddd |jdks*t|jdks8tdS )z
        Create index locator with 3 base, 4 offset. and change it to something
        else. See if change was successful.
        Should not exception.
        r=   rY   )rM   offsetr   N)r%   ZIndexLocatorrF   r   rG   r   )r(   indexr-   r-   r.   rI     s    z TestIndexLocator.test_set_paramsNr   r-   r-   r-   r.   r     s   r   c                   @   s   e Zd Zdd ZdS )TestSymmetricalLogLocatorc                 C   s@   t jddd}|jdgdd |jdgks.t|jdks<tdS )z
        Create symmetrical log locator with default subs =[1.0] numticks = 15,
        and change it to something else.
        See if change was successful.
        Should not exception.
        r   r   )rM   Z	linthreshr   rD   )r   r?   N)r%   ZSymmetricalLogLocatorrF   r   rG   r?   )r(   symr-   r-   r.   rI     s    z)TestSymmetricalLogLocator.test_set_paramsNr   r-   r-   r-   r.   r     s   r   c                   @   s2   e Zd Zejddddddddd	gd
d ZdS )TestIndexFormatterzx, label) )r   label0)r   r   )r   label1)r   r   )r   label2)r   r   )r   r   c              	   C   s8   t   tdddg}W 5 Q R X |||ks4td S )Nr   r   r   )r   Z'suppress_matplotlib_deprecation_warningr%   ZIndexFormatterrG   )r(   r   label	formatterr-   r-   r.   test_formatting  s    	
z"TestIndexFormatter.test_formattingN)r3   r4   r5   r9   r:   r;   r   r-   r-   r-   r.   r     s   
r   c                   @   s  e Zd Zddddddddd	d
dddddddddddddddddddgZddgZd d!d"d#d$d%d&d'd(g	Zd)d*gd+d,gd-d.gd/d0gd1d2ggZej	d3d4d5gd6d7 Z
ej	d8ed9d: Zej	d;ed<d= Zd>d? Zej	d@edAdB Zej	dCedDdE Zej	dCedFdG ZdHS )ITestScalarFormatter){      r   )iCir   )i50  i=0  i40  )iii)g    i@g    j@順 )g    jg    i`y)g    hi@g    j@r   )g    jg    hir   )iO iQ iP )i+i+i+)r   r   r   )r   r   r   )g/'?g_L?rd   )g
ףp=@g33333@i  )g@g    `@iȯ  )g1е/G?gg޻G?g9̗G?)g\h@gp=
@i.1  )g      "@g      (@r   )g      @     @r   )g     @r   r   )Gz?g)\(?r   )g{G#@gQ$@r   )g(\X@gq=
ף Y@r   )g(\@g
ףp=
@r   )g{G/@g(\0@r   )g!rhܿrh|?r   )grh|߿r   r   )g3333@g    @@i0  )gffffgffff@r   TF)Frx   )r   r	   r   F)Tr   r   )ir   r   F)Tr   )ir   r   F)Tr   )ix   r   F)Tr   )in   r   F)Tr   )gMbPgMb`?r   F)T)rP   r   )g   tAg   0Ar   T)Trx   g     jr   r   F)T)r   r   r   r   Fr   z0.000g(0?z0.012grh|?z0.123gGz?z1.230g(@z12.300zunicode_minus, result)T   −1)F-1c                 C   s.   |t jd< t j d |ks*td S )Naxes.unicode_minusr   )	rU   rcParamsrp   Zgcart   get_major_formatterformat_data_shortstriprG   )r(   unicode_minusresultr-   r-   r.   test_unicode_minus  s
    
z&TestScalarFormatter.test_unicode_minuszleft, right, offsetc              	   C   s   t  \}}|j }||kr,tjtddnt  ||| W 5 Q R X |j	  |j
|ksbt||krxtjtddnt  ||| W 5 Q R X |j	  |j
|kstd S )NzAttempting to set identical)match)rp   rq   rt   r   r9   r   r   r   rr   Z_update_ticksr   rG   )r(   leftrightr   rv   rw   r   r-   r-   r.   test_offset_value  s     


z%TestScalarFormatter.test_offset_value
use_offsetc              	   C   s6   t d|i t }|| ks(tW 5 Q R X d S )Nzaxes.formatter.useoffset)rU   rV   r%   ScalarFormatterZget_useOffsetrG   )r(   r  tmp_formr-   r-   r.   test_use_offset   s    z#TestScalarFormatter.test_use_offsetc              	   C   s   t  }|d }|r0|d dd  g t jgfkr:td tddiN t }|	 s^t
|  |dd |d	d
dg ||dkst
W 5 Q R X d S )Nthousands_sepgroupingr   zLocale does not apply groupingzaxes.formatter.use_localeTr   r   r   r   r=   r   )locale
localeconvCHAR_MAXr9   skiprU   rV   r%   r	  Zget_useLocalerG   create_dummy_axis
set_boundsset_locs)r(   convsepr
  r-   r-   r.   test_use_locale&  s     
z#TestScalarFormatter.test_use_localez.sci_type, scilimits, lim, orderOfMag, fewticksc           	      C   sv   t  }|| || t \}}|j| |j|  |rT|j	t 
d ||j  ||jksrtd S )NrY   )r%   r	  Zset_scientificZset_powerlimitsrp   rq   r   set_major_formatterr   set_major_locatorr&   r  get_majorticklocsZorderOfMagnituderG   )	r(   Zsci_typeZ	scilimitsr   Z
orderOfMagZfewticksr
  rv   rw   r-   r-   r.   test_scilimits5  s    


z"TestScalarFormatter.test_scilimitszdata, expectedc                 C   s8   t  \}}|dd |j j}|||ks4td S )Nr   r   )rp   rq   rr   rt   r   r   rG   )r(   rS   r+   rv   rw   fmtr-   r-   r.   test_cursor_precisionD  s    z)TestScalarFormatter.test_cursor_precisionc                 C   s6   t  }|  |dd |j}|||ks2td S )Nr   r   )r%   r	  r  r  r   rG   )r(   rS   r+   Zsfr  r-   r-   r.   test_cursor_dummy_axisK  s
    z*TestScalarFormatter.test_cursor_dummy_axisN)r3   r4   r5   offset_dataZuse_offset_dataZscilimits_dataZcursor_datar9   r:   r;   r  r  r  r  r  r  r  r-   r-   r-   r.   r     s   !


 

r   c                   @   s"   e Zd ZdZd	ddZdd ZdS )
FakeAxiszAAllow Formatter to be called without having a "full" plot set up.r   r   c                 C   s   || _ || _d S Nr)   r*   )r(   r)   r*   r-   r-   r.   __init__W  s    zFakeAxis.__init__c                 C   s   | j | jfS r!  r"  )r(   r-   r-   r.   get_view_interval[  s    zFakeAxis.get_view_intervalN)r   r   )r3   r4   r5   __doc__r#  r$  r-   r-   r-   r.   r   U  s   
r   c                   @   s   e Zd Zddeddeddddddd	d
dgfddeddejdddgedddddddgfddejddddgededdd d!d"gfgZ	d#d$d%ejej
gZejd&e	ejd'ed(d) Zd*d+ Zd,S )-TestLogFormatterExponentTrY   r   r   z-3z-2r   0123Fr   r`   r   r@   gɿgh㈵r   0.1z1e-053.14z0.2z-0.2z-1e-052   r=   r      *   Zdtype5Z12Z42r   g      @r   z2labelOnlyBase, exponent, locs, positions, expectedrM   c           	         sN   t j||d td||  _|| } fddt||D }||ksJtd S )NrM   labelOnlyBaser   c                    s   g | ]\}} ||qS r-   r-   )r   r   posr   r-   r.   r   v  s     z7TestLogFormatterExponent.test_basic.<locals>.<listcomp>)r%   LogFormatterExponentr   axisr   rG   )	r(   r3  rM   exponentlocsZ	positionsr+   valslabelsr-   r5  r.   r/   m  s    z#TestLogFormatterExponent.test_basicc                 C   s*   t jddd}t |_|ddks&td S )Nr   Tr2  g&$?r   )r%   r6  r   r7  rG   )r(   r   r-   r-   r.   
test_blanky  s    z#TestLogFormatterExponent.test_blankN)r3   r4   r5   r6   r8   r7   pir   floatZ
param_dataeZ	base_datar9   r:   r;   r/   r<  r-   r-   r-   r.   r&  _  s&    
 	r&  c                   @   s>   e Zd Ze ZddddddddgZej	d	ed
d Z
dS )TestLogFormatterMathtext)r   r   $\mathdefault{10^{0}}$)r   r   z$\mathdefault{10^{-2}}$)r   r
   z$\mathdefault{10^{2}}$)r=   r   z$\mathdefault{1}$)r=   r   z$\mathdefault{0.01}$)r=   r
   z$\mathdefault{100}$)r=   r   z$\mathdefault{10^{-3}}$)r=   r   z$\mathdefault{10^{3}}$zmin_exponent, value, expectedc              	   C   s0   t d|i | ||ks"tW 5 Q R X d S )Nzaxes.formatter.min_exponent)rU   rV   r  rG   )r(   Zmin_exponentvaluer+   r-   r-   r.   test_min_exponent  s    z*TestLogFormatterMathtext.test_min_exponentN)r3   r4   r5   r%   ZLogFormatterMathtextr  	test_datar9   r:   r;   rC  r-   r-   r-   r.   r@    s   r@  c                   @   sR   e Zd Zddddddddd	d
ddddddgZejdejdedd ZdS )TestLogFormatterSciNotation)r   g      ?z$\mathdefault{2^{-5}}$)r   r   z$\mathdefault{2^{0}}$)r       z$\mathdefault{2^{5}}$)r   g333333?z$\mathdefault{1.2\times2^{-5}}$)r   333333?z$\mathdefault{1.2\times2^{0}}$)r   g333333C@z$\mathdefault{1.2\times2^{5}}$)r   r   z$\mathdefault{-10^{0}}$)r   r   z$\mathdefault{10^{-5}}$)r   r   rA  )r   r   z$\mathdefault{10^{5}}$)r   gh㈵>z$\mathdefault{2\times10^{-5}}$)r   r   z$\mathdefault{2\times10^{0}}$)r   i@ z$\mathdefault{2\times10^{5}}$)r   r   z$\mathdefault{5\times10^{-5}}$)r   r   z$\mathdefault{5\times10^{0}}$)r   i  z$\mathdefault{5\times10^{5}}$defaultzbase, value, expectedc              	   C   sH   t j|d}ddddh|_tddi |||ks:tW 5 Q R X d S )NrL   r   r   r   rG  text.usetexF)r%   ZLogFormatterSciNotationZsublabelrU   rV   rG   )r(   rM   rB  r+   r   r-   r-   r.   r/     s    z&TestLogFormatterSciNotation.test_basicN)	r3   r4   r5   rD  r9   r:   styler;   r/   r-   r-   r-   r.   rE    s(   
rE  c                   @   s  e Zd Zddddddddd	d
dddddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzd{d|d}d~ddddddgZejdedd ZdddZej	ddd Z
ejdddddgdd Zejdddddgdd ZdS )TestLogFormatter)}9x ?r   z3.142e-5)Gŷ4?r   z3.142e-4)ei?r   z3.142e-3)\, ?r   z3.142e-2)s7v/?r   z3.142e-1)PERT!	@r   3.142)f)zj?@r   z3.142e1)&FYs@r   z3.142e2)WXp/@r   z3.142e3)mnL@r   z3.142e4),Ar   z3.142e5)r   r   1e-5)r   r   1e-4)r   r   1e-3)r   r   1e-2)r`   r   1e-1)r   r   r(  )r   r   10)r   r   100)r   r   1000)'  r   1e4)r   r   1e5)rL  r   r'  )rM  r   r'  )rN  r   0.003)rO  r   0.031)rP  r   0.314)rQ  r   rR  )rS  r   31.416)rT  r   314.159)rU  r   3141.593)rV  r   	31415.927)rW  r   
314159.265)r   r   r'  )r   r   r'  )r   r   0.001)r   r   0.01)r`   r   r+  )r   r   r(  )r   r   r]  )r   r   r^  )r   r   r_  )r`  r   10000)r   r   100000)rL  r   r'  )rM  r   r'  )rN  r   rc  )rO  r   rd  )rP  r   re  )rQ  r   rR  )rS  r   rf  )rT  r   rg  )rU  r   rh  )rV  r   ri  )rW  r   rj  )r   r   r'  )r   r   r'  )r   r   rk  )r   r   rl  )r`   r   r+  )r   r   r(  )r   r   r]  )r   r   r^  )r   r   r_  )r`  r   rm  )r   r   rn  )rL  r   r'  )rM  r   r'  )rN  r   r'  )rO  r   z0.03)rP  r   z0.31)rQ  r   r,  )rS  r   z31.42)rT  r   z314.16)rU  r   z3141.59)rV  r   z31415.93)rW  r   z	314159.27)r   r   r'  )r   r   r'  )r   r   r'  )r   r   rl  )r`   r   r+  )r   r   r(  )r   r   r]  )r   r   r^  )r   r   r_  )r`  r   rm  )r   r   rn  )rL  r   r'  )rM  r   r'  )rN  r   r'  )rO  r   r'  )rP  r   z0.3)rQ  r   3.1)rS  r   z31.4)rT  r   z314.2)rU  r   z3141.6)rV  r   z31415.9)rW  r   z314159.3)r   r   r'  )r   r   r'  )r   r   r'  )r   r   r'  )r`   r   r+  )r   r   r(  )r   r   r]  )r   r   r^  )r   r   r_  )r`  r   rm  )r   r   rn  )rL      .Az3.1e-5)rM  rp  z3.1e-4)rN  rp  z3.1e-3)rO  rp  z3.1e-2)rP  rp  z3.1e-1)rQ  rp  ro  )rS  rp  z3.1e1)rT  rp  z3.1e2)rU  rp  z3.1e3)rV  rp  z3.1e4)rW  rp  z3.1e5)r   rp  rX  )r   rp  rY  )r   rp  rZ  )r   rp  r[  )r`   rp  r\  )r   rp  r(  )r   rp  r]  )r   rp  r^  )r   rp  r_  )r`  rp  ra  )r   rp  rb  zvalue, domain, expectedc                 C   s$   t  }|||}||ks td S r!  )r%   LogFormatterZ_pprint_valrG   )r(   rB  domainr+   r  r   r-   r-   r.   test_pprint8  s    zTestLogFormatter.test_pprintr-   c                    sf   |   | } | |dtt|  }fdd|D } fdd|D }||ksbtdS )z.Test whether locator marks subs to be labeled.r   c                    s   g | ]}t | kqS r-   )round)r   cr   r-   r.   r   D  s     z0TestLogFormatter._sub_labels.<locals>.<listcomp>c                    s   g | ]} |d kqS r   r-   r   r  r-   r.   r   E  s     N)Zget_minor_formatterr~   r  r6   r   r   rG   )r(   r7  r   Zminor_tlocsZcoefsZlabel_expectedZ
label_testr-   )r  r   r.   _sub_labels>  s    
zTestLogFormatter._sub_labelsrH  c                    sV  t  \}}|d |jtjdg d |jtjdt	ddd |j
tjdd |jtjdd |dd	 |j   |j   fd
d|j D }t|st| j|jg d |dd | j|jg d |dd | j|jg d |dd | j|jddddgd |dd | j|jtj	ddtdd d S )Nr   r   )rM   r   r   T)r3  Fr   g     @c                    s   g | ]} |d kqS rv  r-   r   rw  r-   r.   r   V  s   z2TestLogFormatter.test_sublabel.<locals>.<listcomp>r   i   P   rD   r=   rY   r   r   rh   r0  )rp   rq   Z
set_xscalert   r  r%   r   r{   r6   r8   r  rq  set_minor_formatterrr   r   r  r  r   rG   rx  r   )r(   rv   rw   Zshow_major_labelsr-   rw  r.   test_sublabelH  s0    



zTestLogFormatter.test_sublabelvalr   r   r   r   c                 C   s(   t  }t |_||t|ks$td S r!  )r%   rq  r   r7  strrG   r(   r|  Ztemp_lfr-   r-   r.   test_LogFormatter_calln  s    z'TestLogFormatter.test_LogFormatter_callg       g       g       g       c                 C   s   t  }t |_|| d S r!  )r%   rq  r   r7  r~  r-   r-   r.   test_LogFormatter_call_tinyu  s    z,TestLogFormatter.test_LogFormatter_call_tinyN)r-   )r3   r4   r5   Zpprint_datar9   r:   r;   rs  rx  rJ  r{  r  r  r-   r-   r-   r.   rK    s     




%
rK  c                   @   s  e Zd Zedd Zejddddddd	gd
d Ze	dd e
ddD dd e
ddD  dg Zejdedd Zejdddd Zejdddeeddd   dd ZddddgZejd ed!d" Zd#d$ Zd%d& Zd'd( Zejd)d*d+d, Zd-S ).TestLogitFormatterc                 C   s   t d| }|r|d dk	}|d r0t|d nd}|d dk	rLt|d nd}|d|  }|d sp|d dk	r|r|d| S |S t d	| }|rt|d
 t|d  }}|| S tddS )z
        Parser to convert string as r'$\mathdefault{1.41\cdot10^{-4}}$' in
        float 1.41e-4, as '0.5' or as r'$\mathdefault{\frac{1}{2}}$' in float
        0.5,
        zT[^\d]*(?P<comp>1-)?(?P<mant>\d*\.?\d*)?(?:\\cdot)?(?:10\^\{(?P<expo>-?\d*)})?[^\d]*$compNZmantr   expor   r   z4[^\d]*\\frac\{(?P<num>\d+)\}\{(?P<deno>\d+)\}[^\d]*$numdenozNot formatted by LogitFormatter)rer  r>  r   r   )stringr  r  Zmantissar  rB  r  r  r-   r-   r.   logit_deformatter~  s*    	 z$TestLogitFormatter.logit_deformatterzfx, x)zSTUFF0.41OTHERSTUFFg=
ףp=?)zSTUFF1.41\cdot10^{-2}OTHERSTUFFg!u?)zSTUFF1-0.41OTHERSTUFFgzG?)z!STUFF1-1.41\cdot10^{-2}OTHERSTUFFgx$(~?)ZSTUFFN)zSTUFF12.4e-3OTHERSTUFFNc              	   C   sH   |d kr*t t t| W 5 Q R X nt|}t||sDtd S r!  )r9   r   r   r  r  r   r   rG   )r(   fxr   r   r-   r-   r.   test_logit_deformater  s
    
z(TestLogitFormatter.test_logit_deformaterc                 C   s   g | ]}d |  qS )r   r-   r   ir-   r-   r.   r     s     zTestLogitFormatter.<listcomp>r   r   c                 C   s   g | ]}d d|   qS )r   r   r-   r  r-   r-   r.   r     s     r   r   c                 C   s>   t jdd}|| j ||}t|}t||s:tdS )zj
        Test the formatted value correspond to the value for ideal ticks in
        logit space.
        Fuse_overlineN)	r%   LogitFormatterr  decade_testr  r  r   r   rG   )r(   r   r   sx2r-   r-   r.   r/     s
    
zTestLogitFormatter.test_basic)r   g      r   r   r   r   c                 C   s0   t jdd}|| j ||}|dks,tdS )zl
        Test that invalid value are formatted with empty string without
        raising exception.
        Fr  r   N)r%   r  r  r  rG   )r(   r   r   r  r-   r-   r.   test_invalid  s    zTestLogitFormatter.test_invalidrP   r   c                 C   s   t jdd}dD ]~}|d|  dk r||d|  ||d|  g ||}||d|  }t|t| }d|  k rd| k sn tqdS )zS
        The format length should change depending on the neighbor labels.
        Fr  )	r   r   r-  r      r   i  i  r`  r   r   r   N)r%   r  r  r  r  rG   )r(   r   r   NZsxZsx1dr-   r-   r.   test_variablelength  s     z&TestLogitFormatter.test_variablelength)Tr   )   F)K   F)Tr   )r  r  T)Tr   )r  Tr  )F)r   gRQ?gp=
ף?))r   Tr  r  zmethod, lims, casesc                 C   s   |rt jdd}|j| }n
t|}t jdd}|D ]`\}}|| ||}	dd |	D }
|r~t|
dkst	||fq6t|
dks6t	||fq6dS )z,
        Test minor/major displays.
        Trn   c                 S   s   g | ]}t |d kr|qS r   r}   r   fr-   r-   r.   r     s      z:TestLogitFormatter.test_minor_vs_major.<locals>.<listcomp>r   N)
r%   r   r'   r6   r7   r  Zset_minor_thresholdformat_ticksr}   rG   )r(   methodr   Zcasesmin_locr   min_form	thresholdZ	has_minor	formattedlabelledr-   r-   r.   test_minor_vs_major  s    


z&TestLogitFormatter.test_minor_vs_majorc                 C   sd   t jdd}t jdd}|dd}dD ]6}|| ||}dd |D }t||ks(tq(dS )	z1
        Test the parameter minor_number
        Trn   r_   r   )r   rY   rD   r   c                 S   s   g | ]}t |d kr|qS r   r  r  r-   r-   r.   r     s      z8TestLogitFormatter.test_minor_number.<locals>.<listcomp>N)r%   r   r  r'   Zset_minor_numberr  r}   rG   )r(   r  r  r   Zminor_numberr  r  r-   r-   r.   test_minor_number  s    

z$TestLogitFormatter.test_minor_numberc                 C   s`   d}d}d}t jdd}|||ks(t|d |||ksBt|d |||ks\tdS )z1
        Test the parameter use_overline
        r   z$\mathdefault{1-10^{-2}}$z"$\mathdefault{\overline{10^{-2}}}$Fr  TN)r%   r  rG   r  )r(   r   Zfx1Zfx2formr-   r-   r.   test_use_overline	  s    

z$TestLogitFormatter.test_use_overlinec                 C   sP   t  }d|dkst|d d|dks2t|d d|dksLtdS )z-
        Test the parameter one_half
        z\frac{1}{2}r   z1/2zone halfN)r%   r  rG   Zset_one_half)r(   r  r-   r-   r.   test_one_half  s    

z TestLogitFormatter.test_one_halfr  )r      i  c                 C   sv   t dd|dd }t }|D ]N}||}|drPdt|dd   }nt|}t|| d| k s"tq"d S )Nr   r   r   z1-r   )	r6   rz   r%   r  r   
startswithr>  absrG   )r(   r  r9  r  r   r  r  r-   r-   r.   test_format_data_short"  s    

z)TestLogitFormatter.test_format_data_shortN)r3   r4   r5   r   r  r9   r:   r;   r  r   r   r  r/   r  r6   exprz   r  Zlims_minor_majorr  r  r  r  r  r-   r-   r-   r.   r  }  sL   
 



&

r  c                   @   s   e Zd Zdd ZdS )TestFormatStrFormatterc                 C   s   t d}d|dkstd S )Nz%05d00002r   )r%   ZFormatStrFormatterrG   )r(   r
  r-   r-   r.   r/   0  s    
z!TestFormatStrFormatter.test_basicN)r3   r4   r5   r/   r-   r-   r-   r.   r  /  s   r  c                   @   s*   e Zd ZddgZejdedd ZdS )TestStrMethodFormatter)z{x:05d})r   r  )z{x:03d}-{pos:02d})r   r   z002-01zformat, input, expectedc                 C   s   t |}|| |kstd S r!  )r%   ZStrMethodFormatterrG   )r(   formatinputr+   r  r-   r-   r.   r/   <  s    
z!TestStrMethodFormatter.test_basicN)r3   r4   r5   rD  r9   r:   r;   r/   r-   r-   r-   r.   r  6  s
   r  c                   @   sX   e Zd Zddddddddd	d
d
ddddddddddddddgZejdedd ZdS )TestEngFormatter)FEJ)z
-1.23457 k-1 kz-1.23 k)Tr  )u   −1.23457 k   −1 ku	   −1.23 k)FރB)z-1.23457r   z-1.23)Tr  )u
   −1.23457r   u   −1.23)F_c97ݚ)z
-123.457 mz-123 mz	-123.46 m)Tr  )u   −123.457 mu   −123 mu   −123.46 m)FQ^-':T)z
-1.23457 mz-1 mz-1.23 m)Tr  )u   −1.23457 mu   −1 mu	   −1.23 m)Tg       r'  r'  z0.00)Tr   r  )Tgm>)u
   1.23457 µu   1 µu   1.23 µ)Tg_c97ݚ?)z	123.457 mz123 mz123.46 m)Tr`   )100 mr  z100.00 m)Tr   )r(  r(  z1.00)TgރB?)z1.23457r(  z1.23)Tg33333?@)z999.91 kz999.90)Tg*:?@r  r  1.00 k)F*:?)r  r  z-1.00 k)Tr  )r  r  u	   −1.00 k)Tr   r  )Ti  )z1.001 kr  r  )Ti )z	100.001 kz100 kz100.00 k)TgZ$.A)z	987.654 kz988 kz987.65 k)TguˏE)1230 Yr  z	1230.00 Yzunicode_minus, input, expectedc                    s  |t jd< dd |}t tjddtjddf}t||D ]\}}|||ks>tq> fdd|D }tjd	tjdd
tjdd
f}t||D ]\}}|||kstqdD ]Ή fdd|D }tjdtjddtjddf}t||D ]\}}|||ks
tq
fdd|D }tjdtjddtjddf}t||D ]\}}|||ksjtqjqdS )a  
        Test the formatting of EngFormatter for various values of the 'places'
        argument, in several cases:

        0. without a unit symbol but with a (default) space separator;
        1. with both a unit symbol and a (default) space separator;
        2. with both a unit symbol and some non default separators;
        3. without a unit symbol but with some non default separators.

        Note that cases 2. and 3. are looped over several separator strings.
        r   r  
0123456789r   )placesr   c                 3   s.   | ]&}|d   kr|d  n| V  qdS r    Nr-   r   Z_s)DIGITSUNITr-   r.   	<genexpr>  s   z/TestEngFormatter.test_params.<locals>.<genexpr>)unit)r  r  )r   u    z@_@c                 3   s6   | ].}|d   kr|  n| d V  qdS r  replacer  r  r  _sepr-   r.   r    s   )r  r  )r  r  r  c                 3   s   | ]}| d  V  qdS )r  Nr  r  )r  r-   r.   r    s     )r  )r  r  N)rp   r   r%   EngFormatterr   rG   )r(   r  r  r+   Zexp_outputs
formattersZ
_formatterZ_exp_outputr-   r  r.   test_paramsk  sH    




zTestEngFormatter.test_paramsN)r3   r4   r5   Zraw_format_datar9   r:   r;   r  r-   r-   r-   r.   r  B  s8   %r  c                  C   s   t  \} }|dddgdddg |dddg tjddtjddfD ]>}|j| | j	  dd |
 D }|d	d
dgksLtqLd S )Nr   i  r   T)usetex)ZuseMathTextc                 S   s   g | ]}|  qS r-   )Zget_text)r   Zlablr-   r-   r.   r     s     z8test_engformatter_usetex_useMathText.<locals>.<listcomp>z$0$z$500$z$1$ k)rp   rq   plotry   r%   r  rt   r  ZcanvasZdrawZget_xticklabelsrG   )rv   rw   r   Zx_tick_label_textr-   r-   r.   $test_engformatter_usetex_useMathText  s    


r  c                   @   s   e Zd Zddddddddd	d
ddddddgZdddddddddddddddd gZd!d"d#d$gZejjd%eed&d'd( Z	ejd)ed*d+ Z
d,S )-TestPercentFormatter)r   r   %r   r   z120%)r   r   r  r   Z   z100%)r   r   r  r  r-  z90%)r   r   r  g333333(   z-2%)r   r   r  g     V@r   z90.0%)r   r   r  gfffffT@r  z80.1%)r   r   r  gQQ@r-  z70.2%)r   r   r  gxFNr  z-60.6%)r   Nr  _   r   z95.00%)r   Nr  r=   r   z300%)      1@Nr  r   g      !@z6%)r  Nr  r   g @z5.9%)r   Nr  igư>z-2000.00000%)r   r   NrG  r   z120.00)r  r=   r   r-  r   z66.667)r/  Nz
^^Foobar$$   r.  z50.0^^Foobar$$zdecimals=0, x>100%zdecimals=0, x=100%zdecimals=0, x<100%zdecimals=0, x<0%zdecimals=1, x>100%zdecimals=1, x=100%zdecimals=1, x<100%zdecimals=1, x<0%z$autodecimal, x<100%, display_range=1z7autodecimal, x>100%, display_range=6 (custom xmax test)z;autodecimal, x<100%, display_range=8.5 (autodecimal test 1)z;autodecimal, x<100%, display_range=8.4 (autodecimal test 2)z=autodecimal, x<-100%, display_range=1e-6 (tiny display range)zNone as percent symbolzEmpty percent symbolzCustom percent symbol)FF50\{t}%)FTz50\\\{t\}\%)TFr  )TTr  z2xmax, decimals, symbol, x, display_range, expected)idsc              	   C   sB   t |||}tjddid ||||ks4tW 5 Q R X d S )NrI  Frcr%   ZPercentFormatterrU   rV   Z
format_pctrG   )r(   ZxmaxZdecimalssymbolr   Zdisplay_ranger+   r   r-   r-   r.   r/     s    zTestPercentFormatter.test_basiczis_latex, usetex, expectedc              	   C   sB   t jd|d}tjd|id |dd|ks4tW 5 Q R X d S )Nz\{t}%)r  is_latexrI  r  r-  r   r  )r(   r  r  r+   r  r-   r-   r.   
test_latex  s    zTestPercentFormatter.test_latexN)r3   r4   r5   Zpercent_dataZpercent_idsZ
latex_datar9   r:   r;   r/   r  r-   r-   r-   r.   r    s^    
r  c               	   C   s6   t  \} }tt |jt  W 5 Q R X d S r!  )	rp   rq   r9   r   	TypeErrorrt   r  r%   r   rv   rw   r-   r-   r.   test_majformatter_type  s    r  c               	   C   s6   t  \} }tt |jt  W 5 Q R X d S r!  )	rp   rq   r9   r   r  rt   rz  r%   r   r  r-   r-   r.   test_minformatter_type  s    r  c               	   C   s6   t  \} }tt |jt  W 5 Q R X d S r!  )	rp   rq   r9   r   r  rt   r  r%   rq  r  r-   r-   r.   test_majlocator_type  s    r  c               	   C   s6   t  \} }tt |jt  W 5 Q R X d S r!  )	rp   rq   r9   r   r  rt   r{   r%   rq  r  r-   r-   r.   test_minlocator_type  s    r  c                     sH   t    fdd} | ddd | ddd | ddd | ddd d S )	Nc              	      sh   | |d}t j|d  dd|}W 5 Q R X t|j dk| ksJtt|j dk|ksdtd S )N)zxtick.minor.visiblezytick.minor.visibler  r   r   )rp   rV   Zadd_subplotr}   rt   get_minor_ticksrG   r   )ZxminorZyminorr  r  rw   rv   r-   r.   minorticksubplot!  s    z,test_minorticks_rc.<locals>.minorticksubplotFr   Tr   r=   rY   )rp   figure)r  r-   r  r.   test_minorticks_rc  s    	r  z%remove_overlapping_locs, expected_num))Tr   )Nr   )Fr   c                 C   sH  t jdddd}t t|}t \}}||| |jt	j
  |jt	j
d |jt	j
d |jt	j
d |jd | d k	r| |j_|jj}||j ksttj|j|d	 |jj}||jjkstt|j |kstt|j |kstt|j |ks(tt|j |d
 ksDtd S )Nz
2018-11-03z
2018-11-06Z
datetime64r0  z
%a)r   r   r.     z%H:%Mr   )remove_overlapping_locsr   )r6   r8   Zonesr}   rp   rq   r  rt   r  rU   datesZ
DayLocatorr  ZDateFormatterr{   ZHourLocatorrz  r  r  Zget_remove_overlapping_locsrG   Zsetpr~   Zget_minorticklabelsZget_minorticklines)r  Zexpected_numtr   rv   rw   currentnewr-   r-   r.   test_remove_overlap0  s(    r  subhiZaardvark)r   r   c              	   C   s,   t  }tt ||  W 5 Q R X d S r!  )r%   r   r9   r   r   r   )r  llr-   r-   r.   test_bad_locator_subsU  s    r  r?   r   r   r=   r   rH  c              	   C   sR   t  }|j| d dD ]4}|d|}tt|dddk stqd S )Nr>   )r   r   r      r   r-  r   r   r   r      r   )	r%   r   rF   r'   r6   Zdiffr   r   rG   )r?   r  topr   r-   r-   r.   test_small_range_loglocator^  s
    r  )8
contextlibr   r   r  r  Znumpyr6   Znumpy.testingr   r   r9   Z
matplotlibrU   r   Zmatplotlib.pyplotZpyplotrp   Zmatplotlib.tickerZtickerr%   r   r<   rJ   r]   r   r   r   r   r   r   r   r   r   r   r&  r@  rE  rK  r  r  r  r  r  r  r  r  r  r  r  r:   r;   r  zerosr  rJ  r  r-   r-   r-   r.   <module>   sn   "g&  
! N 3qE
!

