Esempio n. 1
0
def test_date_arithmetics():
    d1 = api.date('2015-01-02')
    d2 = api.date('2017-01-01')
    i1 = api.interval(weeks=3)

    for expr in [d1 - d2, d2 - d1]:
        assert isinstance(expr, ir.IntervalScalar)
        assert isinstance(expr.op(), ops.DateDiff)
        assert expr.type() == dt.Interval('D', dt.int32)

    for expr in [d1 - i1, d2 - i1]:
        assert isinstance(expr, ir.DateScalar)
        assert isinstance(expr.op(), ops.DateSub)

    for expr in [d1 + i1, d2 + i1]:
        assert isinstance(expr, ir.DateScalar)
        assert isinstance(expr.op(), ops.DateAdd)
Esempio n. 2
0
def test_invalid_date_arithmetics():
    d1 = api.date('2015-01-02')
    i1 = api.interval(seconds=300)
    i2 = api.interval(minutes=15)
    i3 = api.interval(hours=1)

    for i in [i1, i2, i3]:
        with pytest.raises(TypeError):
            d1 - i
        with pytest.raises(TypeError):
            d1 + i
Esempio n. 3
0
    ],
    ids=lambda op: op.__name__,
)
def test_interval_comparisons(unit, operands, operator, table):
    a, b = operands(table, unit)
    expr = operator(a, b)

    assert isinstance(a, ir.IntervalValue)
    assert isinstance(b, ir.IntervalValue)
    assert isinstance(expr, ir.BooleanValue)


@pytest.mark.parametrize(
    'operands',
    [
        lambda t: (api.date('2016-01-01'), api.date('2016-02-02')),
        lambda t: (t.j, api.date('2016-01-01')),
        lambda t: (api.date('2016-01-01'), t.j),
        lambda t: (t.j, t.i.date()),
        lambda t: (t.i.date(), t.j),
    ],
    ids=[
        'literal-literal',
        'column-literal',
        'literal-column',
        'column-casted',
        'casted-column',
    ],
)
@pytest.mark.parametrize(
    'interval',
Esempio n. 4
0
@pytest.mark.parametrize('operator', [
    operator.eq, operator.ne, operator.ge, operator.gt, operator.le,
    operator.lt
],
                         ids=lambda op: op.__name__)
def test_interval_comparisons(unit, operands, operator, table):
    a, b = operands(table, unit)
    expr = operator(a, b)

    assert isinstance(a, ir.IntervalValue)
    assert isinstance(b, ir.IntervalValue)
    assert isinstance(expr, ir.BooleanValue)


@pytest.mark.parametrize('operands', [
    lambda t: (api.date('2016-01-01'), api.date('2016-02-02')), lambda t:
    (t.j, api.date('2016-01-01')), lambda t:
    (api.date('2016-01-01'), t.j), lambda t: (t.j, t.i.date()), lambda t:
    (t.i.date(), t.j)
],
                         ids=[
                             'literal-literal', 'column-literal',
                             'literal-column', 'column-casted', 'casted-column'
                         ])
@pytest.mark.parametrize('interval', [
    lambda t: api.interval(years=4),
    lambda t: api.interval(quarters=4),
    lambda t: api.interval(months=3),
    lambda t: api.interval(weeks=2),
    lambda t: api.interval(days=1),
    lambda t: t.c.to_interval(unit='Y'),