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)
Exemple #2
0
    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])