
    daf?                         d Z ddlmZ ddlmZ 	 e  G d dej                        Z G d d	ej                        Z	y
# e$ r d ZY 5w xY w)a  Unit tests for pytree.py.

NOTE: Please *don't* add doc strings to individual test methods!
In verbose mode, printing of the module, class and method name is much
more helpful than printing of (the first line of) the docstring,
especially when debugging a test.
   )support    )pytreec                 <    t        |       }|j                          |S N)listsort)lstls     8/root/Python-3.12.4/Lib/test/test_lib2to3/test_pytree.pysortedr      s    I	    c                       e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z d Z!d  Z"d! Z#y")#	TestNodesz(Unit tests for nodes (Base, Leaf, Node).c                 N    	 | j                  t        t        j                         y r   )assertRaisesAssertionErrorr   Base)selfs    r   test_instantiate_basezTestNodes.test_instantiate_base   s    nfkk:r   c                     t        j                  dd      }| j                  |j                  d       | j                  |j                  d       y )Nd   foo)r   LeafassertEqualtypevaluer   l1s     r   	test_leafzTestNodes.test_leaf"   s:    [[e$#&5)r   c                 f    t        j                  dd      }| j                  t        |      d       y )Nr   r   zLeaf(100, 'foo'))r   r   r   reprr   s     r   test_leaf_reprzTestNodes.test_leaf_repr'   s'    [[e$b#56r   c                     t        j                  dd      }| j                  t        |      d       t        j                  ddd      }| j                  t        |      d       y )Nr   r   ) )
   r   contextz foo)r   r   r   str)r   r   l2s      r   test_leaf_strzTestNodes.test_leaf_str+   sL    [[e$R%([[e^<R&)r   c                 t    t        j                  dd      }d|_        | j                  t	        |      d       y )N      foo_foo_5)r   r   prefixr   r)   r   s     r   test_leaf_str_numeric_valuez%TestNodes.test_leaf_str_numeric_value1   s/     [[A	R'*r   c                 $   t        j                  dd      }t        j                  ddd      }| j                  ||       t        j                  dd      }t        j                  dd      }| j                  ||       | j                  ||       y )Nr   r   r%   )r   r   r'   e   bar)r   r   r   assertNotEqual)r   r   r*   l3l4s        r   test_leaf_equalityzTestNodes.test_leaf_equality8   st    [[e$[[e];R [[e$[[e$B#B#r   c                    t        j                  dd      }| j                  |j                  d       | j	                  |j
                         d|_        | j                  |j                  d       | j                  |j
                         y )Nr   r    z  ##

)r   r   r   r1   assertFalsewas_changed
assertTruer   s     r   test_leaf_prefixzTestNodes.test_leaf_prefixA   sc    [[e$B'(	J/'r   c                     t        j                  dd      }t        j                  dd      }t        j                  d||g      }| j                  |j                  d       | j                  |j
                  ||g       y )Nr   r      r6     )r   r   Noder   r   childrenr   r   r*   n1s       r   	test_nodezTestNodes.test_nodeI   sb    [[e$[[e$[[Bx($'r2h/r   c           	          t        j                  dd      }t        j                  ddd      }t        j                  d||g      }| j                  t	        |      dt	        |      dt	        |      d	       y )
Nr   r   r6   r4   r'   rC   zNode(1000, [z, z]))r   r   rD   r   r"   rF   s       r   test_node_reprzTestNodes.test_node_reprP   s]    [[e$[[e];[[Bx(b378T"XF	Hr   c                     t        j                  dd      }t        j                  ddd      }t        j                  d||g      }| j                  t	        |      d       y )Nr   r   r6   r4   r'   rC   zfoo bar)r   r   rD   r   r)   rF   s       r   test_node_strzTestNodes.test_node_strW   sL    [[e$[[e];[[Bx(R),r   c                 L   t        j                  dd      }| j                  |j                  d       t        j                  d|g      }| j                  |j                  d       d|_        | j                  |j                  d       | j                  |j                  d       y )Nr   r   r<   rC   r%   )r   r   r   r1   rD   )r   r   rG   s      r   test_node_prefixzTestNodes.test_node_prefix]   s{    [[e$B'[[t$B'	C(C(r   c                    t        j                  ddd      }t        j                  ddd      }t        j                  d||g      }| j                  |j	                         |j
                         | j                  |j	                         d       | j                  |j	                         d       t        j                  ddd	      }t        j                  d||g      }| j                  |j	                         |j
                         | j                  |j	                         d       | j                  |j	                         d       y )
Nr   r   ar1   r6   brC   r<   c)r   r   rD   r   
get_suffixr1   )r   r   r*   rG   r8   n2s         r   test_get_suffixzTestNodes.test_get_suffixf   s    [[eC0[[eC0[[Bx("))4"-"-[[eC0[[Bx("))4"-"-r   c                     t        j                  dd      }t        j                  dg d      }| j                  ||       t        j                  dd      }| j                  ||       y )NrC    r4   r'   i  )r   rD   r   r7   )r   rG   rU   n3s       r   test_node_equalityzTestNodes.test_node_equalityv   sT    [[r"[[r=9R [[r"B#r   c                 Z   t        j                  dd      }t        j                  dd      }t        j                  d|g      }t        j                  d|g      }| j                  ||       t        j                  dd      }t        j                  d|g      }| j	                  ||       y )Nr   r   rC   r6   )r   r   rD   r   r7   )r   r   r*   rG   rU   r8   rY   s          r   test_node_recursive_equalityz&TestNodes.test_node_recursive_equality}   s    [[e$[[e$[[t$[[t$R [[e$[[t$B#r   c                 p   t        j                  dd      }t        j                  dd      }t        j                  dd      }t        j                  d|||g      }| j                  |j                  |||g       | j                  |j                  t               | j                  |j                         t        j                  dd      }|j                  |       | j                  |j                  |||g       | j                  |j                  t               | j                  |j                         y )Nr   r   +r6   rC   -)r   r   rD   r   rE   assertIsInstancer   r=   r>   replacer?   )r   r   r*   r8   rG   l2news         r   test_replacezTestNodes.test_replace   s    [[e$[[c"[[e$[[B|,r2rl3bkk40(C%


5r5"o6bkk40'r   c                    t        j                  dd      }t        j                  dd      }t        j                  dd      }t        j                  d|||g      }|j                  t        j                  dd      t        j                  dd      g       | j	                  t        |      d       | j                  |j                  t               y )Nr   r   r^   r6   rC   *zfoo**bar)	r   r   rD   ra   r   r)   r`   rE   r   )r   r   r*   r8   rG   s        r   test_replace_with_listz TestNodes.test_replace_with_list   s    [[e$[[c"[[e$[[B|,


FKKS)6;;sC+@ABR*-bkk40r   c                 n   t        j                  dd      }t        j                  dd      }t        j                  dd      }t        j                  d||g      }t        j                  d|g      }t        j                  d||g      }| j                  t	        |j                               |||g       y Nr   r   r6   fooeyrC   )r   r   rD   r   r   leaves)r   r   r*   r8   rU   rY   rG   s          r   test_leaveszTestNodes.test_leaves   s    [[e$[[e$[[g&[[Bx([[t$[[Bx(biik*RRL9r   c                    t        j                  dd      }t        j                  dd      }t        j                  d||g      }t        j                  dg       }t        j                  d||g      }| j                  |j	                         d       | j                  |j	                         d       | j                  |j	                         d       y )Nr   r   r6   rC   r-   r   r   )r   r   rD   r   depth)r   r   r*   rU   rY   rG   s         r   
test_depthzTestNodes.test_depth   s    [[e$[[e$[[Bx([[r"[[Bx(Q'Q'Q'r   c                 D   t        j                  dd      }t        j                  dd      }t        j                  dd      }t        j                  d||g      }t        j                  d||g      }| j                  t	        |j                               |||||g       y rh   )r   r   rD   r   r   
post_orderr   r   r*   r8   c1rG   s         r   test_post_orderzTestNodes.test_post_order   s    [[e$[[e$[[g&[[Bx([[Bx(bmmo.RR0DEr   c                 D   t        j                  dd      }t        j                  dd      }t        j                  dd      }t        j                  d||g      }t        j                  d||g      }| j                  t	        |j                               |||||g       y rh   )r   r   rD   r   r   	pre_orderrq   s         r   test_pre_orderzTestNodes.test_pre_order   s    [[e$[[e$[[g&[[Bx([[Bx(blln-BB/CDr   c                    t        j                  dd      }| j                  |j                         |j	                          | j                  |j                         t        j                  dd      }t        j                  d|g      }| j                  |j                         |j	                          | j                  |j                         t        j                  dd      }t        j                  dd      }t        j                  dd      }t        j                  d|||g      }t        j                  d|g      }| j                  |j                         | j                  |j                         | j                  |j                         |j	                          | j                  |j                         | j                  |j                         | j                  |j                         y )Nr   frC   r   r^   r6   )r   r   r=   r>   changedr?   rD   )r   r   rG   r*   r8   rU   s         r   test_changedzTestNodes.test_changed   sS   [[c"(


'[[c"[[t$(


'[[e$[[c"[[e$[[B|,[[t$(((


''(r   c                     dD ]T  }t        j                  dd|      }| j                  t        |      |dz          | j	                  |j
                  |       V y )Nxyz_r<   r   r   rQ   )r   r   r?   r)   r   r1   )r   r1   r   s      r   test_leaf_constructor_prefixz&TestNodes.test_leaf_constructor_prefix   sM    " 	0FS&8BOOCGVf_5RYY/	0r   c                    dD ]  }t        j                  dd      }t        j                  ddd      }t        j                  d||g|      }| j                  t	        |      |dz          | j                  |j                  |       | j                  |j                  |       | j                  |j                  d        y )	Nr|   r   r   r   _rQ   rC   self_foo)r   r   rD   r?   r)   r   r1   )r   r1   r   r*   rG   s        r   test_node_constructor_prefixz&TestNodes.test_node_constructor_prefix   s    " 	-FS&)BS%4BTB8F;BOOCGVj%89RYY/RYY/RYY,	-r   c                    t        j                  dd      }t        j                  dd      }t        j                  d||g      }t        j                  d|g      }| j                  |j	                         d       | j                  |j
                  g        | j                  |j                  |       | j                  |j                  d        | j                  |j                  d        | j                  |j                         | j                  |j                         | j                  |j	                         d       | j                  |j	                         d       | j                  |j
                  g        | j                  |j                  d        | j                  |j                  d        | j                  |j                  d        | j                  |j                         | j                  |j                         y )Nr   r   rC   r   r   )
r   r   rD   r   removerE   parentr=   r>   r?   )r   r   r*   rG   rU   s        r   test_removezTestNodes.test_remove   sl   [[e$[[e$[[Bx([[t$a(b)B'D)D)('a(a(b)D)D)D)''r   c                    t        j                  dg       }|j                          | j                  |j                  d        t        j
                  dd      }|j                          | j                  |j                  d        y )NrC   r   r   )r   rD   r   r   r   r   )r   rG   r   s      r   test_remove_parentlessz TestNodes.test_remove_parentless  s\    [[r"
		D)[[e$
		D)r   c                    t        j                  dd      }t        j                  d|g      }t        j                  dd      }|j                  d|       | j	                  |j
                  d        | j	                  |j
                  |       | j	                  |j                  |g       t        j                  d|g      }|j                  d|       | j	                  |j
                  d        | j	                  |j
                  |       | j	                  |j
                  d        | j	                  |j                  |g       | j                  t        |j                  d|       | j                  t        |j                  dt               y )Nr   r   rC   r6   r      )r   r   rD   	set_childr   r   rE   r   
IndexError	Exceptionr   )r   r   rG   r*   rU   s        r   test_node_set_childzTestNodes.test_node_set_child  s"   [[e$[[t$[[e$
QD)B'rd+[[t$
QD)B'D)rd+*bllAr:)R\\1d;r   c                    t        j                  dd      }t        j                  d|g      }t        j                  dd      }|j                  d|       | j	                  |j
                  |       | j	                  |j                  ||g       t        j                  dd      }|j                  d|       | j	                  |j                  |||g       | j                  t        |j                  dt               y )Nr   r   rC   r6   r   abcr-   )
r   r   rD   insert_childr   r   rE   r   r   r   )r   r   rG   r*   r8   s        r   test_node_insert_childz TestNodes.test_node_insert_child#  s    [[e$[[t$[[e$
2B'r2h/[[e$
2r2rl3 	)R__a>r   c                    t        j                  dg       }t        j                  dd      }|j                  |       | j	                  |j
                  |       | j	                  |j                  |g       t        j                  dd      }|j                  |       | j	                  |j
                  |       | j	                  |j                  ||g       | j                  t        |j                  t               y )NrC   r   r   r6   )
