@@ -527,4 +527,39 @@ def test_in_and_not_in(self):
527527 except OSError :
528528 pass
529529
530+ # Test iterators with operator.countOf (PySequence_Count).
531+ def test_countOf (self ):
532+ from operator import countOf
533+ self .assertEqual (countOf ([1 ,2 ,2 ,3 ,2 ,5 ], 2 ), 3 )
534+ self .assertEqual (countOf ((1 ,2 ,2 ,3 ,2 ,5 ), 2 ), 3 )
535+ self .assertEqual (countOf ("122325" , "2" ), 3 )
536+ self .assertEqual (countOf ("122325" , "6" ), 0 )
537+
538+ self .assertRaises (TypeError , countOf , 42 , 1 )
539+ self .assertRaises (TypeError , countOf , countOf , countOf )
540+
541+ d = {"one" : 3 , "two" : 3 , "three" : 3 , 1j : 2j }
542+ for k in d :
543+ self .assertEqual (countOf (d , k ), 1 )
544+ self .assertEqual (countOf (d .itervalues (), 3 ), 3 )
545+ self .assertEqual (countOf (d .itervalues (), 2j ), 1 )
546+ self .assertEqual (countOf (d .itervalues (), 1j ), 0 )
547+
548+ f = open (TESTFN , "w" )
549+ try :
550+ f .write ("a\n " "b\n " "c\n " "b\n " )
551+ finally :
552+ f .close ()
553+ f = open (TESTFN , "r" )
554+ try :
555+ for letter , count in ("a" , 1 ), ("b" , 2 ), ("c" , 1 ), ("d" , 0 ):
556+ f .seek (0 , 0 )
557+ self .assertEqual (countOf (f , letter + "\n " ), count )
558+ finally :
559+ f .close ()
560+ try :
561+ unlink (TESTFN )
562+ except OSError :
563+ pass
564+
530565run_unittest (TestCase )
0 commit comments