a
    s=ic                     @   sl  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 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.d/ d/Z(d0d1 Z)G d2d3 d3Z*d4d5 Z+d6d7 Z,d8d9 Z-d:d; Z.d<d= Z/e
j01d>d?d@dA Z2e
j01dBdCdDge3dEgdFdG Z4e
j01dHg dIej56dJdKdL Z7dMdN Z8e
j01dOe9dPdQ e:dRfdSdT Z;dS )U    )nullcontextN)assert_almost_equalassert_array_equalc                
   @   s   e Zd Zddeg dfddeg dfddeg d	fd
dedd fdd
eddd fgZdddeg dfdddeg dfddg deg dfgZej	
dedd Zej	
dedd ZdS ) TestMaxNLocator   d   )      4@g      D@g      N@g      T@      Y@MbP?-C6?)        g-C6*?g-C6:?ga2U0*C?g-C6J?r
     4&k  4&kC)r   g  4&kr   g  4&kBr   r   g&q5   gLog5g&q   皙皙?N)r   r      ffffff?)g      пr         ?      ?      ?      ?7   )r         ?   r   
   )r         -   <   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.   m/home/droni/.local/share/virtualenvs/DPS-5Je3_V2c/lib/python3.9/site-packages/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+   r2   r,   r-   r.   r.   r/   test_integer#   s    zTestMaxNLocator.test_integer)__name__
__module____qualname__nparrayarangeZ
basic_dataZinteger_datapytestmarkparametrizer0   r3   r.   r.   r.   r/   r      s   	
r   c                   @   s   e Zd Zdd Zdd ZdS )TestLinearLocatorc                 C   s0   t jdd}tg d}t|dd| d S )N   numticks)皙333333ӿ皙?rA   rC   )r&   LinearLocatorr7   r8   r   r(   r)   r-   
test_valuer.   r.   r/   r0   *   s    zTestLinearLocator.test_basicc                 C   sB   t jdd}|jddg id |jdks,J |jdg iks>J 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&   rD   
set_paramsr@   rH   r)   r-   r.   r.   r/   test_set_params/   s    z!TestLinearLocator.test_set_paramsN)r4   r5   r6   r0   rK   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   s0   t jdd}tg d}t|dd| d S )NV-	@base)go"V-gV-	r   rM   V-@go"@gV-)@r   )r&   MultipleLocatorr7   r8   r   r(   rE   r.   r.   r/   r0   ;   s    zTestMultipleLocator.test_basicc                 C   sP   t ddi. tjdd}t|ddd W d   n1 sB0    Y  dS )	z5
        Test basic behavior of view limits.
        axes.autolimit_modedatarM   rN   r   r   )r   r   Nmpl
rc_contextr&   rS   r   Zview_limitsrJ   r.   r.   r/   test_view_limitsA   s    z$TestMultipleLocator.test_view_limitsc                 C   sP   t ddi. tjdd}t|ddd W d   n1 sB0    Y  dS )	zb
        Test that everything works properly with 'round_numbers' for auto
        limit.
        rT   Zround_numbersrM   rN      )rP   rQ   NrV   rJ   r.   r.   r/   test_view_limits_round_numbersI   s    z2TestMultipleLocator.test_view_limits_round_numbersc                 C   s,   t jdd}|jdd |jjdks(J dS )z
        Create multiple locator with 0.7 base, and change it to something else.
        See if change was successful.
        ffffff?rN   g333333?N)r&   rS   rI   Z_edgestep)r)   Zmultr.   r.   r/   rK   R   s    z#TestMultipleLocator.test_set_paramsN)r4   r5   r6   r0   rY   r\   rK   r.   r.   r.   r/   rL   :   s   	rL   c                	   @   s   e Zd Zdd ZddgZejdedd Zg dZ	d	d
 Z
