@@ -2852,8 +2852,12 @@ def test_findall(self):
28522852 ['tag' ] * 3 )
28532853 self .assertEqual (summarize_list (e .findall ('.//tag[@class="a"]' )),
28542854 ['tag' ])
2855+ self .assertEqual (summarize_list (e .findall ('.//tag[@class!="a"]' )),
2856+ ['tag' ] * 2 )
28552857 self .assertEqual (summarize_list (e .findall ('.//tag[@class="b"]' )),
28562858 ['tag' ] * 2 )
2859+ self .assertEqual (summarize_list (e .findall ('.//tag[@class!="b"]' )),
2860+ ['tag' ])
28572861 self .assertEqual (summarize_list (e .findall ('.//tag[@id]' )),
28582862 ['tag' ])
28592863 self .assertEqual (summarize_list (e .findall ('.//section[tag]' )),
@@ -2875,6 +2879,19 @@ def test_findall(self):
28752879 self .assertEqual (summarize_list (e .findall (".//section[ tag = 'subtext' ]" )),
28762880 ['section' ])
28772881
2882+ # Negations of above tests. They match nothing because the sole section
2883+ # tag has subtext.
2884+ self .assertEqual (summarize_list (e .findall (".//section[tag!='subtext']" )),
2885+ [])
2886+ self .assertEqual (summarize_list (e .findall (".//section[tag !='subtext']" )),
2887+ [])
2888+ self .assertEqual (summarize_list (e .findall (".//section[tag!= 'subtext']" )),
2889+ [])
2890+ self .assertEqual (summarize_list (e .findall (".//section[tag != 'subtext']" )),
2891+ [])
2892+ self .assertEqual (summarize_list (e .findall (".//section[ tag != 'subtext' ]" )),
2893+ [])
2894+
28782895 self .assertEqual (summarize_list (e .findall (".//tag[.='subtext']" )),
28792896 ['tag' ])
28802897 self .assertEqual (summarize_list (e .findall (".//tag[. ='subtext']" )),
@@ -2890,6 +2907,24 @@ def test_findall(self):
28902907 self .assertEqual (summarize_list (e .findall (".//tag[.= ' subtext']" )),
28912908 [])
28922909
2910+ # Negations of above tests.
2911+ # Matches everything but the tag containing subtext
2912+ self .assertEqual (summarize_list (e .findall (".//tag[.!='subtext']" )),
2913+ ['tag' ] * 3 )
2914+ self .assertEqual (summarize_list (e .findall (".//tag[. !='subtext']" )),
2915+ ['tag' ] * 3 )
2916+ self .assertEqual (summarize_list (e .findall ('.//tag[.!= "subtext"]' )),
2917+ ['tag' ] * 3 )
2918+ self .assertEqual (summarize_list (e .findall ('.//tag[ . != "subtext" ]' )),
2919+ ['tag' ] * 3 )
2920+ self .assertEqual (summarize_list (e .findall (".//tag[. != 'subtext']" )),
2921+ ['tag' ] * 3 )
2922+ # Matches all tags.
2923+ self .assertEqual (summarize_list (e .findall (".//tag[. != 'subtext ']" )),
2924+ ['tag' ] * 4 )
2925+ self .assertEqual (summarize_list (e .findall (".//tag[.!= ' subtext']" )),
2926+ ['tag' ] * 4 )
2927+
28932928 # duplicate section => 2x tag matches
28942929 e [1 ] = e [2 ]
28952930 self .assertEqual (summarize_list (e .findall (".//section[tag = 'subtext']" )),
0 commit comments