Changer la classe StringBuffer.java en y ajoutant une méthode

Vous aurez besoin de ces Scripts utiles avant de faire quoi que ce soit ci-dessous.

$ cd $HOME/sources/jdk8_tl/

ou

$ cd $HOME/sources/jdk8/

ou

$ cd $HOME/sources/jdk9/
$ gedit jdk/src/share/classes/java/lang/StringBuffer.java

or

$ gedit jdk/src/java.base/share/classes/java/lang/StringBuffer.java

Note: assurez vous de conserver les annotations au début de chaque fichier de test, elles sont nécessaires à jtreg.

 /**
    * Meilleur code jamais contribué par Mitia !
    * 
    * @return boolean 
    */
 public boolean isEmpty() {
             return count==0;
 }

Ecrivez les tests ci-dessous dans IsEmptyTest.java dans un répertoire quelconque

/* @test
 * @summary Test StringBuffer.isEmpty();
 * @run main IsEmptyTest
 */

public class IsEmptyTest {

    private static int failed =0;

    private static void testNew() {
        StringBuffer buffer = new StringBuffer();

        if (!buffer.isEmpty()) {
            System.out.println(
                    "StringBuffer isEmpty on new object failed");
            failed++;
        }
    }

    private static void testReNew() {
        StringBuffer buffer = new StringBuffer();
        buffer.append("a");
        buffer.delete(0, 1);

        if (!buffer.isEmpty()) {
            System.out.println(
            "StringBuffer isEmpty on appended and deleted element of object failed");
            failed++;
        }
    }

    private static void testNotEmpty() {
        StringBuffer buffer = new StringBuffer();
        buffer.append("aa");

        if (buffer.isEmpty()) {
            System.out.println(
            "StringBuffer isEmpty on changed object failed");
            failed++;
        }
    }

    public static void main(String[] args) {
        testNew();
        testNotEmpty();
        testReNew();

        if (failed>0){
            throw new RuntimeException("Failed: "+failed);
        }
    }
}

Ecrivez les tests (TestNG) ci-dessous dans un fichier IsEmptyTestNG.java

/* @test
 * @summary Test StringBuffer.isEmpty();
 * @run testng IsEmptyTestNG
 */

import static org.testng.Assert.assertFalse;
import static org.testng.Assert.assertTrue;

import java.lang.StringBuffer;

import org.testng.annotations.Test;

public class IsEmptyTestNG {

    @Test
    public void testNew() {
        StringBuffer buffer = new StringBuffer();

        assertTrue(buffer.isEmpty());
    }

    @Test
    public void testReNew() {
        StringBuffer buffer = new StringBuffer();
        buffer.append("aa");
        buffer.delete(0, 2);

        assertTrue(buffer.isEmpty());
    }

    @Test
    public void testNotEmpty() {
        StringBuffer buffer = new StringBuffer();
        buffer.append("aa");

        assertFalse(buffer.isEmpty());
    }
}
$ make images

ou

$ make jdk

Enfin lancez JTReg avec les commandes décrites dans Utilisation de JTReg… - Java Regression Test Harness ? pour vous assurez que les tests se lancent et réussisses.

Changez l'implementation par quelque chose d'autre et relancez les tests pour les voir échoués.

results matching ""

    No results matching ""