ejde	dd Zg dZg dg dg dg dg dg dg dg dgZeeeeZejdedd ZdS )TestAutoMinorLocatorc                 C   sF   t  \}}|dd |  tg d}t|jjdd| d S )Nr   =
ףp=?皙?皙?g333333?r   333333?gffffff??r   皙?g?r]   r   g333333??r   ?r   gffffff?g      ?g?g?Tminor)	pltsubplotsset_xlimminorticks_onr7   r8   r   xaxisget_ticklocs)r)   figaxrF   r.   r.   r/   r0   ]   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sdJ d S )N)r   r   r   r   )rk   rl   rm   
set_xticksr7   linspacern   ro   set_minor_locatorr&   AutoMinorLocatorlenget_minorticklocs)r)   Znb_majorticksZexpected_nb_minorticksrq   rr   xlimsr.   r.   r/   test_low_number_of_majorticksl   s    
z2TestAutoMinorLocator.test_low_number_of_majorticks))r   r   )r   r[   )      @r   )r   r   )r   r   c                 C   sV   t ddi4 dd | jD }tj|t j W d    n1 sH0    Y  d S )Nz_internal.classic_modeFc                 S   s   g | ]}|d  qS r   r.   .0xr.   r.   r/   
<listcomp>       zKTestAutoMinorLocator.test_using_all_default_major_steps.<locals>.<listcomp>)	rW   rX   majorstep_minordivisionsr7   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^J d S Nr   r   )rk   rl   rm   rt   rn   ro   rv   r&   rw   rx   ry   )r)   Z
major_stepZexpected_nb_minordivisionsrq   rr   rz   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ՎfUra   ){Gzt?{Gz?Q?g?gQ?gQ?g
ףp=
?rb   g)\(?gp=
ף?gQ?g333333?g(\µ?g
ףp=
?gRQ?gzG?)\(?gq=
ףp?      ?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]b)g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 )
NTrj   yr   )	linewidthmajork)colorr   ri   )rk   rl   rn   gridset_ylimr   yaxisrp   )r)   limrefrq   rr   r.   r.   r/   test_additional   s    
z$TestAutoMinorLocator.test_additionalN)r4   r5   r6   r0   paramsr:   r;   r<   r{   r   r   r   Zlimits	referencelistzipZadditional_datar   r.   r.   r.   r/   r_   \   s2   

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 d    n1 s80    Y  tg d}t|dd| t jdd	}tg d
}t|dd| d S )Nr   r?   r     )h㈵>r
   rc         $@     @@     j@g    cA    eAr
   g     @r   rN   )
