{
  "engine": "LibreOffice Calc, recalcul réel; Excel non installé",
  "errors": [],
  "tests": [
    {
      "test": "Calcul rabais 1",
      "observed": "RÉUSSI",
      "expected": "RÉUSSI",
      "passed": true
    },
    {
      "test": "Calcul rabais 2",
      "observed": "RÉUSSI",
      "expected": "RÉUSSI",
      "passed": true
    },
    {
      "test": "Calcul rabais 3",
      "observed": "RÉUSSI",
      "expected": "RÉUSSI",
      "passed": true
    },
    {
      "test": "Calcul rabais 4",
      "observed": "RÉUSSI",
      "expected": "RÉUSSI",
      "passed": true
    },
    {
      "test": "Calcul rabais 5",
      "observed": "RÉUSSI",
      "expected": "RÉUSSI",
      "passed": true
    },
    {
      "test": "Calcul rabais 6",
      "observed": "RÉUSSI",
      "expected": "RÉUSSI",
      "passed": true
    },
    {
      "test": "Calcul rabais 7",
      "observed": "RÉUSSI",
      "expected": "RÉUSSI",
      "passed": true
    },
    {
      "test": "Calcul rabais 8",
      "observed": "RÉUSSI",
      "expected": "RÉUSSI",
      "passed": true
    },
    {
      "test": "Calcul rabais 9",
      "observed": "RÉUSSI",
      "expected": "RÉUSSI",
      "passed": true
    },
    {
      "test": "Portrait E18",
      "observed": 21.25,
      "expected": 21.25,
      "passed": true
    },
    {
      "test": "Portrait F18",
      "observed": 2545.0,
      "expected": 2545,
      "passed": true
    },
    {
      "test": "Portrait G18",
      "observed": 23.75,
      "expected": 23.75,
      "passed": true
    },
    {
      "test": "Portrait H18",
      "observed": 2521.25,
      "expected": 2521.25,
      "passed": true
    },
    {
      "test": "Portrait E14",
      "observed": 10.75,
      "expected": 10.75,
      "passed": true
    },
    {
      "test": "Portrait H14",
      "observed": 1251.25,
      "expected": 1251.25,
      "passed": true
    },
    {
      "test": "Portrait B28",
      "observed": 1.0,
      "expected": 1,
      "passed": true
    },
    {
      "test": "Admissibilité C001",
      "observed": "Oui",
      "expected": "Oui",
      "passed": true
    },
    {
      "test": "Admissibilité C002",
      "observed": "Oui",
      "expected": "Oui",
      "passed": true
    },
    {
      "test": "Admissibilité C005",
      "observed": "Non",
      "expected": "Non",
      "passed": true
    },
    {
      "test": "Admissibilité C006",
      "observed": "Non",
      "expected": "Non",
      "passed": true
    },
    {
      "test": "Admissibilité C007",
      "observed": "Oui",
      "expected": "Oui",
      "passed": true
    },
    {
      "test": "Admissibilité C009",
      "observed": "Oui",
      "expected": "Oui",
      "passed": true
    },
    {
      "test": "Une ligne par destinataire",
      "observed": 12,
      "expected": 12,
      "passed": true
    },
    {
      "test": "Heures modifiées -> net RDV",
      "observed": 190.0,
      "expected": 190,
      "passed": true
    },
    {
      "test": "Heures modifiées -> facture",
      "observed": 190.0,
      "expected": 190,
      "passed": true
    },
    {
      "test": "Heures modifiées -> portrait",
      "observed": 2616.25,
      "expected": 2616.25,
      "passed": true
    },
    {
      "test": "Doublon RDV détecté",
      "observed": "DOUBLON RDV",
      "expected": "DOUBLON RDV",
      "passed": true
    },
    {
      "test": "Client inconnu détecté",
      "observed": "Client à corriger",
      "expected": "Client à corriger",
      "passed": true
    },
    {
      "test": "Écart documenté -> alerte levée",
      "observed": "OK",
      "expected": "OK",
      "passed": true
    },
    {
      "test": "Heures prévues conservées",
      "observed": 1.0,
      "expected": 1,
      "passed": true
    },
    {
      "test": "Heures réelles conservées",
      "observed": 1.25,
      "expected": 1.25,
      "passed": true
    }
  ],
  "passed": true
}