def METHOD_NAME(self):
    system = self.system
    get_neighbors = system.cell_system.get_neighbors
    pos_red = system.box_l - 0.01
    pos_black = np.array(3 * [0.01])
    with self.subTest(msg='no ghost update required'):
        # check particles on neighboring nodes
        p1, p2 = system.part.add(id=[1, 2], pos=[pos_black, pos_red])
        assert p1.node != p2.node
        np.testing.assert_array_equal(get_neighbors(p1, 0.1), [2])
        np.testing.assert_array_equal(get_neighbors(p2, 0.1), [1])
    system.part.clear()
    with self.subTest(msg='ghost update required'):
        # check particles on the same node
        p1, p2 = system.part.add(id=[1, 2], pos=[pos_black, pos_black])
        assert p1.node == p2.node
        np.testing.assert_array_equal(get_neighbors(p1, 0.1), [2])
        np.testing.assert_array_equal(get_neighbors(p2, 0.1), [1])
        # check after move to the same node
        p2.pos = pos_black + [0.12, 0., 0.]
        assert p1.node == p2.node
        np.testing.assert_array_equal(get_neighbors(p1, 0.1), [])
        np.testing.assert_array_equal(get_neighbors(p2, 0.1), [])
        # check after move to a neighboring node (ghost update required)
        p2.pos = pos_red
        assert p1.node == p2.node  # ghosts not updated yet
        np.testing.assert_array_equal(get_neighbors(p1, 0.1), [2])
        np.testing.assert_array_equal(get_neighbors(p2, 0.1), [1])
        # check after move to a neighboring node + forced ghost update
        system.integrator.run(0, recalc_forces=False)
        assert p1.node != p2.node
        np.testing.assert_array_equal(get_neighbors(p1, 0.1), [2])
        np.testing.assert_array_equal(get_neighbors(p2, 0.1), [1])