r   r          @      @g       @g      0@g      @@g      P@g      `@g      p@r   r   )	r&   
LogLocatorr:   raises
ValueErrorr(   r7   r8   r   rE   r.   r.   r/   r0      s    *zTestLogLocator.test_basicc                 C   sb   t jdd}t|ddg d t jtddd}d|d	d
vsJJ d|d	d
vs^J d S )Nallsubsre   rf   )g)\(?gq=
ףp?gQ?r   gp=
ף?gHzG?gQ?r   r   r   rg   r   r   )r&   r   r   r(   r7   r9   rJ   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*J |jdks8J |jdksFJ t|jdgksZJ 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.
           rG   r   r[   )r@   numdecsr   rO   N)r&   r   rI   r@   r   _baser   _subsrJ   r.   r.   r/   rK      s    zTestLogLocator.test_set_paramsN)r4   r5   r6   r0   r   rK   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 d   n1 s00    Y  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NullLocatorr:   warnsUserWarningrI   rJ   r.   r.   r/   rK      s    zTestNullLocator.test_set_paramsNr4   r5   r6   rK   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)r7   iscloselog)r   r   r.   r.   r/   r      s    
6z_LogitHelper.isclosec                 C   s   t | }t |}t |dkr0t |dk s4J t |dkrPt |dk sTJ t d| d  }t d| d  }t|| d S r   )r7   r8   r   r   r   )r   r   rr   ZaylxZlyr.   r.   r/   r      s    

  z _LogitHelper.assert_almost_equalN)r4   r5   r6   staticmethodr   r   r.   r.   r.   r/   r      s   
r   c                   @   s  e Zd Zg d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g d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g 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)rb   r   )r   gףp=
?)gMb@?gCl?-C6
?gSt$?)gh㈵>g;?)gƠ>g?gHj>ge(?)g:0y5>g$P?r   r   r>   r[   r   r   r   rG   	   ))皙?g333333?)rb   rC   )g?r   zlims, expected_low_ticksc                 C   s:   t g |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)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   sx   t jdd}t jdg dd}dD ]P}|j|d |j|d |j| }|j| }|j|jksbJ ||k s"J 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$   r2   )r[   rG      N)r&   r   r'   rI   r(   shaper   )r)   r   r-   Zmaxn_locr$   ticksZ
maxn_ticksr.   r.   r/   test_maxn_major/  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:J q:dS )zB
        Assert logit locator for respecting nbins param.
        r   r   r   r   r#   r   N)
intr7   floorlog10r&   r   rangerI   rx   r(   )r)   r   basic_neededr-   r$   r.   r.   r/   test_nbins_major?  s
    "z!TestLogitLocator.test_nbins_majorc           
      C   s   t g |dd| }t|}tjdd}tjddd}t|ddD ]v}|j|d |j|d |j| }|j| }	t|t|krt|d d	 t|	k sJ qFtt g ||	| qFd
S )zt
        In large scale, test the presence of minor,
        and assert no minor when major are subsampled.
        r   r   r   r#   T)r$   rj   r   r   r   N)	r   rx   r&   r   r   rI   r(   r   r   )
r)   r   r   r   r   r-   Z	minor_locr$   Zmajor_ticksZminor_ticksr.   r.   r/   
test_minorK  s     


zTestLogitLocator.test_minorc                 C   s@   t jdd}|jrJ d|_|js&J |jdd |jr<J d S )Nr   r#   TFri   )r&   r   rj   rI   rJ   r.   r.   r/   test_minor_attrh  s    

z TestLogitLocator.test_minor_attrr|   r   c                 C   s    g | ]\}}||kr||fqS r.   r.   )r   abr.   r.   r/   r   w  s   zTestLogitLocator.<listcomp>r   )repeatc                 C   s*   t  }|j| }t|t|ks&J dS )zd
        Create logit locator, and test the nonsingular method for acceptable
        value
        N)r&   r   nonsingularr   )r)   r   r-   Zlims2r.   r.   r/   test_nonsingular_oku  s    
z$TestLogitLocator.test_nonsingular_okokvalc                 C   s   t  }d| }}|||\}}||ks.J d|  k rB|k sHn J |d }}|||\}}||ksnJ ||  k rdk sn J dS )zh
        Create logit locator, and test the nonsingular method for non
        acceptable value
        r   r   r   r   N)r&   r   r   )r)   r   r-   r*   r+   Zvmin2Zvmax2r.   r.   r/   test_nonsingular_nok  s    

z%TestLogitLocator.test_nonsingular_nokN)r4   r5   r6   Zref_basic_limitsr7   r9   Zref_basic_major_ticksZref_maxn_limitsr:   r;   r<   r   r   r   r   r   r   Zacceptable_vmin_vmax	itertoolsproductr   r   r.   r.   r.   r/   r     sP   




	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.J 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   rI   r$   )r)   fixedr.   r.   r/   rK     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*J |jdks8J 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>   r[   )rO   offsetr   N)r&   ZIndexLocatorrI   r   r   )r)   indexr.   r.   r/   rK     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.J |jdks<J 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   )rO   Z	linthreshr   rG   )r   r@   N)r&   ZSymmetricalLogLocatorrI   r   r@   )r)   symr.   r.   r/   rK     s    z)TestSymmetricalLogLocator.test_set_paramsNr   r.   r.   r.   r/   r     s   r   c                   @   sL   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S )TestAsinhLocatorc                 C   s<   t jddd}|jdksJ |jdks*J |jdks8J d S )NgX9v@   )linear_widthr@   r   )r&   AsinhLocatorr   r@   rO   r)   lctrr.   r.   r/   	test_init  s    zTestAsinhLocator.test_initc                 C   s>  t jdddddd}|jdks"J |jdks0J |jdks>J |jdksLJ |jdd |jdksfJ |d  |jdks~J |jd	d
 |jd	ksJ |jd d
 |jd	ksJ |jdd |jdksJ |jd d |jdksJ |jdd |jdksJ |jd d |jdksJ |jg d |jd u s:J d S )Nr      r   r[   )r|   g      
@)r   r@   	symthreshrO   r      r?   r   )r   r   rN   )r   g     @r   )r&   r   r@   r   rO   r   rI   r   r.   r.   r/   rK     s4    
z TestAsinhLocator.test_set_paramsc                 C   sh   t jdddd}t|ddtddd t|d	d
td	dd t|ddtddd d S )Nr      r   r   r@   rO   r   r   )\(?rC   r   rc   gB`"۹?g{Gz?g{Gzr   gMO?Mb`?r&   r   r   r(   r7   r9   r   r.   r.   r/   test_linear_values  s    z#TestAsinhLocator.test_linear_valuesc                 C   s@   t jdddd}t|ddg d t|dd	g d
 d S )Nrc   r   r   r   r   )r   r   r   皙ɿr   rC   r   r   r   r   r   )r   r   r   r   gٿr   r   r>   r   r   r   r&   r   r   r(   r   r.   r.   r/   test_wide_values  s    z!TestAsinhLocator.test_wide_valuesc                 C   s*   t jdddd}t|ddg d dS )	z<Check that manually injected zero will supersede nearby tickr   r>   r   r   grg   )g      r   rg   Nr   r   r.   r.   r/   test_near_zero  s    zTestAsinhLocator.test_near_zeroc                 C   s.   t jddd}t|ddtddd d S )Nr   r   r?   e   f   gq=
ףY@rc   r   r   r.   r.   r/   test_fallback  s    zTestAsinhLocator.test_fallbackc                 C   s   G dd d}t jddddd}||_d|_t| g d	 d
|_t| g d d|_t| g d d|_t| g d d S )Nc                   @   s   e Zd ZdZedd ZdS )z5TestAsinhLocator.test_symmetrizing.<locals>.DummyAxis)r   r   c                 S   s   | j S N)bounds)clsr.   r.   r/   get_view_interval  s    zGTestAsinhLocator.test_symmetrizing.<locals>.DummyAxis.get_view_intervalN)r4   r5   r6   r  classmethodr  r.   r.   r.   r/   	DummyAxis  s   r  r   r>   r   r   )r   r@   r   rO   )r   r   )r   r   r   )r   rg   r   r   r   )g333333rh   )r   r   )r   rh   r   )r&   r   axisr  r   )r)   r  r   r.   r.   r/   test_symmetrizing  s    z"TestAsinhLocator.test_symmetrizingc                 C   sR   t jddddd}t|ddg d t jdd	d
d}t|ddg d d S )Nr   rG   r   )r   r>   r   )r   r@   rO   r   n   )iir   iir   r   r         rB   r   r   rc   rd   r   r   r>   r   r   r    2   r   i,    r   r   r   ii  )iiir   r   r   r   rC   r   r      }   iq  r   )r)   Zlctr10Zlctr5r.   r.   r/   test_base_rounding  s    z#TestAsinhLocator.test_base_roundingN)r4   r5   r6   r   rK   r   r   r   r  r
  r  r.   r.   r.   r/   r     s   

