a  ze?@shdZddlmZddlmZzeWney>ddZYn0GdddejZGd d d ejZ d S) aUnit 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)pytreecCst|}||SN)listsort)Zlstlr M/opt/bitninja-python-dojo/embedded/lib/python3.9/lib2to3/tests/test_pytree.pysortedsr c@seZdZdZddZddZddZdd Zd d Zd d Z ddZ ddZ ddZ ddZ ddZddZddZddZddZd d!Zd"d#Zd$d%Zd&d'Zd(d)Zd*d+Zd,d-Zd.d/Zd0d1Zd2d3Zd4d5Zd6d7Zd8d9Zd:d;Z dd?Z"d@dAZ#dBS)C TestNodesz(Unit tests for nodes (Base, Leaf, Node).cCs|ttjdSr) assertRaisesAssertionErrorrZBase)selfr r r test_instantiate_baseszTestNodes.test_instantiate_basecCs,tdd}||jd||jddS)Ndfoo)rLeaf assertEqualtypevaluerl1r r r test_leaf"s zTestNodes.test_leafcCs tdd}|t|ddS)NrrzLeaf(100, 'foo'))rrrreprrr r r test_leaf_repr's zTestNodes.test_leaf_reprcCs@tdd}|t|dtjdddd}|t|ddS)Nrr) ) rcontextz foo)rrrstr)rrl2r r r test_leaf_str+s zTestNodes.test_leaf_strcCs&tdd}d|_|t|ddS)NZfoo_Zfoo_5)rrprefixrr rr r r test_leaf_str_numeric_value1s z%TestNodes.test_leaf_str_numeric_valuecCs\tdd}tjdddd}|||tdd}tdd}||||||dS)Nrrr)rrrebar)rrrassertNotEqual)rrr!l3l4r r r test_leaf_equality8s     zTestNodes.test_leaf_equalitycCsJtdd}||jd||jd|_||jd||jdS)Nrrz ## )rrrr% assertFalse was_changed assertTruerr r r test_leaf_prefixAs   zTestNodes.test_leaf_prefixcCsLtdd}tdd}td||g}||jd||j||gdS)Nrrr))rrNoderrchildrenrrr!n1r r r test_nodeIs   zTestNodes.test_nodecCsPtdd}tjdddd}td||g}|t|dt|t|fdS)Nrrr)r'rr4zNode(1000, [%s, %s]))rrr5rrr7r r r test_node_reprPs   zTestNodes.test_node_reprcCs@tdd}tjdddd}td||g}|t|ddS)Nrrr)r'rr4zfoo bar)rrr5rr r7r r r test_node_strWs zTestNodes.test_node_strcCs\tdd}||jdtd|g}||jdd|_||jd||jddS)Nrrr.r4r)rrrr%r5)rrr8r r r test_node_prefix]s zTestNodes.test_node_prefixcCstjdddd}tjdddd}td||g}|||j||d||dtjddd d}td||g}|||j||d||ddS) Nrrar%r)br4r.c)rrr5rZ get_suffixr%)rrr!r8r+n2r r r test_get_suffixfszTestNodes.test_get_suffixcCsDtdd}tjdgdd}|||tdd}|||dS)Nr4r r'ri)rr5rr*)rr8rAn3r r r test_node_equalityvs    zTestNodes.test_node_equalitycCsjtdd}tdd}td|g}td|g}|||tdd}td|g}|||dS)Nrrr4r))rrr5rr*)rrr!r8rAr+rCr r r test_node_recursive_equality}s    z&TestNodes.test_node_recursive_equalitycCstdd}tdd}tdd}td|||g}||j|||g||jt||jtdd}| |||j|||g||jt| |jdS)Nrr+r)r4-) rrr5rr6assertIsInstancerr/r0replacer1)rrr!r+r8Zl2newr r r test_replaces      zTestNodes.test_replacecCsvtdd}tdd}tdd}td|||g}|tddtddg|t|d||jtdS)NrrrFr)r4*zfoo**bar) rrr5rIrr rHr6r)rrr!r+r8r r r test_replace_with_lists   z TestNodes.test_replace_with_listcCsptdd}tdd}tdd}td||g}td|g}td||g}|t||||gdSNrrr)Zfooeyr4)rrr5rrleaves)rrr!r+rArCr8r r r test_leavess   zTestNodes.test_leavescCsxtdd}tdd}td||g}tdg}td||g}||d||d||ddS)Nrrr)r4r#rr)rrr5rdepth)rrr!rArCr8r r r test_depths   zTestNodes.test_depthcCsftdd}tdd}tdd}td||g}td||g}|t||||||gdSrM)rrr5rrZ post_orderrrr!r+c1r8r r r test_post_orders    zTestNodes.test_post_ordercCsftdd}tdd}tdd}td||g}td||g}|t||||||gdSrM)rrr5rrZ pre_orderrRr r r test_pre_orders    zTestNodes.test_pre_ordercCstdd}||j|||jtdd}td|g}||j|||jtdd}tdd}tdd}td|||g}td|g}||j||j||j|||j||j||jdS)Nrfr4rrFr))rrr/r0changedr1r5)rrr8r!r+rAr r r test_changeds*              zTestNodes.test_changedcCs@dD]6}tjdd|d}|t||d||j|qdS)NZxyz_r.rrr>)rrr1r rr%)rr%rr r r test_leaf_constructor_prefixsz&TestNodes.test_leaf_constructor_prefixcCs|dD]r}tdd}tjdddd}tjd||g|d}|t||d||j|||j|||jdqdS) NrYrrr_r>r4Zself_foo)rrr5r1r rr%)rr%rr!r8r r r test_node_constructor_prefixs z&TestNodes.test_node_constructor_prefixcCs tdd}tdd}td||g}td|g}||d||jg||j|||jd||jd||j| |j||d||d||jg||jd||jd||jd| |j| |jdS)Nrrr4rr) rrr5rremover6parentr/r0r1)rrr!r8rAr r r test_removes&     zTestNodes.test_removecCsHtdg}|||jdtdd}|||jddS)Nr4rr)rr5r]rr^r)rr8rr r r test_remove_parentlesss   z TestNodes.test_remove_parentlesscCstdd}td|g}tdd}|d|||jd||j|||j|gtd|g}|d|||jd||j|||jd||j|g|t|jd||t |jdt dS)Nrrr4r)r) rrr5Z set_childrr^r6r IndexError Exceptionr)rrr8r!rAr r r test_node_set_childs    zTestNodes.test_node_set_childcCstdd}td|g}tdd}|d|||j|||j||gtdd}|d|||j|||g|t|jdt dS)Nrrr4r)rabcr#) rrr5Z insert_childrr^r6r rcr)rrr8r!r+r r r test_node_insert_child#s     z TestNodes.test_node_insert_childcCstdg}tdd}||||j|||j|gtdd}||||j|||j||g|t|jt dS)Nr4rrr)) rr5rZ append_childrr^r6r rcr)rr8rr!r r r test_node_append_child3s     z TestNodes.test_node_append_childcCsVtdg}tdg}td||g}||j|||jd||jddSNr4)rr5assertIs next_siblingrrr8rAp1r r r test_node_next_siblingCs   z TestNodes.test_node_next_siblingcCsVtdd}tdd}td||g}||j|||jd||jddSNrr=r?r4)rrr5rirjrrrr!rlr r r test_leaf_next_siblingLs   z TestNodes.test_leaf_next_siblingcCsVtdg}tdg}td||g}||j|||jd||jddSrh)rr5ri prev_siblingrrkr r r test_node_prev_siblingUs   z TestNodes.test_node_prev_siblingcCsVtdd}tdd}td||g}||j|||jd||jddSrn)rrr5rirqrror r r test_leaf_prev_sibling^s   z TestNodes.test_leaf_prev_siblingN)$__name__ __module__ __qualname____doc__rrrr"r&r-r2r9r:r;r<rBrDrErJrLrOrQrTrUrXrZr\r_r`rdrfrgrmrprrrsr r r r r sB           r c@s0eZdZdZddZddZddZdd Zd S) TestPatternsz&Unit tests for tree matching patterns.c Cstdd}tdd}tdd}td||g}td|g}td||g}tjdddd}i}||j||d||i||j||d||i||j||d||i||j||d||d|ii}||j||d||itjd|gdd} || j||d||i|| j||d||i|| j||d||||d i}|| j||d||i|| j||d||idS) Nrrr)r4plname)resultspn)r}ry) rrr5 LeafPatternr/matchrr1 NodePattern) rrr!r+r8rArootryrr}r r r test_basic_patternsls>          z TestPatterns.test_basic_patternsc Cstdd}tdd}tdd}td||g}td|g}td||g}tjdddd}tjd|gdd}tj|g||ggdd} i} || |g| || i|| |g| || i| | |g| |t | gd || d||| d||| d|g|| |||gd i} | | ||g| || |||gd | | d|i} dS) Nrrr)r4ryrzr}pw)ryr}r)ryr) rrr5r~rWildcardPatternr/Z match_seqrr1r keysri) rrr!r+r8rArryr}rrr r r test_wildcards2     zTestPatterns.test_wildcardc Cstdd}tdd}tdd}tdd}tdd}tdd}||||||g}td|}tddd } tddd } tddd } tddd } tddd } tddd}tj| | | g| | g| | g| | g| |ggdddd}|dd||Dgdtjd|gdd}tt|g|g}|t |d|d\}}||d|t |dd||d||||||gdD]"}||d|td|qdS)Nrr=r?r@derVr4papbpcpdpepfrar)minmaxr{cSsg|] }|dqS)rr ).0xr r r z6TestPatterns.test_generate_matches..)r$r#rapr)rZcontentr{rZabcdefp) rrr5r~rrZgenerate_matchesrrlenr )rZlaZlbZlcZldleZlfrNrrrrrrrrrmatchesr@rr r r test_generate_matchess>         z"TestPatterns.test_generate_matchescCstdtdtjddtdf}tdd}tdd}tdd }td|||g}i}||||||d|gdS) NiKargsrz(rr)) rrr~rrr5r1rr)rpatternrr!r+Znoderr r r test_has_key_examples    z!TestPatterns.test_has_key_exampleN)rtrurvrwrrrrr r r r rxhs $rxN) rwr.rZlib2to3rr NameErrorZTestCaser rxr r r r s   Q