@@ -429,6 +429,35 @@ def test_overload2_empty(self):
429429 .to_list () == []
430430
431431
432+ class TestRunLengthEncodeMethod :
433+ def test_overload1 (self ):
434+ en = MoreEnumerable ('abbcaeeeaa' )
435+ assert en .run_length_encode ().to_list () \
436+ == [('a' , 1 ), ('b' , 2 ), ('c' , 1 ), ('a' , 1 ), ('e' , 3 ), ('a' , 2 )]
437+
438+ def test_overload1_empty (self ):
439+ en = MoreEnumerable (())
440+ assert en .run_length_encode ().to_list () == []
441+
442+ def test_overload1_one_run (self ):
443+ en = MoreEnumerable ('AAAAA' )
444+ assert en .run_length_encode ().to_list () == [('A' , 5 )]
445+
446+ def test_overload1_one_elem (self ):
447+ en = MoreEnumerable ('A' )
448+ assert en .run_length_encode ().to_list () == [('A' , 1 )]
449+
450+ def test_overload1_no_run (self ):
451+ en = MoreEnumerable ('abcdefghijklmnopqrstuvwxyz' )
452+ assert en .run_length_encode ().to_list () == \
453+ en .select (lambda x : (x , 1 )).to_list ()
454+
455+ def test_overload2 (self ):
456+ en = MoreEnumerable ('abBBbcaEeeff' )
457+ assert en .run_length_encode (lambda x , y : x .lower () == y .lower ()).to_list () \
458+ == [('a' , 1 ), ('b' , 4 ), ('c' , 1 ), ('a' , 1 ), ('E' , 3 ), ('f' , 2 )]
459+
460+
432461class TestCycleMethod :
433462 def test_repeat (self ):
434463 en = MoreEnumerable ([1 , 2 , 3 ])
0 commit comments