def test_functions(self, function_name, args, expected_result, is_aggregating=False): # type: (str, List[EvaluatableNode], List[PythonType], bool) -> None context = EvaluationContext(self.small_table_context) context.add_table_from_node( TableReference(('my_project', 'my_dataset', 'my_table')), EMPTY_NODE) if is_aggregating: context.do_group_by((), []) result = FunctionCall.create(function_name, args, EMPTY_NODE).evaluate(context) assert isinstance(result, TypedSeries) self.assertEqual([result.type_.convert(elt) for elt in result.series], expected_result)
def test_selector_group_by_success(self): # type: () -> None selector = Selector(Field(('c',)), EMPTY_NODE) selector.position = 1 context = EvaluationContext(self.large_table_context) context.add_table_from_node(TableReference(('my_project', 'my_dataset', 'my_table')), EMPTY_NODE) context.exclude_aggregation = True updated_selector, = context.do_group_by([selector], [Field(('my_table', 'c'))]) typed_series = updated_selector.evaluate(context) assert isinstance(typed_series, TypedSeries) self.assertEqual(list(typed_series.series), [3])