def test_exclude(): q = ops.QubitId() zero = Timestamp(picos=0) ps = Duration(picos=1) op = ScheduledOperation(zero, ps, ops.H(q)) schedule = Schedule(device=UnconstrainedDevice, scheduled_operations=[op]) assert not schedule.exclude(ScheduledOperation(zero + ps, ps, ops.H(q))) assert not schedule.exclude(ScheduledOperation(zero, ps, ops.X(q))) assert schedule.query(time=zero, duration=ps * 10) == [op] assert schedule.exclude(ScheduledOperation(zero, ps, ops.H(q))) assert schedule.query(time=zero, duration=ps * 10) == [] assert not schedule.exclude(ScheduledOperation(zero, ps, ops.H(q)))
def test_query_overlapping_operations_exclusive(): q = ops.QubitId() zero = Timestamp(picos=0) ps = Duration(picos=1) op1 = ScheduledOperation(zero, 2 * ps, ops.H(q)) op2 = ScheduledOperation(zero + ps, 2 * ps, ops.H(q)) schedule = Schedule(device=UnconstrainedDevice, scheduled_operations=[op2, op1]) assert schedule.query(time=zero - 0.5 * ps, duration=ps) == [op1] assert schedule.query(time=zero - 0.5 * ps, duration=2 * ps) == [op1, op2] assert schedule.query(time=zero, duration=ps) == [op1] assert schedule.query(time=zero + 0.5 * ps, duration=ps) == [op1, op2] assert schedule.query(time=zero + ps, duration=ps) == [op1, op2] assert schedule.query(time=zero + 1.5 * ps, duration=ps) == [op1, op2] assert schedule.query(time=zero + 2.0 * ps, duration=ps) == [op2] assert schedule.query(time=zero + 2.5 * ps, duration=ps) == [op2] assert schedule.query(time=zero + 3.0 * ps, duration=ps) == [] assert schedule.query(time=zero + 3.5 * ps, duration=ps) == []
def test_include(): q0 = ops.QubitId() q1 = ops.QubitId() zero = Timestamp(picos=0) ps = Duration(picos=1) schedule = Schedule(device=UnconstrainedDevice) op0 = ScheduledOperation(zero, ps, ops.H(q0)) schedule.include(op0) with pytest.raises(ValueError): schedule.include(ScheduledOperation(zero, ps, ops.H(q0))) schedule.include(ScheduledOperation(zero + 0.5 * ps, ps, ops.H(q0))) op1 = ScheduledOperation(zero + 2 * ps, ps, ops.H(q0)) schedule.include(op1) op2 = ScheduledOperation(zero + 0.5 * ps, ps, ops.H(q1)) schedule.include(op2) assert schedule.query(time=zero, duration=ps * 10) == [op0, op2, op1]
def test_query_point_operation_exclusive(): q = ops.QubitId() zero = Timestamp(picos=0) ps = Duration(picos=1) op = ScheduledOperation(zero, Duration(), ops.H(q)) schedule = Schedule(device=UnconstrainedDevice, scheduled_operations=[op]) assert schedule.query(time=zero, include_query_end_time=False, include_op_end_times=False) == [] assert schedule.query(time=zero + ps, include_query_end_time=False, include_op_end_times=False) == [] assert schedule.query(time=zero - ps, include_query_end_time=False, include_op_end_times=False) == [] assert schedule.query(time=zero) == [] assert schedule.query(time=zero + ps) == [] assert schedule.query(time=zero - ps) == [] assert schedule.query(time=zero, qubits=[]) == [] assert schedule.query(time=zero, qubits=[q]) == [] assert schedule.query(time=zero, duration=ps) == [] assert schedule.query(time=zero - 0.5 * ps, duration=ps) == [op] assert schedule.query(time=zero - ps, duration=ps) == [] assert schedule.query(time=zero - 2 * ps, duration=ps) == [] assert schedule.query(time=zero - ps, duration=3 * ps) == [op] assert schedule.query(time=zero + ps, duration=ps) == []