r   c                   @   s*  e Zd Zg dZddgZddgZg dZddgddgd	d
gddgddggZg dZe	j
dddgdd Ze	j
dedd Ze	j
dedd Ze	j
dedd Zdd Zd d! Ze	j
d"ed#d$ Ze	j
d%ed&d' Ze	j
d(ed)d* Ze	j
d(ed+d, Zd-d. Zd/d0 Zd1S )2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?re   )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?r   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)	)Frs   )r   r   r   F)Tr   )r  r   r   F)Tr  )r   r   r   F)Tr  )r  x   r   F)Tr  )ir  r   F)Tr  )gMbPr   r   F)T)rR   r   )g   tAg   0Ar   T)Trs   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.300))rc   1e-1)r   z1.1e-1)g    חAZ1e8)g    9Az1.1e8zunicode_minus, result)T   −1)F-1c                 C   s.   |t jd< t j d |ks*J d S )Naxes.unicode_minusr   )rW   rcParamsrk   Zgcaro   get_major_formatterformat_data_shortstrip)r)   unicode_minusresultr.   r.   r/   test_unicode_minusj  s
    
z&TestScalarFormatter.test_unicode_minuszleft, right, offsetc                 C   s   t  \}}|j }||kr,tjtddnt  ||| W d    n1 sT0    Y  |j	  |j
|ksvJ ||krtjtddnt  ||| W d    n1 s0    Y  |j	  |j
|ksJ d S )NzAttempting to set identicalmatch)rk   rl   ro   r%  r:   r   r   r   rm   Z_update_ticksr   )r)   leftrightr   rq   rr   	formatterr.   r.   r/   test_offset_valuer  s     
*
*
z%TestScalarFormatter.test_offset_value
use_offsetc                 C   sX   t d|i6 t }|| ks(J |jdks6J W d    n1 sJ0    Y  d S )Nzaxes.formatter.useoffsetr   )rW   rX   r&   ScalarFormatterget_useOffsetr   )r)   r1  tmp_formr.   r.   r/   test_use_offset  s    z#TestScalarFormatter.test_use_offsetuse_math_textc                 C   sJ   t d|i( t }|| ks(J W d    n1 s<0    Y  d S )Naxes.formatter.use_mathtext)rW   rX   r&   r2  Zget_useMathText)r)   r6  r4  r.   r.   r/   test_useMathText  s    z$TestScalarFormatter.test_useMathTextc                 C   s0   t  }|d | rJ |jdks,J d S )Nr   )r&   r2  Zset_useOffsetr3  r   r)   r4  r.   r.   r/   test_set_use_offset_float  s    
z-TestScalarFormatter.test_set_use_offset_floatc                 C   s   t  }|d }|r0|d dd  g t jgfv r:td tddiX t }|	 s^J |
  |jdd |g d	 ||d
v sJ W d    n1 s0    Y  d S )Nthousands_sepgroupingr   zLocale does not apply groupingzaxes.formatter.use_localeTr   r   )r   r   r>   r   )locale
localeconvCHAR_MAXr:   skiprW   rX   r&   r2  Zget_useLocalecreate_dummy_axisr	  Zset_data_intervalset_locs)r)   convsepr4  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srJ d S )Nr[   )r&   r2  Zset_scientificZset_powerlimitsrk   rl   r   set_major_formatterr   set_major_locatorr'   rB  get_majorticklocsZorderOfMagnitude)	r)   Zsci_typeZ	scilimitsr   Z
orderOfMagZfewticksr4  rq   rr   r.   r.   r/   test_scilimits  s    


z"TestScalarFormatter.test_scilimitszvalue, expectedc                 C   s(   dt jd< t }|||ks$J d S )NFr#  )rW   r$  r&   r2  format_data)r)   valuer,   sfr.   r.   r/   test_format_data  s    
z$TestScalarFormatter.test_format_datazdata, expectedc                 C   s8   t  \}}|dd |j j}|||ks4J d S )Nr   r   )rk   rl   rm   ro   r%  r&  )r)   rU   r,   rq   rr   fmtr.   r.   r/   test_cursor_precision  s    z)TestScalarFormatter.test_cursor_precisionc                 C   s\   t  }|  |jdd |j}|||ks4J |j dksFJ |j dksXJ d S )Nr   r   r   )r&   r2  rA  r	  Zset_view_intervalr&  Zget_tick_spaceZ
get_minpos)r)   rU   r,   rL  rN  r.   r.   r/   test_cursor_dummy_axis  s    z*TestScalarFormatter.test_cursor_dummy_axisc                 C   sj   t jdddd tjtdd4 t \}}|g d |j	
  W d    n1 s\0    Y  d S )NZserifZcmr10F)zfont.familyz
