Skip to content

Commit 273eec6

Browse files
committed
Add parameter equality tests
1 parent 73cb441 commit 273eec6

File tree

1 file changed

+39
-0
lines changed

1 file changed

+39
-0
lines changed

test/python/circuit/test_circuit_load_from_qpy.py

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1121,6 +1121,45 @@ def test_parameter_vector(self):
11211121
self.assertEqual([x.name for x in new_circuit.parameters], expected_params)
11221122
self.assertDeprecatedBitProperties(qc, new_circuit)
11231123

1124+
def test_parameter_vector_equality(self):
1125+
"""Test parameter vector equality after serialization."""
1126+
1127+
def dump_load_param_vec(qc):
1128+
params = qc.parameters
1129+
vector = qc.parameters[0].vector
1130+
qpy_file = io.BytesIO()
1131+
dump(qc, qpy_file)
1132+
qpy_file.seek(0)
1133+
new_circuit = load(qpy_file)[0]
1134+
new_params = new_circuit.parameters
1135+
new_vector = new_circuit.parameters[0].vector
1136+
return params, new_params, vector, new_vector
1137+
1138+
with self.subTest("manual"):
1139+
x = ParameterVector("γ", 2)
1140+
qc = QuantumCircuit(3)
1141+
qc.rzz(x[0], 0, 1)
1142+
with self.assertWarns(UserWarning):
1143+
params, new_params, vector, new_vector = dump_load_param_vec(qc)
1144+
1145+
self.assertTrue(all(p == q for p, q in zip(params, new_params)))
1146+
# vector[0] is part of the circuit
1147+
self.assertTrue(vector[0] == new_vector[0])
1148+
# vector[1] is not part of the circuit
1149+
self.assertTrue(vector[1] != new_vector[1])
1150+
1151+
with self.subTest("real_amplitudes"):
1152+
qc = real_amplitudes(2, reps=1)
1153+
params, new_params, vector, new_vector = dump_load_param_vec(qc)
1154+
self.assertTrue(all(p == q for p, q in zip(params, new_params)))
1155+
self.assertTrue(all(p == q for p, q in zip(vector, new_vector)))
1156+
1157+
with self.subTest("zz_feature_map"):
1158+
qc = zz_feature_map(2, reps=1)
1159+
params, new_params, vector, new_vector = dump_load_param_vec(qc)
1160+
self.assertTrue(all(p == q for p, q in zip(params, new_params)))
1161+
self.assertTrue(all(p == q for p, q in zip(vector, new_vector)))
1162+
11241163
def test_parameter_vector_element_in_expression(self):
11251164
"""Test a circuit with a parameter vector used in a parameter expression."""
11261165
qc = QuantumCircuit(7)

0 commit comments

Comments
 (0)