def test_drawer_getlatex(ordered): old_latex = _drawer.to_latex _drawer.to_latex = lambda x, drawing_order, draw_gates_in_parallel: x drawer = CircuitDrawer() drawer.set_qubit_locations({0: 1, 1: 0}) drawer2 = CircuitDrawer() eng = MainEngine(drawer, [drawer2]) qureg = eng.allocate_qureg(2) H | qureg[1] H | qureg[0] X | qureg[0] CNOT | (qureg[0], qureg[1]) lines = drawer2.get_latex(ordered=ordered) assert len(lines) == 2 assert len(lines[0]) == 4 assert len(lines[1]) == 3 # check if it was sent on correctly: lines = drawer.get_latex(ordered=ordered) assert len(lines) == 2 assert len(lines[0]) == 3 assert len(lines[1]) == 4 _drawer.to_latex = old_latex
def test_drawer_qubitmapping(): drawer = CircuitDrawer() # mapping should still work (no gate has been applied yet) valid_mappings = [{0: 1, 1: 0}, {2: 1, 1: 2}] for valid_mapping in valid_mappings: drawer.set_qubit_locations(valid_mapping) drawer = CircuitDrawer() # invalid mapping should raise an error: invalid_mappings = [{3: 1, 0: 2}, {0: 1, 2: 1}] for invalid_mapping in invalid_mappings: drawer = CircuitDrawer() with pytest.raises(RuntimeError): drawer.set_qubit_locations(invalid_mapping) eng = MainEngine(drawer, []) qubit = eng.allocate_qubit() # mapping has begun --> can't assign it anymore with pytest.raises(RuntimeError): drawer.set_qubit_locations({0: 1, 1: 0})