Suite de la question de démarrage 1.
La classe sous test:
class DList
{
    List<Double> l;
    /**
     * @pre
     * @post a construit une liste initialement vide
     */
    public DList()
    {
        l=new LinkedList<Double>();
    }
    /**
     * @pre d!=null
     * @post a ajout le Double d dans la liste
     */
    public void add(Double d)
    {
        assert d!=null;
        l.add(d);
    }
    /**
     * @pre d!=null
     * @post retourne true si d se trouvait dans la liste et false sinon
     *       a retire de la liste toutes les instances de Double egales
     *       a d
     */
    public boolean remove(Double d)
    {
        assert d!=null;
        int i=l.indexOf(d);
        if(i>=0)
        {
            Double d1=l.remove(i);
            return true;
        }
        else
        {
            return false;
        }
    }
    /**
     * @pre d!=null
     * @post retourne true si d se trouve dans la liste et false sinon
     */
    public boolean contains(Double d)
    {
        return l.contains(d);
    }
    /**
     * @pre -
     * @post retourne le nombre de Double se trouvant dans la liste
     */
    public int size()
    {
        return l.size();
    }
}
La partie de la classe test à compléter:
    /**
     * @pre
     * @post verification du bon fonctionnement de la methode remove:
     *          cette méthode vérifie que la méthode remove échoue quand
     *       il le faut.
     */
    public void testReussiteRemove()
    {
        // Creation de la liste
        DList l=new DList();
        // ajout de trois elements a la liste
        l.add(new Double(2.3));
        l.add(new Double(2.4));
        l.add(new Double(2.4));
        // retrait de ces trois elements
        assertEquals("Le retrait d'un element se trouvant dans la liste"
                + " devrait renvoyer true",/*(1)???*/,/*(2)???*/);
        assertEquals("Le retrait d'un element se trouvant deux fois dans"
                + " la liste devrait renvoyer true",/*(3)???*/,/*(4)???*/);
    }
    /**
     * @pre
     * @post verification du bon fonctionnement de la methode remove:
     *          cette méthode vérifie
     *       que la méthode remove échoue quand il le faut.
     */
    public void testEchecRemove(){
        // Creation de la liste
        DList l=new DList();
        // Retrait d'un element d'une liste vide
        assertEquals("Le retrait d'un element ne se trouvant pas dans"
                + " la liste devriat renvoyer false",/*(5)???*/,/*(6)???*/);
        // Ajout de trois elements a la liste
        l.add(new Double(2.3));
        /*(7)???*/
        l.add(new Double(2.4));
        // Retrait de ces trois elements
        l.remove(new Double(2.3));
        assertEquals("Le retrait d'un element ne se trouvant plus dans"
                + " la liste devrait renvoyer false",/*(8)???*/,/*(9)???*/);
        assertEquals("Le retrait d'un element ne se trouvant pas dans "
                + "la liste devriat renvoyer false",/*(10)???*/,/*(11)???*/);
        l.remove(new Double(2.4));
        assertEquals("Le retrait d'un element dont les deux exemplaires"
                + " ne sont plus dans la liste devrait renvoyer false",/*(12)???*/,/*(13)???*/);
    }
}
 INGInious