Exemplo n.º 1
0
 def test_multiple_stmts_on_pipeline(self):
     parsed = parse('pipeline(bar): {foo(.bar) fuzz(.bar)}')
     assert parsed == [
         Symbol.PIPELINE, [Symbol('bar')],
         [Symbol('foo'), [Symbol.COLUMN, 'bar']],
         [Symbol('fuzz'), [Symbol.COLUMN, 'bar']]
     ]
Exemplo n.º 2
0
 def test_pipeline_declaration(self):
     assert parse('pipeline(bar): {foo()}') == [
         Symbol.PIPELINE, [Symbol('bar')], [Symbol('foo')]
     ]
     assert parse('pipeline(bar, fuzz): {foo()}') == [
         Symbol.PIPELINE, [Symbol('bar'), Symbol('fuzz')], [Symbol('foo')]
     ]
Exemplo n.º 3
0
    def test_builtin_functions_exist_in_default_env(self):
        e = env()

        assert Symbol('drop') in e
        assert Symbol('dropna') in e
        assert Symbol('read_file') in e
        assert Symbol('export_csv') in e
Exemplo n.º 4
0
 def test_sum_using_attr_call(self):
     assert parse('foo.bar + fuzz.buzz') == [
         Symbol('+'), [Symbol.ATTR,
                       Symbol('foo'),
                       Symbol('bar')],
         [Symbol.ATTR, Symbol('fuzz'),
          Symbol('buzz')]
     ]
Exemplo n.º 5
0
 def test_assignment_function(self):
     assert parse('bar = foo(1)') == [
         Symbol.ASSIGNMENT,
         Symbol('bar'), [Symbol('foo'), 1]
     ]
     assert parse('bar = foo(1, 2)') == [
         Symbol.ASSIGNMENT,
         Symbol('bar'), [Symbol('foo'), 1, 2]
     ]
Exemplo n.º 6
0
 def test_function_call_mixed_arguments(self):
     assert parse('foo(1, 1+2, x, .col, fuzz.buzz, p())') == [
         Symbol('foo'), 1, [Symbol('+'), 1, 2],
         Symbol('x'), [Symbol.COLUMN, 'col'],
         [Symbol.ATTR, Symbol('fuzz'),
          Symbol('buzz')], [Symbol('p')]
     ]
Exemplo n.º 7
0
 def test_assignment_expr(self):
     assert parse('bar = 1 + 2') == [
         Symbol.ASSIGNMENT,
         Symbol('bar'), [Symbol('+'), 1, 2]
     ]
     assert parse('bar = 1 * 2') == [
         Symbol.ASSIGNMENT,
         Symbol('bar'), [Symbol('*'), 1, 2]
     ]
     assert parse('bar = (1 + 2) * 5') == [
         Symbol.ASSIGNMENT,
         Symbol('bar'), [Symbol('*'), [Symbol('+'), 1, 2], 5]
     ]
Exemplo n.º 8
0
    def test_pipeline_execute_multiple_stmts(self, dataframe):
        e = env()
        e[Symbol('df')] = dataframe

        assert run('pipeline(df): {drop(.name) drop(.floats)}', env=e).equals(
                drop(dataframe, [Col('name'), Col('floats')]))
Exemplo n.º 9
0
 def test_assing_variable_using_expr(self):
     e = env()
     run('x = 1 + 2 + 3', e)
     assert e[Symbol('x')] == 6
Exemplo n.º 10
0
 def test_funcion_call_attr_call_as_argument(self):
     assert parse('foo(bar.fuzz)') == [
         Symbol('foo'), [Symbol.ATTR,
                         Symbol('bar'),
                         Symbol('fuzz')]
     ]
Exemplo n.º 11
0
 def test_function_call_variable_as_argument(self):
     assert parse('foo(bar)') == [Symbol('foo'), Symbol('bar')]
Exemplo n.º 12
0
 def test_function_call_exp_as_argument(self):
     assert parse('foo(1+2, 8*5)') == [
         Symbol('foo'), [Symbol('+'), 1, 2], [Symbol('*'), 8, 5]
     ]
Exemplo n.º 13
0
 def test_subtraction(self):
     assert parse('1 - 2') == [Symbol('-'), 1, 2]
Exemplo n.º 14
0
 def test_sum(self):
     assert parse('1 + 2') == [Symbol("+"), 1, 2]
Exemplo n.º 15
0
 def test_attribute_call(self):
     assert parse('bar.foo') == [Symbol.ATTR, Symbol('bar'), Symbol('foo')]
Exemplo n.º 16
0
 def test_precedence_using_functions(self):
     assert parse('(foo() + bar()) * 2') == [
         Symbol('*'), [Symbol('+'), [Symbol('foo')], [Symbol('bar')]], 2
     ]
Exemplo n.º 17
0
 def test_sum_using_strings(self):
     assert parse('"hello" + "world"') == [Symbol('+'), 'hello', 'world']
Exemplo n.º 18
0
 def test_multiplication(self):
     assert parse('1 * 2') == [Symbol('*'), 1, 2]
Exemplo n.º 19
0
 def test_basic_function_call(self):
     assert parse('foo()') == [Symbol('foo')]
Exemplo n.º 20
0
 def test_division(self):
     assert parse('1 / 2') == [Symbol('/'), 1, 2]
Exemplo n.º 21
0
 def test_function_call_passing_string_as_argument(self):
     assert parse('foo("bar")') == [Symbol('foo'), 'bar']
Exemplo n.º 22
0
 def test_precedence_of_mult_expr(self):
     assert parse('2 * 5 + 2') == [Symbol('+'), [Symbol('*'), 2, 5], 2]
     assert parse('2 / 5 + 2') == [Symbol('+'), [Symbol('/'), 2, 5], 2]
Exemplo n.º 23
0
 def test_function_call_sugar_column_as_argument(self):
     assert parse('foo(.col)') == [Symbol('foo'), [Symbol.COLUMN, 'col']]
Exemplo n.º 24
0
 def test_expression_with_parentheses(self):
     assert parse('(2 + 4)') == [Symbol('+'), 2, 4]
Exemplo n.º 25
0
 def test_assign_variable_add_to_env(self):
     e = env()
     run('x = 1', e)
     assert e[Symbol('x')] == 1
Exemplo n.º 26
0
 def test_precedence_using_parentheses(self):
     assert parse('(2 + 5) * 3') == [Symbol('*'), [Symbol('+'), 2, 5], 3]
Exemplo n.º 27
0
    def test_pipeline_execute_stmts(self, dataframe):
        e = env()
        e[Symbol('df')] = dataframe

        assert run('pipeline(df): {drop(.name)}', env=e).equals(
                drop(dataframe, Col('name')))
Exemplo n.º 28
0
 def test_expression_with_variables(self):
     assert parse('foo + bar + 2') == [
         Symbol('+'), [Symbol('+'),
                       Symbol('foo'),
                       Symbol('bar')], 2
     ]
Exemplo n.º 29
0
    def test_attr_call_on_var(self, dataframe):
        e = env()
        e[Symbol('df')] = dataframe

        assert run('df.columns').equals(dataframe.columns)
Exemplo n.º 30
0
 def test_sum_using_functions(self):
     assert parse('foo() + bar() + 1') == [
         Symbol('+'), [Symbol('+'), [Symbol('foo')], [Symbol('bar')]], 1
     ]