def test_time_arithmetics(): t1 = api.time('18:00') t2 = api.time('19:12') i1 = api.interval(minutes=3) for expr in [t1 - t2, t2 - t1]: assert isinstance(expr, ir.IntervalScalar) assert isinstance(expr.op(), ops.TimeDiff) assert expr.type() == dt.Interval('s', dt.int32) for expr in [t1 - i1, t2 - i1]: assert isinstance(expr, ir.TimeScalar) assert isinstance(expr.op(), ops.TimeSub) for expr in [t1 + i1, t2 + i1]: assert isinstance(expr, ir.TimeScalar) assert isinstance(expr.op(), ops.TimeAdd)
'MICROSECOND', 'ns', 'nanosecond', 'NANOSECOND', ], ) def test_timestamp_truncate(table, operand, unit): expr = operand(table).truncate(unit) assert isinstance(expr, ir.TimestampValue) assert isinstance(expr.op(), ops.TimestampTruncate) @pytest.mark.parametrize( 'operand', [lambda t: api.date('2018-01-01'), lambda t: t.j] ) @pytest.mark.parametrize('unit', ['Y', 'Q', 'M', 'D', 'W']) def test_date_truncate(table, operand, unit): expr = operand(table).truncate(unit) assert isinstance(expr, ir.DateValue) assert isinstance(expr.op(), ops.DateTruncate) @pytest.mark.parametrize( 'operand', [lambda t: api.time('18:00'), lambda t: t.k] ) @pytest.mark.parametrize('unit', ['h', 'm', 's', 'ms', 'us', 'ns']) def test_time_truncate(table, operand, unit): expr = operand(table).truncate(unit) assert isinstance(expr, ir.TimeValue) assert isinstance(expr.op(), ops.TimeTruncate)
'us', 'microsecond', 'MICROSECOND', 'ns', 'nanosecond', 'NANOSECOND', ], ) def test_timestamp_truncate(table, operand, unit): expr = operand(table).truncate(unit) assert isinstance(expr, ir.TimestampValue) assert isinstance(expr.op(), ops.TimestampTruncate) @pytest.mark.parametrize('operand', [lambda t: api.date('2018-01-01'), lambda t: t.j]) @pytest.mark.parametrize('unit', ['Y', 'Q', 'M', 'D', 'W']) def test_date_truncate(table, operand, unit): expr = operand(table).truncate(unit) assert isinstance(expr, ir.DateValue) assert isinstance(expr.op(), ops.DateTruncate) @pytest.mark.parametrize('operand', [lambda t: api.time('18:00'), lambda t: t.k]) @pytest.mark.parametrize('unit', ['h', 'm', 's', 'ms', 'us', 'ns']) def test_time_truncate(table, operand, unit): expr = operand(table).truncate(unit) assert isinstance(expr, ir.TimeValue) assert isinstance(expr.op(), ops.TimeTruncate)
def test_timestamp_truncate(table, operand, unit): expr = operand(table).truncate(unit) assert isinstance(expr, ir.TimestampValue) assert isinstance(expr.op(), ops.TimestampTruncate) @pytest.mark.parametrize('operand', [ lambda t: api.date('2018-01-01'), lambda t: t.j, ]) @pytest.mark.parametrize('unit', [ 'Y', 'Q', 'M', 'D', 'W', ]) def test_date_truncate(table, operand, unit): expr = operand(table).truncate(unit) assert isinstance(expr, ir.DateValue) assert isinstance(expr.op(), ops.DateTruncate) @pytest.mark.parametrize('operand', [ lambda t: api.time('18:00'), lambda t: t.k ]) @pytest.mark.parametrize('unit', [ 'h', 'm', 's', 'ms', 'us', 'ns' ]) def test_time_truncate(table, operand, unit): expr = operand(table).truncate(unit) assert isinstance(expr, ir.TimeValue) assert isinstance(expr.op(), ops.TimeTruncate)