r   rD   r   append_childr   r   rE   r   r   r   )r   rG   r   r*   s       r   test_node_append_childz TestNodes.test_node_append_child3  s    [[r"[[e$
B'rd+[[e$
B'r2h/ 	)R__d;r   c                 4   t        j                  dg       }t        j                  dg       }t        j                  d||g      }| j                  |j                  |       | j	                  |j                  d        | j	                  |j                  d        y NrC   )r   rD   assertIsnext_siblingr   r   rG   rU   p1s       r   test_node_next_siblingz TestNodes.test_node_next_siblingC  p    [[r"[[r"[[Bx(boor*$/$/r   c                 4   t        j                  dd      }t        j                  dd      }t        j                  d||g      }| j                  |j                  |       | j                  |j                  d        | j                  |j                  d        y Nr   rP   rR   rC   )r   r   rD   r   r   r   r   r   r*   r   s       r   test_leaf_next_siblingz TestNodes.test_leaf_next_siblingL  p    [[c"[[c"[[Bx(boor*$/$/r   c                 4   t        j                  dg       }t        j                  dg       }t        j                  d||g      }| j                  |j                  |       | j	                  |j                  d        | j	                  |j                  d        y r   )r   rD   r   prev_siblingr   r   s       r   test_node_prev_siblingz TestNodes.test_node_prev_siblingU  r   r   c                 4   t        j                  dd      }t        j                  dd      }t        j                  d||g      }| j                  |j                  |       | j                  |j                  d        | j                  |j                  d        y r   )r   r   rD   r   r   r   r   s       r   test_leaf_prev_siblingz TestNodes.test_leaf_prev_sibling^  r   r   N)$__name__
__module____qualname____doc__r   r    r#   r+   r2   r:   r@   rH   rJ   rL   rN   rV   rZ   r\   rc   rf   rk   rn   rs   rv   rz   r~   r   r   r   r   r   r   r   r   r   r   rX   r   r   r   r      s    2;
*
7*+$(0H-). $$(1:	(FE)40-(.*<*? < 0000r   r   c                   (    e Zd ZdZd Zd Zd Zd Zy)TestPatternsz&Unit tests for tree matching patterns.c                    t        j                  dd      }t        j                  dd      }t        j                  dd      }t        j                  d||g      }t        j                  d|g      }t        j                  d||g      }t        j                  ddd      }i }| j	                  |j                  ||             | j                  |i        | j	                  |j                  ||             | j                  |i        | j	                  |j                  ||             | j                  |i        | j                  |j                  ||             | j                  |d|i       i }| j	                  |j                  ||             | j                  |i        t        j                  d|gd      }	| j	                  |	j                  ||             | j                  |i        | j	                  |	j                  ||             | j                  |i        | j                  |	j                  ||             | j                  |||d	       i }| j	                  |	j                  ||             | j                  |i        | j	                  |	j                  ||             | j                  |i        y )
Nr   r   r6   rC   plname)resultspn)r   r   )	r   r   rD   LeafPatternr=   matchr   r?   NodePattern)
r   r   r*   r8   rG   rU   rootr   rr   s
             r   test_basic_patternsz TestPatterns.test_basic_patternsl  sX   [[e$[[e$[[e$[[Bx([[t${{4"b*U6$23B"a01B"a01BQ/0T2J'"a01Brd6$23B"a01BQ/02R01"a01B"a01Br   c                 r   t        j                  dd      }t        j                  dd      }t        j                  dd      }t        j                  d||g      }t        j                  d|g      }t        j                  d||g      }t        j                  ddd      }t        j                  d|gd      }t        j
                  |g||ggd      }	i }
| j                  |	j                  |g|
             | j                  |
i        | j                  |	j                  |g|
             | j                  |
i        | j                  |	j                  |g|
             | j                  t        |
j                               g d	       | j                  |
d   |       | j                  |
d   |       | j                  |
d   |g       | j                  |
|||gd	       i }
| j                  |	j                  ||g|
             | j                  |
|||gd
       | j                  |
d   |       i }
y )Nr   r   r6   rC   r   r   r   pw)r   r   r   )r   r   )r   r   rD   r   r   WildcardPatternr=   	match_seqr   r?   r   keysr   )r   r   r*   r8   rG   rU   r   r   r   r   r   s              r   test_wildcardzTestPatterns.test_wildcard  s   [[e$[[e$[[e$[[Bx([[t${{4"b*U6rd6##bTB8$44@tfa01BrdA./BbT1-.)+=>4"%4"%42$'2Rt<=b"Xq122b"X67agr"r   c           	         t        j                  dd      }t        j                  dd      }t        j                  dd      }t        j                  dd      }t        j                  dd      }t        j                  dd      }||||||g}t        j                  d|      }t        j                  ddd	      }	t        j                  ddd
      }
t        j                  ddd      }t        j                  ddd      }t        j                  ddd      }t        j                  ddd      }t        j                  |	|
|g||g|	|
g||g||ggddd      }| j                  |j                  |      D cg c]  }|d   	 c}g d       t        j                  d|gd      }t        t        j                  |g|g            }| j                  t        |      d       |d   \  }}| j                  |d       | j                  t        |d         d       | j                  |d   ||||||g       dD ].  }| j                  |d|z      t        j                  d|             0 y c c}w )Nr   rP   rR   rS   derx   rC   papbpcpdpepfr   r   )minmaxr   r   )   r.   r-   r      pr)r   contentr   abcdefp)r   r   rD   r   r   r   generate_matchesr   r   lenr)   )r   lalblcldlelfrj   r   r   r   r   r   r   r   r   xr   matchesrS   r   s                        r   test_generate_matchesz"TestPatterns.test_generate_matches  s<   [[C [[C [[C [[C [[C [[C b"b"b){{4(3-3-3-3-3-3-##b"b\B8&("XBx"b%C()qt= 	(;(;F(CD1!A$D(	*TB4dCv..tdV<=Wq)qz1AQtWx042r2r2r":; 	<AQsQwZQ):;	< Es   4I&c                    t        j                  dt        j                  d      t        j                  d      t        j                  d      f      }t        j                  dd      }t        j                  dd      }t        j                  dd	      }t        j
                  d|||g      }i }| j                  |j                  ||             | j                  |d   |g       y )
NiK     argsr      (r   r   ))	r   r   r   r   r   rD   r?   r   r   )r   patternr   r*   r8   noder   s          r   test_has_key_examplez!TestPatterns.test_has_key_example  s    $$S&,&8&8&;&,&<&<&&I&,&8&8&;&=> [[C [[C [[C {{3R-dA./6RD)r   N)r   r   r   r   r   r   r   r   rX   r   r   r   r   h  s    0" H><<*r   r   N)
r   r<   r   lib2to3r   r   	NameErrorTestCaser   r   rX   r   r   <module>r      sZ     
L0   L0^
p*7## p*k
  s   = AA