font.serifr7  zcmr10 font should ideallyr+  r  )rW   r$  updater:   r   r   rk   rl   rt   canvasdraw)r)   rq   rr   r.   r.   r/   test_mathtext_ticks  s    z'TestScalarFormatter.test_mathtext_ticksc                 C   s&   t  }|g  |ddks"J d S )Nr    )r&   r2  rB  )r)   rL  r.   r.   r/   test_empty_locs  s    
z#TestScalarFormatter.test_empty_locsN)r4   r5   r6   offset_dataZuse_offset_dataZuseMathText_dataZscilimits_dataZcursor_datarJ  r:   r;   r<   r*  r0  r5  r8  r:  rE  rI  rM  rO  rP  rT  rV  r.   r.   r.   r/   r  (  sF   !








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 r  r*   r+   )r)   r*   r+   r.   r.   r/   __init__  s    zFakeAxis.__init__c                 C   s   | j | jfS r  rY  )r)   r.   r.   r/   r    s    zFakeAxis.get_view_intervalN)r   r   )r4   r5   r6   __doc__rZ  r  r.   r.   r.   r/   rX    s   
rX  c                   @   s   e Zd Zddeddeddg dfddedd	ejd
ddgedg dfddejg dededg d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 )TestLogFormatterExponentTr[   r   r   )z-3z-2r"  0123Fr   rc   r   rC   r   gh㈵r   )0.1z1e-053.14z0.2z-0.2z-1e-05r  )r>   r      *   Zdtype)r`  5Z12Z42r   g      @r   z2labelOnlyBase, exponent, locs, positions, expectedrO   c           	         s\   t j||d td||  _|| } fddt||D }dd |D }||ksXJ d S )NrO   labelOnlyBaser   c                    s   g | ]\}} ||qS r.   r.   )r   r   posr/  r.   r/   r     r   z7TestLogFormatterExponent.test_basic.<locals>.<listcomp>c                 S   s   g | ]}| d dqS )-u   −replace)r   labelr.   r.   r/   r      r   )r&   LogFormatterExponentrX  r	  r   )	r)   rh  rO   exponentlocsZ	positionsr,   valslabelsr.   rj  r/   r0     s    z#TestLogFormatterExponent.test_basicc                 C   s*   t jddd}t |_|ddks&J d S )Nr   Trg  g&$?rU  )r&   ro  rX  r	  )r)   r/  r.   r.   r/   
test_blank  s    z#TestLogFormatterExponent.test_blankN)r4   r5   r6   r7   r9   r8   pir   floatZ
param_dataeZ	base_datar:   r;   r<   r0   rt  r.   r.   r.   r/   r\    s"   
r\  c                   @   s2   e Zd Ze Zg d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   sD   t d|i" | ||ks"J W d    n1 s60    Y  d S )Nzaxes.formatter.min_exponent)rW   rX   rN  )r)   Zmin_exponentrK  r,   r.   r.   r/   test_min_exponent  s    z*TestLogFormatterMathtext.test_min_exponentN)r4   r5   r6   r&   ZLogFormatterMathtextrN  	test_datar:   r;   r<   rz  r.   r.   r.   r/   rx  
  s   rx  c                   @   s6   e Zd Zg d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   ry  )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   sX   t j|d}h d|_tddi  |||ks6J W d    n1 sJ0    Y  d S )NrN   >   r   r   r   r~  text.usetexF)r&   ZLogFormatterSciNotationZsublabelrW   rX   )r)   rO   rK  r,   r/  r.   r.   r/   r0   1  s    
z&TestLogFormatterSciNotation.test_basicN)r4   r5   r6   r{  rW   stylecontextr:   r;   r<   r0   r.   r.   r.   r/   r|    s   
r|  c                   @   s|   e Zd Zg dZejdedd ZdddZe	j
dd	d
 Zejdg ddd Zejdg ddd ZdS )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)rc   r
   r   )r   r
   r^  )r   r
   10)r   r
   100)r   r
   1000)'  r
   1e4)r  r
   1e5)r  r   r]  )r  r   r]  )r  r   0.003)r  r   0.031)r  r   0.314)r  r   r  )r  r   31.416)r  r   314.159)r  r   3141.593)r  r   	31415.927)r  r   
