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).cCsdSr)AssertionErrorr)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)rrprefixrrrr 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&rr3zNode(1000, [%s, %s]))rrr4rrr6r r r test_node_reprPs   zTestNodes.test_node_reprcCs@tdd}tjdddd}td||g}|t|ddS)Nrrr(r&rr3zfoo bar)rrr4rrr6r r r test_node_strWs zTestNodes.test_node_strcCs\tdd}||jdtd|g}||jdd|_||jd||jddS)Nrrr-r3r)rrrr$r4)rrr7r r r test_node_prefix]s zTestNodes.test_node_prefixcCstjdddd}tjdddd}td||g}|||j||d||dtjddd d}td||g}|||j||d||ddS) Nrrar$r(br3r-c)rrr4rZ get_suffixr$)rrr r7r*n2r r r test_get_suffixfszTestNodes.test_get_suffixcCsDtdd}tjdgdd}|||tdd}|||dS)Nr3r r&ri)rr4rr))rr7r@n3r r r test_node_equalityvs    zTestNodes.test_node_equalitycCsjtdd}tdd}td|g}td|g}|||tdd}td|g}|||dS)Nrrr3r()rrr4rr))rrr r7r@r*rBr 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(r3-) rrr4rr5assertIsInstancerr.r/replacer0)rrr r*r7Zl2newr r r test_replaces      zTestNodes.test_replacecCsvtdd}tdd}tdd}td|||g}|tddtddg|t|d||jtdS)NrrrEr(r3*zfoo**bar) rrr4rHrrrGr5r)rrr r*r7r r r test_replace_with_lists   z TestNodes.test_replace_with_listcCsptdd}tdd}tdd}td||g}td|g}td||g}|t||||gdSNrrr(Zfooeyr3)rrr4rrleaves)rrr r*r@rBr7r r r test_leavess   zTestNodes.test_leavescCsxtdd}tdd}td||g}tdg}td||g}||d||d||ddS)Nrrr(r3r"rr)rrr4rdepth)rrr r@rBr7r r r test_depths   zTestNodes.test_depthcCsftdd}tdd}tdd}td||g}td||g}|t||||||gdSrL)rrr4rrZ post_orderrrr r*c1r7r r r test_post_orders    zTestNodes.test_post_ordercCsftdd}tdd}tdd}td||g}td||g}|t||||||gdSrL)rrr4rrZ pre_orderrQr 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)Nrfr3rrEr()rrr.r/changedr0r4)rrr7r r*r@r r r test_changeds*              zTestNodes.test_changedcCs@dD]6}tjdd|d}|t||d||j|qdS)NZxyz_r-rrr=)rrr0rrr$)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) NrXrrr_r=r3Zself_foo)rrr4r0rrr$)rr$rr r7r 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)Nrrr3rr) rrr4rremover5parentr.r/r0)rrr r7r@r r r test_removes&     zTestNodes.test_removecCsHtdg}|||jdtdd}|||jddS)Nr3rr)rr4r\rr]r)rr7rr 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)Nrrr3r(r) rrr4Z set_childrr]r5 assertRaises IndexError Exceptionr)rrr7r r@r r r test_node_set_childs    zTestNodes.test_node_set_childcCstdd}td|g}tdd}|d|||j|||j||gtdd}|d|||j|||g|t|jdt dS)Nrrr3r(rabcr") rrr4Z insert_childrr]r5rarcr)rrr7r 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)Nr3rrr() rr4rZ append_childrr]r5rarcr)rr7rr r r r test_node_append_child3s     z TestNodes.test_node_append_childcCsVtdg}tdg}td||g}||j|||jd||jddSNr3)rr4assertIs next_siblingrrr7r@p1r r r test_node_next_siblingCs   z TestNodes.test_node_next_siblingcCsVtdd}tdd}td||g}||j|||jd||jddSNrr<r>r3)rrr4rirjrrrr rlr r r test_leaf_next_siblingLs   z TestNodes.test_leaf_next_siblingcCsVtdg}tdg}td||g}||j|||jd||jddSrh)rr4ri prev_siblingrrkr r r test_node_prev_siblingUs   z TestNodes.test_node_prev_siblingcCsVtdd}tdd}td||g}||j|||jd||jddSrn)rrr4rirqrror r r test_leaf_prev_sibling^s   z TestNodes.test_leaf_prev_siblingN)$__name__ __module__ __qualname____doc__rrrr!r%r,r1r8r9r:r;rArCrDrIrKrNrPrSrTrWrYr[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(r3plname)resultspn)r}ry) rrr4 LeafPatternr.matchrr0 NodePattern) rrr r*r7r@rootryrr}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(r3ryrzr}pw)ryr}r)ryr) rrr4r~rWildcardPatternr.Z match_seqrr0r keysri) rrr r*r7r@rryr}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?derUr3papbpcpdpepfr`r)minmaxr{cSsg|] }|dqS)rr ).0xr r r z6TestPatterns.test_generate_matches..)r#r"r`pr)rZcontentr{rZabcdefp) rrr4r~rrZgenerate_matchesrrlenr)rZlaZlbZlcZldleZlfrMrrrrrrrrrmatchesr?rr r r test_generate_matchess>         z"TestPatterns.test_generate_matchescCstdtdtjddtdf}tdd}tdd}tdd }td|||g}i}||||||d|gdS) NiKargsrz(rr)) rrr~rrr4r0rr)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