Example #1
0
    def test_expr_mul(self):
        e = E('propname') * 5
        ast = e.get_ast()

        self.assertEqual(
            ast, {
                'name':
                'op_mul',
                'val': [{
                    'name': 'ref',
                    'val': 'propname'
                }, {
                    'name': 'val',
                    'val': 5
                }]
            })

        e = 5 * E('propname')
        ast = e.get_ast()

        self.assertEqual(
            ast, {
                'name':
                'op_mul',
                'val': [{
                    'name': 'val',
                    'val': 5
                }, {
                    'name': 'ref',
                    'val': 'propname'
                }]
            })
Example #2
0
    def test_complex_expr(self):
        e = (E('foo') + E('bar')) + (E('baz') + E('biz'))
        ast = e.get_ast()

        self.assertEqual(
            ast, {
                'name':
                'op_add',
                'val': [{
                    'name':
                    'op_add',
                    'val': [{
                        'name': 'ref',
                        'val': 'foo'
                    }, {
                        'name': 'ref',
                        'val': 'bar'
                    }]
                }, {
                    'name':
                    'op_add',
                    'val': [{
                        'name': 'ref',
                        'val': 'baz'
                    }, {
                        'name': 'ref',
                        'val': 'biz'
                    }]
                }]
            })
Example #3
0
    def test_expr_sub(self):
        e = E('propname') - 5
        ast = e.get_ast()

        self.assertEqual(
            ast, {
                'name':
                'op_sub',
                'val': [{
                    'name': 'ref',
                    'val': 'propname'
                }, {
                    'name': 'val',
                    'val': 5
                }]
            })

        e = 5 - E('propname')
        ast = e.get_ast()

        self.assertEqual(
            ast, {
                'name':
                'op_sub',
                'val': [{
                    'name': 'val',
                    'val': 5
                }, {
                    'name': 'ref',
                    'val': 'propname'
                }]
            })
Example #4
0
    def test_expr_and(self):
        e = E('propname') & 5
        ast = e.get_ast()

        self.assertEqual(
            ast, {
                'name':
                'op_and',
                'val': [{
                    'name': 'ref',
                    'val': 'propname'
                }, {
                    'name': 'val',
                    'val': 5
                }]
            })

        e = 5 & E('propname')
        ast = e.get_ast()

        self.assertEqual(
            ast, {
                'name':
                'op_and',
                'val': [{
                    'name': 'val',
                    'val': 5
                }, {
                    'name': 'ref',
                    'val': 'propname'
                }]
            })
Example #5
0
    def test_expr_xor(self):
        e = E('propname') ^ 5
        ast = e.get_ast()

        self.assertEqual(
            ast, {
                'name':
                'op_xor',
                'val': [{
                    'name': 'ref',
                    'val': 'propname'
                }, {
                    'name': 'val',
                    'val': 5
                }]
            })

        e = 5 ^ E('propname')
        ast = e.get_ast()

        self.assertEqual(
            ast, {
                'name':
                'op_xor',
                'val': [{
                    'name': 'val',
                    'val': 5
                }, {
                    'name': 'ref',
                    'val': 'propname'
                }]
            })
Example #6
0
    def test_expr_rshift(self):
        e = E('propname') >> 5
        ast = e.get_ast()

        self.assertEqual(
            ast, {
                'name':
                'op_rshift',
                'val': [{
                    'name': 'ref',
                    'val': 'propname'
                }, {
                    'name': 'val',
                    'val': 5
                }]
            })

        e = 5 >> E('propname')
        ast = e.get_ast()

        self.assertEqual(
            ast, {
                'name':
                'op_rshift',
                'val': [{
                    'name': 'val',
                    'val': 5
                }, {
                    'name': 'ref',
                    'val': 'propname'
                }]
            })
Example #7
0
    def test_expr_div(self):
        e = E('propname') / 5
        ast = e.get_ast()

        self.assertEqual(
            ast, {
                'name':
                'op_div',
                'val': [{
                    'name': 'ref',
                    'val': 'propname'
                }, {
                    'name': 'val',
                    'val': 5
                }]
            })

        e = 5 / E('propname')
        ast = e.get_ast()

        self.assertEqual(
            ast, {
                'name':
                'op_div',
                'val': [{
                    'name': 'val',
                    'val': 5
                }, {
                    'name': 'ref',
                    'val': 'propname'
                }]
            })
Example #8
0
    def test_query_group(self):
        expected = {'foo': ['bar', 'baz', 'biz']}
        attrs = {
            'find_elements.return_value': expected
        }
        self.feature.configure_mock(**attrs)

        result = self.query.all().group('foo', F('sum', E('bar')))

        self.assertEqual(result, expected)

        self.feature.find_elements.assert_called_with([
            {
                'name': 'group',
                'val': [
                    {
                        'name': 'prop',
                        'val': 'foo'
                    },
                    {
                        'name': 'func_sum',
                        'val': [
                            {
                                'name': 'ref',
                                'val': 'bar'
                            }
                        ]
                    }
                ]
            }
        ])
Example #9
0
    def test_in_condition(self):
        c = C('prop1') == E('prop2')
        ast = c.get_ast()

        self.assertEqual(
            ast, {
                'name':
                'cond_eq',
                'val': [{
                    'name': 'prop',
                    'val': 'prop1'
                }, {
                    'name': 'ref',
                    'val': 'prop2'
                }]
            })

        c = C('prop1') == (E('prop2') + E('prop3'))
        ast = c.get_ast()

        self.assertEqual(
            ast, {
                'name':
                'cond_eq',
                'val': [{
                    'name': 'prop',
                    'val': 'prop1'
                }, {
                    'name':
                    'op_add',
                    'val': [{
                        'name': 'ref',
                        'val': 'prop2'
                    }, {
                        'name': 'ref',
                        'val': 'prop3'
                    }]
                }]
            })
Example #10
0
    def test_expr_func(self):
        e = F('funcname', E('propname'), E('propname') * 5)
        ast = e.get_ast()

        self.assertEqual(
            ast, {
                'name':
                'func_funcname',
                'val': [{
                    'name': 'ref',
                    'val': 'propname'
                }, {
                    'name':
                    'op_mul',
                    'val': [{
                        'name': 'ref',
                        'val': 'propname'
                    }, {
                        'name': 'val',
                        'val': 5
                    }]
                }]
            })
Example #11
0
    def test_assign_expr(self):
        a = A('foo', E('bar'))
        ast = a.get_ast()

        self.assertEqual(
            ast, {
                'name':
                'assign',
                'val': [{
                    'name': 'prop',
                    'val': 'foo'
                }, {
                    'name': 'ref',
                    'val': 'bar'
                }]
            })
Example #12
0
    def test_simple_expr(self):
        e = E('propname')
        ast = e.get_ast()

        self.assertEqual(ast, {'name': 'ref', 'val': 'propname'})