@@ -184,11 +184,13 @@ def setUp(self):
184
184
self .table = Table (self .rows , ['test' , 'null' ], [DateTime (), DateTime ()])
185
185
186
186
self .time_delta_rows = [
187
- [datetime .timedelta (seconds = 10 ), None ],
188
- [datetime .timedelta (seconds = 20 ), None ],
187
+ [datetime .timedelta (seconds = 10 ), datetime . timedelta ( seconds = 15 ), None ],
188
+ [datetime .timedelta (seconds = 20 ), None , None ],
189
189
]
190
190
191
- self .time_delta_table = Table (self .time_delta_rows , ['test' , 'null' ], [TimeDelta (), TimeDelta ()])
191
+ self .time_delta_table = Table (
192
+ self .time_delta_rows , ['test' , 'mixed' , 'null' ], [TimeDelta (), TimeDelta (), TimeDelta ()]
193
+ )
192
194
193
195
def test_min (self ):
194
196
self .assertIsInstance (Min ('test' ).get_aggregate_data_type (self .table ), DateTime )
@@ -216,6 +218,27 @@ def test_max_time_delta(self):
216
218
Max ('test' ).validate (self .time_delta_table )
217
219
self .assertEqual (Max ('test' ).run (self .time_delta_table ), datetime .timedelta (0 , 20 ))
218
220
221
+ def test_mean (self ):
222
+ with self .assertWarns (NullCalculationWarning ):
223
+ Mean ('mixed' ).validate (self .time_delta_table )
224
+
225
+ Mean ('test' ).validate (self .time_delta_table )
226
+
227
+ self .assertEqual (Mean ('test' ).run (self .time_delta_table ), datetime .timedelta (seconds = 15 ))
228
+
229
+ def test_mean_all_nulls (self ):
230
+ self .assertIsNone (Mean ('null' ).run (self .time_delta_table ))
231
+
232
+ def test_mean_with_nulls (self ):
233
+ warnings .simplefilter ('ignore' )
234
+
235
+ try :
236
+ Mean ('mixed' ).validate (self .time_delta_table )
237
+ finally :
238
+ warnings .resetwarnings ()
239
+
240
+ self .assertAlmostEqual (Mean ('mixed' ).run (self .time_delta_table ), datetime .timedelta (seconds = 15 ))
241
+
219
242
def test_sum (self ):
220
243
self .assertIsInstance (Sum ('test' ).get_aggregate_data_type (self .time_delta_table ), TimeDelta )
221
244
Sum ('test' ).validate (self .time_delta_table )
0 commit comments