class DeleteMultipleTimesFromArray(unittest.TestCase):
    def setUp(self) -> None:
        self.da = DynArray()
        for i in range(32):
            self.da.append(i)

    def test(self):
        self.assertEqual(32, self.da.capacity)
        self.assertEqual(32, self.da.count)

        for i in reversed(range(len(self.da))):
            self.da.delete(i)

        self.assertEqual(0, self.da.count)
        self.assertEqual(16, self.da.capacity)
class DeleteFromStartTestCase(unittest.TestCase):
    def setUp(self) -> None:
        self.da = DynArray()
        for i in range(1, 17):
            self.da.append(i)

    def test(self):
        self.assertEqual(16, self.da.capacity)
        self.assertEqual(16, self.da.count)

        self.da.delete(0)

        self.assertEqual(16, self.da.capacity)
        self.assertEqual(15, self.da.count)
        self.assertEqual(2, self.da[0])
class DeleteWithModifyCapacityTestCase(unittest.TestCase):
    def setUp(self) -> None:
        self.da = DynArray()
        for i in range(1, 18):
            self.da.append(i)

    def test(self):
        self.assertEqual(32, self.da.capacity)
        self.assertEqual(17, self.da.count)

        self.da.delete(15)
        self.da.delete(14)

        self.assertEqual(32, self.da.capacity)
        self.assertEqual(15, self.da.count)
class TestDynArray(unittest.TestCase):
    def setUp(self):
        self.da = DynArray()
        self.da.append(15)
        self.da.append(38)
        self.da.append(73)
        self.da.append(24)

    def test_insert_1(self):
        self.da.insert(1, 120)
        self.arr = []
        for i in range(len(self.da)):
            self.arr.append(self.da[i])
        self.assertEqual(self.arr, [15, 120, 38, 73, 24])

    def test_insert_2(self):
        self.da.append(0)
        self.da.append(1)
        self.da.append(2)
        self.da.append(3)
        self.da.append(4)
        self.da.append(5)
        self.da.append(6)
        self.da.append(7)
        self.da.append(8)
        self.da.append(9)
        self.da.append(10)
        self.da.append(11)

        self.da.insert(15, 120)
        self.arr = []
        for i in range(len(self.da)):
            self.arr.append(self.da[i])
        self.assertEqual(
            self.arr,
            [15, 38, 73, 24, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 120, 11])

    def test_delete(self):
        self.da.delete(1)
        self.arr = []
        for i in range(len(self.da)):
            self.arr.append(self.da[i])
        self.assertEqual(self.arr, [15, 73, 24])