def test_unique_violation(self):
        arr = [43, 23, 12, 22, -10, 47, 0, 47, 104, 65]
        store1 = SmallUniqueKeyStore(self.io, IntegerType(), initialize=True)
        with pytest.raises(PyDBUniqueKeyViolation) as ex:
            for x in arr:
                store1.insert(x)

        assert ex.value.message == "Unique key violation: 47"
    def test_read_write_header(self):
        store1 = SmallUniqueKeyStore(self.io, IntegerType(), initialize=True)
        for x in range(10):
            store1.insert(x)

        assert store1.count == 10

        self.reopen_file()

        store2 = SmallUniqueKeyStore(self.io, IntegerType())
        assert store2.count == 10
    def test_remove_center_elem(self):
        arr = [43, 23, 12, 22, -10, 47, 0, 46, 104, 65]
        store1 = SmallUniqueKeyStore(self.io, IntegerType(), initialize=True)
        for x in arr:
            store1.insert(x)

        store1.remove(47)
        assert store1.get_data() == [x for x in sorted(arr) if x != 47]
    def test_sorted_data(self):
        arr = [43, 23, 12, 22, -10, 48, 0, 99, 104, 65]
        store1 = SmallUniqueKeyStore(self.io, IntegerType(), initialize=True)
        for x in arr:
            store1.insert(x)

        assert store1.count == 10
        assert store1.get_data() == sorted(arr)

        self.reopen_file()

        store2 = SmallUniqueKeyStore(self.io, IntegerType())
        assert store2.get_data() == sorted(arr)
        assert store2.count == 10
    def test_not_exist_center(self):
        arr = [43, 23, 12, 22, -10, 47, 0, 46, 104, 65]
        store1 = SmallUniqueKeyStore(self.io, IntegerType(), initialize=True)
        for x in arr:
            store1.insert(x)

        with pytest.raises(PyDBKeyNotFoundError) as ex:
            store1.remove(51)
        assert ex.value.message == "Not found: 51"