def testVirtualFlatten(self, timeseries_model): def side_effect(slug__in): return self.getTimeSeriesFilterReturnValue(slug__in, include_virtual=True) timeseries_model.objects.filter.side_effect = side_effect timeseries = self.test_timeseries['v2'] equation = combine.evaluate_equation(timeseries['equation']) self.assertEqual(unicode(equation._timeseries), 'v1') equation.flatten() self.assertEqual(unicode(equation._timeseries), u'a + b ÷ c') self.assertEqual(timeseries_model.objects.filter.call_args_list, [((), {'slug__in': set(['v1'])}), ((), {'slug__in': set(['a', 'b', 'c'])})]) timeseries_model.objects.filter.reset_mock() evaluator = equation.get_evaluator() self.assertEqual(equation.get_slugs(), set('abc')) for i in range(10): readings = self.getTestReadings() self.assertEqual(evaluator(readings), timeseries['func'](readings)) self.assertFalse(timeseries_model.objects.filter.called)
def testVirtualNested(self, timeseries_model): def side_effect(slug__in): return self.getTimeSeriesFilterReturnValue(slug__in, include_virtual=True) timeseries_model.objects.filter.side_effect = side_effect timeseries = self.test_timeseries['v3'] equation = combine.evaluate_equation(timeseries['equation']) evaluator = equation.get_evaluator() self.assertEqual(equation.get_slugs(), set('abcd')) for i in range(10): readings = self.getTestReadings() self.assertEqual(evaluator(readings), timeseries['func'](readings))
def testSimple(self, timeseries_model): timeseries_model.objects.filter.return_value = self.getTimeSeriesFilterReturnValue(['a', 'b', 'c']) timeseries = self.test_timeseries['v1'] equation = combine.evaluate_equation(timeseries['equation']) evaluator = equation.get_evaluator() self.assertEqual(equation.get_slugs(), set('abc')) timeseries_model.objects.filter.assert_called_once_with(slug__in=set(['a', 'b', 'c'])) timeseries_model.objects.filter.reset_mock() for i in range(10): readings = self.getTestReadings() self.assertEqual(evaluator(readings), timeseries['func'](readings)) self.assertFalse(timeseries_model.objects.filter.called)
def testVirtualWithout(self): timeseries = self.test_timeseries['v2'] equation = combine.evaluate_equation(timeseries['equation']) self.assertRaises(NameError, equation.get_evaluator)
def testSimpleWithMissing(self): timeseries = self.test_timeseries['v1'] equation = combine.evaluate_equation(timeseries['equation']) self.assertRaises(NameError, equation.get_evaluator)
def testEvaluate(self): for timeseries in self.test_timeseries.itervalues(): combine.evaluate_equation(timeseries['equation'])