def test_insert(self): """Test insert method.""" # Insert single row for j in range(1, 10): l_px = j * "X" l_mi = "-" + j * "I" stab = StabilizerTable(l_px) target0 = StabilizerTable.from_labels([l_mi, l_px]) target1 = StabilizerTable.from_labels([l_px, l_mi]) with self.subTest(msg=f"single row from str ({j})"): value0 = stab.insert(0, l_mi) self.assertEqual(value0, target0) value1 = stab.insert(1, l_mi) self.assertEqual(value1, target1) with self.subTest(msg=f"single row from StabilizerTable ({j})"): value0 = stab.insert(0, StabilizerTable(l_mi)) self.assertEqual(value0, target0) value1 = stab.insert(1, StabilizerTable(l_mi)) self.assertEqual(value1, target1) # Insert multiple rows for j in range(1, 10): stab = StabilizerTable(j * "X") insert = StabilizerTable.from_labels( ["-" + j * "I", j * "Y", "-" + j * "Z"]) target0 = insert + stab target1 = stab + insert with self.subTest(msg=f"multiple-rows from StabilizerTable ({j})"): value0 = stab.insert(0, insert) self.assertEqual(value0, target0) value1 = stab.insert(1, insert) self.assertEqual(value1, target1) # Insert single column stab = StabilizerTable.from_labels(["X", "Y", "Z"]) for sgn in ["+", "-"]: for i in ["I", "X", "Y", "Z"]: target0 = StabilizerTable.from_labels( [sgn + "X" + i, sgn + "Y" + i, sgn + "Z" + i]) target1 = StabilizerTable.from_labels( [sgn + i + "X", sgn + i + "Y", sgn + i + "Z"]) with self.subTest(msg="single-column single-val from str" " {}".format(sgn + i)): value = stab.insert(0, sgn + i, qubit=True) self.assertEqual(value, target0) value = stab.insert(1, sgn + i, qubit=True) self.assertEqual(value, target1) with self.subTest(msg="single-column single-val from" " StabilizerTable {}".format(sgn + i)): value = stab.insert(0, StabilizerTable(sgn + i), qubit=True) self.assertEqual(value, target0) value = stab.insert(1, StabilizerTable(sgn + i), qubit=True) self.assertEqual(value, target1) # Insert single column with multiple values stab = StabilizerTable.from_labels(["X", "Y", "Z"]) for i in [("I", "X", "Y"), ("X", "Y", "Z"), ("Y", "Z", "I")]: target0 = StabilizerTable.from_labels( ["X" + i[0], "Y" + i[1], "Z" + i[2]]) target1 = StabilizerTable.from_labels( [i[0] + "X", i[1] + "Y", i[2] + "Z"]) with self.subTest( msg="single-column multiple-vals from StabilizerTable"): value = stab.insert(0, StabilizerTable.from_labels(i), qubit=True) self.assertEqual(value, target0) value = stab.insert(1, StabilizerTable.from_labels(i), qubit=True) self.assertEqual(value, target1) with self.subTest(msg="single-column multiple-vals from array"): value = stab.insert(0, StabilizerTable.from_labels(i).array, qubit=True) self.assertEqual(value, target0) value = stab.insert(1, StabilizerTable.from_labels(i).array, qubit=True) self.assertEqual(value, target1) # Insert multiple columns from single stab = StabilizerTable.from_labels(["X", "Y", "Z"]) for j in range(1, 5): for i in [j * "I", j * "X", j * "Y", j * "Z"]: target0 = StabilizerTable.from_labels( ["X" + i, "Y" + i, "Z" + i]) target1 = StabilizerTable.from_labels( [i + "X", i + "Y", i + "Z"]) with self.subTest(msg="multiple-columns single-val from str"): value = stab.insert(0, i, qubit=True) self.assertEqual(value, target0) value = stab.insert(1, i, qubit=True) self.assertEqual(value, target1) with self.subTest( msg="multiple-columns single-val from StabilizerTable"): value = stab.insert(0, StabilizerTable(i), qubit=True) self.assertEqual(value, target0) value = stab.insert(1, StabilizerTable(i), qubit=True) self.assertEqual(value, target1) with self.subTest(msg="multiple-columns single-val from array"): value = stab.insert(0, StabilizerTable(i).array, qubit=True) self.assertEqual(value, target0) value = stab.insert(1, StabilizerTable(i).array, qubit=True) self.assertEqual(value, target1) # Insert multiple columns multiple row values stab = StabilizerTable.from_labels(["X", "Y", "Z"]) for j in range(1, 5): for i in [ (j * "I", j * "X", j * "Y"), (j * "X", j * "Z", j * "Y"), (j * "Y", j * "Z", j * "I"), ]: target0 = StabilizerTable.from_labels( ["X" + i[0], "Y" + i[1], "Z" + i[2]]) target1 = StabilizerTable.from_labels( [i[0] + "X", i[1] + "Y", i[2] + "Z"]) with self.subTest( msg="multiple-column multiple-vals from StabilizerTable" ): value = stab.insert(0, StabilizerTable.from_labels(i), qubit=True) self.assertEqual(value, target0) value = stab.insert(1, StabilizerTable.from_labels(i), qubit=True) self.assertEqual(value, target1) with self.subTest( msg="multiple-column multiple-vals from array"): value = stab.insert(0, StabilizerTable.from_labels(i).array, qubit=True) self.assertEqual(value, target0) value = stab.insert(1, StabilizerTable.from_labels(i).array, qubit=True) self.assertEqual(value, target1)
def test_insert(self): """Test insert method.""" # Insert single row for j in range(1, 10): l_px = j * 'X' l_mi = '-' + j * 'I' stab = StabilizerTable(l_px) target0 = StabilizerTable.from_labels([l_mi, l_px]) target1 = StabilizerTable.from_labels([l_px, l_mi]) with self.subTest(msg='single row from str ({})'.format(j)): value0 = stab.insert(0, l_mi) self.assertEqual(value0, target0) value1 = stab.insert(1, l_mi) self.assertEqual(value1, target1) with self.subTest( msg='single row from StabilizerTable ({})'.format(j)): value0 = stab.insert(0, StabilizerTable(l_mi)) self.assertEqual(value0, target0) value1 = stab.insert(1, StabilizerTable(l_mi)) self.assertEqual(value1, target1) # Insert multiple rows for j in range(1, 10): stab = StabilizerTable(j * 'X') insert = StabilizerTable.from_labels( ['-' + j * 'I', j * 'Y', '-' + j * 'Z']) target0 = insert + stab target1 = stab + insert with self.subTest( msg='multiple-rows from StabilizerTable ({})'.format(j)): value0 = stab.insert(0, insert) self.assertEqual(value0, target0) value1 = stab.insert(1, insert) self.assertEqual(value1, target1) # Insert single column stab = StabilizerTable.from_labels(['X', 'Y', 'Z']) for sgn in ['+', '-']: for i in ['I', 'X', 'Y', 'Z']: target0 = StabilizerTable.from_labels( [sgn + 'X' + i, sgn + 'Y' + i, sgn + 'Z' + i]) target1 = StabilizerTable.from_labels( [sgn + i + 'X', sgn + i + 'Y', sgn + i + 'Z']) with self.subTest(msg='single-column single-val from str' ' {}'.format(sgn + i)): value = stab.insert(0, sgn + i, qubit=True) self.assertEqual(value, target0) value = stab.insert(1, sgn + i, qubit=True) self.assertEqual(value, target1) with self.subTest(msg='single-column single-val from' ' StabilizerTable {}'.format(sgn + i)): value = stab.insert(0, StabilizerTable(sgn + i), qubit=True) self.assertEqual(value, target0) value = stab.insert(1, StabilizerTable(sgn + i), qubit=True) self.assertEqual(value, target1) # Insert single column with multiple values stab = StabilizerTable.from_labels(['X', 'Y', 'Z']) for i in [('I', 'X', 'Y'), ('X', 'Y', 'Z'), ('Y', 'Z', 'I')]: target0 = StabilizerTable.from_labels( ['X' + i[0], 'Y' + i[1], 'Z' + i[2]]) target1 = StabilizerTable.from_labels( [i[0] + 'X', i[1] + 'Y', i[2] + 'Z']) with self.subTest( msg='single-column multiple-vals from StabilizerTable'): value = stab.insert(0, StabilizerTable.from_labels(i), qubit=True) self.assertEqual(value, target0) value = stab.insert(1, StabilizerTable.from_labels(i), qubit=True) self.assertEqual(value, target1) with self.subTest(msg='single-column multiple-vals from array'): value = stab.insert(0, StabilizerTable.from_labels(i).array, qubit=True) self.assertEqual(value, target0) value = stab.insert(1, StabilizerTable.from_labels(i).array, qubit=True) self.assertEqual(value, target1) # Insert multiple columns from single stab = StabilizerTable.from_labels(['X', 'Y', 'Z']) for j in range(1, 5): for i in [j * 'I', j * 'X', j * 'Y', j * 'Z']: target0 = StabilizerTable.from_labels( ['X' + i, 'Y' + i, 'Z' + i]) target1 = StabilizerTable.from_labels( [i + 'X', i + 'Y', i + 'Z']) with self.subTest(msg='multiple-columns single-val from str'): value = stab.insert(0, i, qubit=True) self.assertEqual(value, target0) value = stab.insert(1, i, qubit=True) self.assertEqual(value, target1) with self.subTest( msg='multiple-columns single-val from StabilizerTable'): value = stab.insert(0, StabilizerTable(i), qubit=True) self.assertEqual(value, target0) value = stab.insert(1, StabilizerTable(i), qubit=True) self.assertEqual(value, target1) with self.subTest(msg='multiple-columns single-val from array'): value = stab.insert(0, StabilizerTable(i).array, qubit=True) self.assertEqual(value, target0) value = stab.insert(1, StabilizerTable(i).array, qubit=True) self.assertEqual(value, target1) # Insert multiple columns multiple row values stab = StabilizerTable.from_labels(['X', 'Y', 'Z']) for j in range(1, 5): for i in [(j * 'I', j * 'X', j * 'Y'), (j * 'X', j * 'Z', j * 'Y'), (j * 'Y', j * 'Z', j * 'I')]: target0 = StabilizerTable.from_labels( ['X' + i[0], 'Y' + i[1], 'Z' + i[2]]) target1 = StabilizerTable.from_labels( [i[0] + 'X', i[1] + 'Y', i[2] + 'Z']) with self.subTest( msg='multiple-column multiple-vals from StabilizerTable' ): value = stab.insert(0, StabilizerTable.from_labels(i), qubit=True) self.assertEqual(value, target0) value = stab.insert(1, StabilizerTable.from_labels(i), qubit=True) self.assertEqual(value, target1) with self.subTest( msg='multiple-column multiple-vals from array'): value = stab.insert(0, StabilizerTable.from_labels(i).array, qubit=True) self.assertEqual(value, target0) value = stab.insert(1, StabilizerTable.from_labels(i).array, qubit=True) self.assertEqual(value, target1)