def METHOD_NAME(self):
    N_ICC_SIDE_LENGTH = 10
    DIPOLE_DISTANCE = 5.0
    DIPOLE_CHARGE = 10.0
    part_slice_lower, normals_lower, areas_lower = self.add_icc_particles(
        N_ICC_SIDE_LENGTH, -0.0001, 0.)
    part_slice_upper, normals_upper, areas_upper = self.add_icc_particles(
        N_ICC_SIDE_LENGTH, 0.0001, BOX_L)
    assert (part_slice_upper.id[-1] - part_slice_lower.id[0] +
            1) == 2 * N_ICC_SIDE_LENGTH**2, "ICC particles not continuous"
    normals = np.vstack((normals_lower, -normals_upper))
    areas = np.hstack((areas_lower, areas_upper))
    epsilons = np.full_like(areas, 1e8)
    sigmas = np.zeros_like(areas)
    icc = espressomd.electrostatic_extensions.ICC(
        n_icc=2 * N_ICC_SIDE_LENGTH**2,
        normals=normals,
        areas=areas,
        epsilons=epsilons,
        sigmas=sigmas,
        convergence=1e-6,
        max_iterations=100,
        first_id=part_slice_lower.id[0],
        eps_out=1.,
        relaxation=0.75,
        ext_field=[0, 0, 0])
    # Dipole in the center of the simulation box
    BOX_L_HALF = BOX_L / 2
    self.system.part.add(pos=[BOX_L_HALF, BOX_L_HALF, BOX_L_HALF - DIPOLE_DISTANCE / 2],
                         q=DIPOLE_CHARGE, fix=[True, True, True])
    self.system.part.add(pos=[BOX_L_HALF, BOX_L_HALF, BOX_L_HALF + DIPOLE_DISTANCE / 2],
                         q=-DIPOLE_CHARGE, fix=[True, True, True])
    p3m = espressomd.electrostatics.P3M(
        prefactor=1., mesh=32, cao=7, accuracy=1e-5)
    p3m.charge_neutrality_tolerance = 1e-11
    self.system.electrostatics.solver = p3m
    self.system.electrostatics.extension = icc
    self.system.integrator.run(0)
    charge_lower = sum(part_slice_lower.q)
    charge_upper = sum(part_slice_upper.q)
    testcharge_dipole = DIPOLE_CHARGE * DIPOLE_DISTANCE
    induced_dipole = 0.5 * (abs(charge_lower) + abs(charge_upper)) * BOX_L
    self.assertAlmostEqual(1, induced_dipole / testcharge_dipole, places=4)