314159.265)r   r   r]  )r   r   r]  )r
   r   0.001)r   r   0.01)rc   r   ra  )r   r   r^  )r   r   r  )r   r   r  )r   r   r  )r  r   10000)r  r   100000)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   r  )r  r   r  )r   r   r]  )r   r   r]  )r
   r   r  )r   r   r  )rc   r   ra  )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   z0.03)r  r   z0.31)r  r   rb  )r  r   z31.42)r  r   z314.16)r  r   z3141.59)r  r   z31415.93)r  r   z	314159.27)r   r   r]  )r   r   r]  )r
   r   r]  )r   r   r  )rc   r   ra  )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   r]  )r  r   z0.3)r  r   3.1)r  r   z31.4)r  r   z314.2)r  r   z3141.6)r  r   z31415.9)r  r   z314159.3)r   r   r]  )r   r   r]  )r
   r   r]  )r   r   r]  )rc   r   ra  )r   r   r^  )r   r   r  )r   r   r  )r   r   r  )r  r   r  )r  r   r  )r      .Az3.1e-5)r  r  z3.1e-4)r  r  z3.1e-3)r  r  z3.1e-2)r  r  z3.1e-1)r  r  r  )r  r  z3.1e1)r  r  z3.1e2)r  r  z3.1e3)r  r  z3.1e4)r  r  z3.1e5)r   r  r  )r   r  r  )r
   r  r  )r   r  r  )rc   r  r   )r   r  r^  )r   r  r  )r   r  r  )r   r  r  )r  r  r  )r  r  r  zvalue, domain, expectedc                 C   s$   t  }|||}||ks J d S r  )r&   LogFormatterZ_pprint_val)r)   rK  domainr,   rN  rn  r.   r.   r/   test_pprint  s    zTestLogFormatter.test_pprintr.   c                    sf   |   | } | |dtt|  }fdd|D } fdd|D }||ksbJ dS )z.Test whether locator marks subs to be labeled.r   c                    s   g | ]}t | v qS r.   )round)r   cr   r.   r/   r     r   z0TestLogFormatter._sub_labels.<locals>.<listcomp>c                    s   g | ]} |d kqS rU  r.   r~   rN  r.   r/   r     r   N)Zget_minor_formatterry   rB  r7   r   r   )r)   r	  r   Zminor_tlocsZcoefsZlabel_expectedZ
label_testr.   )rN  r   r/   _sub_labels  s    
zTestLogFormatter._sub_labelsr  c                    sR  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|sJ | j|jg d |dd | j|jg d |dd | j|jg d |dd | j|jg dd |dd | j|jtj	ddtdd d S )Nr   r   )rO   r   r   T)rh  Fr   g     @c                    s   g | ]} |d kqS r  r.   r~   r  r.   r/   r     s   z2TestLogFormatter.test_sublabel.<locals>.<listcomp>r   i   P   rG   )r   r>   r[   r   r   rg   re  )rk   rl   Z
set_xscalero   rG  r&   r   rv   r7   r9   rF  r  set_minor_formatterrm   r%  rB  rH  r   r  r   )r)   rq   rr   Zshow_major_labelsr.   r  r/   test_sublabel  s0    



zTestLogFormatter.test_sublabelval)r   r   r   r   c                 C   s(   t  }t |_||t|ks$J d S r  )r&   r  rX  r	  strr)   r  Ztemp_lfr.   r.   r/   test_LogFormatter_call  s    z'TestLogFormatter.test_LogFormatter_call)g       g       g       g       c                 C   s   t  }t |_|| d S r  )r&   r  rX  r	  r  r.   r.   r/   test_LogFormatter_call_tiny  s    z,TestLogFormatter.test_LogFormatter_call_tinyN)r.   )r4   r5   r6   Zpprint_datar:   r;   r<   r  r  rW   r  r  r  r  r  r.   r.   r.   r/   r  :  s    




%
r  c                   @   s  e Zd Zedd Zejdg d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g d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u}|d r0t|d nd}|d durLt|d nd}|d|  }|d sp|d du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,  rv  r   r   )stringr,  r  Zmantissar  rK  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   s\   |d u r>t t t| W d    qX1 s20    Y  nt|}t||sXJ d S r  )r:   r   r   r  r  r   r   )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   =  r   zTestLogitFormatter.<listcomp>r   r   c                 C   s   g | ]}d d|   qS )r   r   r.   r  r.   r.   r/   r   >  r   r   r   c                 C   s>   t jdd}|| j ||}t|}t||s:J dS )zj
        Test the formatted value correspond to the value for ideal ticks in
        logit space.
        Fuse_overlineN)r&   LogitFormatterrB  decade_testr  r  r   r   )r)   r   r/  sx2r.   r.   r/   r0   B  s
    
