Adloun

JavaScript : rendre le Web interactif (école d'ingénieur) · Chapitre 11 · Application directe du cours

Tester un formatage

Erreurs, stockage et qualité du code · niveau 1 (application)

Énoncé

La fonction formater(secondes) de l'exercice 9.11 transforme 75 en « 1:15 ». Écrire un fichier de tests pour node --test : cas ordinaires, moins d'une minute, zéro, une heure. Que renvoie-t-elle pour ? Faut-il la corriger, ou le documenter par un test ?

Corrigé


import { test } from "node:test";
import assert from "node:assert/strict";
import { formater } from "./formater.js";

test("minutes et secondes", () => {
  assert.equal(formater(75), "1:15");
  assert.equal(formater(120), "2:00");
});

test("moins d'une minute : zéro devant les secondes", () => {
  assert.equal(formater(5), "0:05");
  assert.equal(formater(0), "0:00");
});

test("une heure et plus reste en minutes", () => {
  assert.equal(formater(3600), "60:00");
});

test("une valeur négative donne un affichage absurde", () => {
  assert.equal(formater(-5), "-1:-5"); // à garder en tête : l'appelant doit s'arrêter à 0
});

Les quatre tests passent (exercices/ex6-tests/). Pour , Math.floor(-5 / 60) vaut et -5 % 60 vaut (le reste a le signe du dividende) : « -1:-5 ». Dans l'exercice 9.11, le compte à rebours s'arrête à zéro, la valeur ne peut pas se produire ; le dernier test documente ce comportement. Si la fonction devait servir ailleurs, il vaudrait mieux lever une RangeError et changer le test en assert.throws.

100 % gratuit

La suite du chapitre est sur Adloun

Exercice suivant et tuteur

Sans compte : le cours et le premier QCM. Exercices et tuteur : inscription gratuite en 30 secondes, sans carte bancaire.

Le cours du chapitre · Tous les exercices du chapitre

Exercice suivant et tuteur →