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)
示例#2
0
    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)