zTestLogitFormatter.test_basic)r   r  r   r   r   r   c                 C   s0   t jdd}|| j ||}|dks,J dS )zl
        Test that invalid value are formatted with empty string without
        raising exception.
        Fr  rU  N)r&   r  rB  r  )r)   r   r/  r  r.   r.   r/   test_invalidN  s    zTestLogitFormatter.test_invalidrR   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 J 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  rB  r  r  )r)   r   r/  NsxZsx1dr.   r.   r/   test_variablelengthY  s     z&TestLogitFormatter.test_variablelength))Tr   )r  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sJ ||fq6t|
dks6J ||fq6dS )z,
        Test minor/major displays.
        Tri   c                 S   s   g | ]}t |d kr|qS r}   rx   r   fr.   r.   r/   r     r   z:TestLogitFormatter.test_minor_vs_major.<locals>.<listcomp>r   N)	r&   r   r(   r7   r8   r  Zset_minor_thresholdformat_ticksrx   )r)   methodr   Zcasesmin_locr   min_form	thresholdZ	has_minor	formattedlabelledr.   r.   r/   test_minor_vs_majorq  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(J q(dS )	z1
        Test the parameter minor_number
        Tri   rb   r   )r   r[   rG   r   c                 S   s   g | ]}t |d kr|qS r}   r  r  r.   r.   r/   r     r   z8TestLogitFormatter.test_minor_number.<locals>.<listcomp>N)r&   r   r  r(   Zset_minor_numberr  rx   )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(J |d |||ksBJ |d |||ks\J dS )z1
        Test the parameter use_overline
        r  z$\mathdefault{1-10^{-2}}$z"$\mathdefault{\overline{10^{-2}}}$Fr  TN)r&   r  r  )r)   r   Zfx1Zfx2formr.   r.   r/   test_use_overline  s    

z$TestLogitFormatter.test_use_overlinec                 C   sP   t  }d|dv sJ |d d|dv s2J |d d|dv sLJ dS )z-
        Test the parameter one_half
        z\frac{1}{2}r   z1/2zone halfN)r&   r  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"J q"d S )Nr   r   r   z1-r   )r7   ru   r&   r  r&  
startswithrv  abs)r)   r  rq  r  r   r  r  r.   r.   r/   test_format_data_short  s    

z)TestLogitFormatter.test_format_data_shortN)r4   r5   r6   r   r  r:   r;   r<   r  r   r   r  r0   r  r7   expru   r  Zlims_minor_majorr  r  r  r  r  r.   r.   r.   r/   r    s8   
 



&

r  c                   @   s   e Zd Zdd ZdS )TestFormatStrFormatterc                 C   s   t d}d|dksJ d S )Nz%05d00002r   )r&   ZFormatStrFormatterr9  r.   r.   r/   r0     s    
z!TestFormatStrFormatter.test_basicN)r4   r5   r6   r0   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J d S r  )r&   ZStrMethodFormatter)r)   formatinputr,   rN  r.   r.   r/   r0     s    
z!TestStrMethodFormatter.test_basicN)r4   r5   r6   r{  r:   r;   r<   r0   r.   r.   r.   r/   r    s
   r  c                   @   s*   e Zd Zg d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  r  )Tgm>)u
   1.23457 µu   1 µu   1.23 µ)Tg_c97ݚ?)z	123.457 mz123 mz123.46 m)Trc   )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>J q> fdd|D }tjd	tjdd
tjdd
f}t||D ]\}}|||ksJ qdD ]Ή fdd|D }tjdtjddtjddf}t||D ]\}}|||ks
J q
fdd|D }tjdtjddtjddf}t||D ]\}}|||ksjJ 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   v r|d  n| V  qdS r    Nr.   r   _s)DIGITSUNITr.   r/   	<genexpr>  s   z/TestEngFormatter.test_params.<locals>.<genexpr>)unit)r  r  )rU  u    z@_@c                 3   s6   | ].}|d   v r|  n| d V  qdS r  rl  r   r  r  _sepr.   r/   r  %  s   )r  rD  )r  r  rD  c                 3   s   | ]}| d  V  qdS )r  Nrl  r   )r  r.   r/   r  3  r   )rD  )r  rD  N)rk   r$  r&   EngFormatterr   )r)   r(  r  r,   Zexp_outputs
formattersZ
_formatterZ_exp_outputr.   r  r/   test_params  sH    




zTestEngFormatter.test_paramsN)r4   r5   r6   Zraw_format_datar:   r;   r<   r
  r.   r.   r.   r/   r    s   %r  c                  C   s   t  \} }|g dg d |g d tjddtjddfD ]<}|j| | j	  dd |
 D }|g dksFJ qFd S )N)r   r  r   T)usetex)ZuseMathTextc                 S   s   g | ]}|  qS r.   )Zget_text)r   Zlablr.   r.   r/   r   E  r   z8test_engformatter_usetex_useMathText.<locals>.<listcomp>)z$0$z$500$z$1$ k)rk   rl   plotrt   r&   r  ro   rF  rR  rS  Zget_xticklabels)rq   rr   r/  Zx_tick_label_textr.   r.   r/   $test_engformatter_usetex_useMathText=  s    


