def test_largest_collect_unused_collects(): q00 = GridQubit(0, 0) q01 = GridQubit(0, 1) q02 = GridQubit(0, 2) q12 = GridQubit(1, 2) qubits = [q00, q01, q02, q12] start = q01 search = LargestAreaGreedySequenceSearch(_create_device(qubits), start) assert search._collect_unused(start, {q00, q01}) == {q01, q02, q12}
def test_largest_sequence_search_does_not_use_used(): q00 = GridQubit(0, 0) q10 = GridQubit(1, 0) q20 = GridQubit(2, 0) q21 = GridQubit(2, 1) qubits = [q00, q10, q20, q21] search = LargestAreaGreedySequenceSearch(_create_device(qubits), q10) # +-* X # # + assert search._choose_next_qubit(q10, {q10, q20}) == q00
def test_largest_collect_stops_on_used(): q00 = GridQubit(0, 0) q01 = GridQubit(0, 1) q02 = GridQubit(0, 2) q03 = GridQubit(0, 3) q04 = GridQubit(0, 4) q05 = GridQubit(0, 5) q11 = GridQubit(1, 1) q14 = GridQubit(1, 4) q24 = GridQubit(2, 4) qubits = [q00, q01, q11, q02, q03, q04, q05, q14, q24] start = q02 search = LargestAreaGreedySequenceSearch(_create_device(qubits), start) assert search._collect_unused(start, {start, q04}) == {q00, q01, q11, q02, q03}
def test_largest_collect_stops_on_used(): q00 = XmonQubit(0, 0) q01 = XmonQubit(0, 1) q02 = XmonQubit(0, 2) q03 = XmonQubit(0, 3) q04 = XmonQubit(0, 4) q05 = XmonQubit(0, 5) q11 = XmonQubit(1, 1) q14 = XmonQubit(1, 4) q24 = XmonQubit(2, 4) qubits = [q00, q01, q11, q02, q03, q04, q05, q14, q24] start = q02 search = LargestAreaGreedySequenceSearch(_create_device(qubits), start) assert search._collect_unused(start, {start, q04}) == {q00, q01, q11, q02, q03}
def test_largest_sequence_search_traverses_grid(): q00 = GridQubit(0, 0) q10 = GridQubit(1, 0) q11 = GridQubit(1, 1) q20 = GridQubit(2, 0) q30 = GridQubit(3, 0) q40 = GridQubit(4, 0) q41 = GridQubit(4, 1) q42 = GridQubit(4, 2) q50 = GridQubit(5, 0) qubits = [q00, q10, q11, q20, q30, q40, q50, q41, q42] search = LargestAreaGreedySequenceSearch(_create_device(qubits), q20) # + + +-+-+ + # | # + + # | # + assert search._choose_next_qubit(q20, {q20}) == q30 assert search._choose_next_qubit(q30, {q20, q30}) == q40 assert search._choose_next_qubit(q40, {q20, q30, q40}) == q41 assert search._choose_next_qubit(q41, {q20, q30, q40, q41}) == q42 assert search._choose_next_qubit(q42, {q20, q30, q40, q41, q42}) is None