wƒWebFront C++23
EN ↗GitHub ↗

CHAPITRE 05 / WEBFRONT

Tester et vérifier

Jasmine, contrôle de types et échecs utiles.

Un premier contrat vérifiable

Dans le terminal, lancez wf install jasmine-core@7.0.2. Créez tests/life.spec.js dans life-project avec ce test du format de la grille. Il vérifie le compactage côté JavaScript, pas le calcul C++ lui-même.

SOURCE
describe('the Life grid', () => {
    it('packs 1024 cells into 128 bytes', () => {
        const cells = new Uint8Array(32 * 32 / 8);
        for (const i of [330, 331, 332])
            cells[i >> 3] |= 1 << (i & 7);
        expect(cells.length).toBe(128);
        expect(cells[41]).toBe(0b00011100);
    });
});

Déclarer et exécuter

Ajoutez cette propriété à la racine du manifeste webfront.project.json, avec les virgules JSON nécessaires. wf init ne crée pas cette recette. Lancez wf test : Jasmine tourne dans la fenêtre, et un test en échec donne un statut non nul. Remplacez temporairement 128 par 127 pour vérifier que votre test sait échouer, puis rétablissez la valeur.

SOURCE
"test": {"specs": ["tests/life.spec.js"]}

Vérifier les types

Créez tsconfig.json à la racine de life-project avec cette configuration. Installez ensuite les types et le compilateur avec les commandes suivantes. wf check utilise la version de TypeScript verrouillée par le projet.

SOURCE
{
  "compilerOptions": {
    "strict": true,
    "target": "ES2022",
    "module": "ESNext",
    "moduleResolution": "Bundler",
    "jsx": "react-jsx",
    "lib": ["ES2022", "DOM", "DOM.Iterable"],
    "noEmit": true
  },
  "include": ["ui"]
}

Installer le vérificateur

Le starter importe React et React DOM : leurs déclarations de types sont nécessaires au contrôle strict.

WEBFRONT TERMINAL
wf install typescript@5.9.3 @types/react@19.3.0 @types/react-dom@19.3.0
wf check

Question

Le test ci-dessus prouve-t-il les règles de Conway en C++ ?