r  c                   @   sT   e Zd Zg dZg dZg d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  r   gư>z-2000.00000%)r   r   Nr~  r   z120.00)r  r>   rU  r  r   z66.667)rd  Nz
^^Foobar$$   rc  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)Zidsc                 C   sV   t |||}tjddid$ ||||ks4J W d    n1 sH0    Y  d S )Nr  Frcr&   ZPercentFormatterrW   rX   Z
format_pct)r)   ZxmaxZdecimalssymbolr   Zdisplay_ranger,   r/  r.   r.   r/   r0     s    zTestPercentFormatter.test_basiczis_latex, usetex, expectedc                 C   sV   t jd|d}tjd|id$ |dd|ks4J W d    n1 sH0    Y  d S )Nz\{t}%)r  is_latexr  r  r  r   r  )r)   r  r  r,   rN  r.   r.   r/   
test_latex  s    zTestPercentFormatter.test_latexN)r4   r5   r6   Zpercent_dataZpercent_idsZ
latex_datar:   r;   r<   r0   r  r.   r.   r.   r/   r  K  s   
r  c                  C   sJ   t  \} }tt  |jt  W d    n1 s<0    Y  d S r  )	rk   rl   r:   r   	TypeErrorro   rF  r&   r   rq   rr   r.   r.   r/   test_majformatter_type  s    r  c                  C   sJ   t  \} }tt  |jt  W d    n1 s<0    Y  d S r  )	rk   rl   r:   r   r  ro   r  r&   r   r  r.   r.   r/   test_minformatter_type  s    r  c                  C   sJ   t  \} }tt  |jt  W d    n1 s<0    Y  d S r  )	rk   rl   r:   r   r  ro   rG  r&   r  r  r.   r.   r/   test_majlocator_type  s    r   c                  C   sJ   t  \} }tt  |jt  W d    n1 s<0    Y  d S r  )	rk   rl   r:   r   r  ro   rv   r&   r  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                    s|   | |d}t j|d  dd|}W d    n1 s:0    Y  t|j dk| ks^J t|j dk|ksxJ d S )N)zxtick.minor.visiblezytick.minor.visibler  r   r   )rk   rX   Zadd_subplotrx   ro   get_minor_ticksr   )ZxminorZyminorr  r  rr   rq   r.   r/   minorticksubplot  s    ,z,test_minorticks_rc.<locals>.minorticksubplotFr   Tr   r>   r[   )rk   Z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 ur| |j_|jj}||j ksJ tj|j|d	 |jj}||jjksJ t|j |ksJ t|j |ksJ t|j |ks(J t|j |d
 ksDJ d S )Nz
2018-11-03z
2018-11-06Z
datetime64re  z
%a)r   r   rc     z%H:%Mr   )remove_overlapping_locsr   )r7   r9   Zonesrx   rk   rl   r  ro   rG  rW   datesZ
DayLocatorrF  ZDateFormatterrv   ZHourLocatorr  r"  r'  Zget_remove_overlapping_locsZsetpry   Zget_minorticklabelsZget_minorticklines)r'  Zexpected_numtr   rq   rr   currentnewr.   r.   r/   test_remove_overlap  s(    r,  subhiZaardvark)r   r   c                 C   sB   t  }tt |j| d W d    n1 s40    Y  d S )Nr   )r&   r   r:   r   r   rI   )r-  llr.   r.   r/   test_bad_locator_subs  s    r0  r@   )r   r   r>   r   r  c              	   C   sR   t  }|j| d dD ]4}|d|}tt|dddk sJ qd S )Nr?   )r   r   r   r   r   r  r   r   r   r      r   )r&   r   rI   r(   r7   diffr   r   )r@   r/  topr   r.   r.   r/   test_small_range_loglocator  s
    r4  c                  C   s@   t  } | ddksJ | ddks*J | ddks<J d S )Nr   rU  )r&   ZNullFormatterrJ  r&  rj  r.   r.   r/   test_NullFormatter  s    r5  r/  c                 C   s
   d|  S )Nzval: r.   )r   r.   r.   r/   <lambda>  r   r6  )Zfoobarc                 C   s.   |   dksJ | d |   dks*J d S )NrU  rW   )Z
get_offsetZset_offset_stringrj  r.   r.   r/   test_set_offset_string  s    
r8  )<
contextlibr   r   r=  r  numpyr7   Znumpy.testingr   r   r:   Z
matplotlibrW   Zmatplotlib.pyplotZpyplotrk   Zmatplotlib.tickerZtickerr&   r   r=   rL   r_   r   r   r   r   r   r   r   r   r  rX  r\  rx  r|  r  r  r  r  r  r  r  r  r  r   r!  r%  r;   r<   r,  Zzerosr0  r  r  r4  r5  ZFuncFormatterZFixedFormatterr8  r.   r.   r.   r/   <module>   sx   "g& j 7
" N 3qE
!

