@@ -101,3 +101,32 @@ def keyfunc(obj):
101
101
102
102
data = [None , None , None , 20 ]
103
103
assert list (map (lambda x : x [0 ], list (groupby (data )))) == [None , 20 ]
104
+
105
+ def test_generators (self ):
106
+ # test that generators are accepted like input values
107
+
108
+ def g (seqn ):
109
+ for i in seqn :
110
+ yield i
111
+
112
+ def g2 (seqn ):
113
+ for i in seqn :
114
+ yield (i , i )
115
+
116
+ self .assertEqual (list (accumulate (g ([1 ,2 ]))), [1 , 3 ])
117
+ self .assertEqual (list (chain (g ([1 ,2 ]), g ([3 ,4 ]))), [1 , 2 , 3 , 4 ])
118
+ self .assertEqual (list (combinations (g ([1 ,2 ]), 2 )), [(1 , 2 )])
119
+ self .assertEqual (list (combinations_with_replacement (g ([1 ,2 ]), 2 )), [(1 , 1 ), (1 , 2 ), (2 , 2 )])
120
+ self .assertEqual (list (dropwhile (lambda a :0 , g ([1 ,2 ]))), [1 , 2 ])
121
+ self .assertEqual (list (filterfalse (lambda a :0 , g ([1 ,2 ]))), [1 , 2 ])
122
+ self .assertEqual (list (groupby (g ([1 ,2 ])))[0 ][0 ], 1 )
123
+ self .assertEqual (list (islice (g ([1 ,2 ,3 ]),2 )), [1 , 2 ])
124
+ self .assertEqual (list (permutations (g ([1 ,2 ]), 2 )), [(1 , 2 ), (2 , 1 )])
125
+ self .assertEqual (list (product (g ([1 ,2 ]), repeat = 2 )), [(1 , 1 ), (1 , 2 ), (2 , 1 ), (2 , 2 )])
126
+ self .assertEqual (list (starmap (pow , g2 ([2 ,3 ]))), [4 , 27 ])
127
+ c = cycle (g ([1 ,2 ]))
128
+ self .assertEqual (next (c ), 1 )
129
+ self .assertEqual (list (takewhile (lambda a :a , g ([1 ,2 ]))), [1 , 2 ])
130
+ self .assertEqual (list (tee (g ([1 , 2 ]))[0 ]), [1 , 2 ])
131
+ self .assertEqual (list (zip_longest (g2 ([2 ,3 ]))), [((2 , 2 ),), ((3 , 3 ),)])
132
+
0 commit comments