- Historique : le filtre par type de cible est désormais appliqué au chargement ; correction du piège PopupMenuItem(value: null) qui empêchait l'option « Tous » de réinitialiser le filtre ; icône colorée quand un filtre est actif - OpenCV : libération des Mat natifs (img, gray, blurred, circles) dans un finally — detectTarget tourne toutes les secondes pendant l'aperçu caméra et faisait grimper la mémoire native en continu - Export IA : distance, arme et id de session réels transmis depuis SessionProvider au lieu des placeholders (25 m / "Unknown") - Tests : remplacement du test widget cassé (BullyApp sans providers) par 14 tests qui passent — calcul de score concentrique (centre, hors cible, ratio d'image, anneaux personnalisés), agrégation des scores, analyse de groupement, et rendu du widget StatsCard Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
33 lines
960 B
Dart
33 lines
960 B
Dart
// Test de fumée sur un widget pur (sans providers ni base de données).
|
|
//
|
|
// Le montage complet de BullyApp exige les providers globaux et une base
|
|
// SQLite initialisée ; pour un test widget rapide et stable, on valide ici
|
|
// le rendu d'un composant autonome.
|
|
|
|
import 'package:flutter/material.dart';
|
|
import 'package:flutter_test/flutter_test.dart';
|
|
|
|
import 'package:bully/features/home/widgets/stats_card.dart';
|
|
|
|
void main() {
|
|
testWidgets('StatsCard affiche le titre, la valeur et l\'icône',
|
|
(WidgetTester tester) async {
|
|
await tester.pumpWidget(
|
|
const MaterialApp(
|
|
home: Scaffold(
|
|
body: StatsCard(
|
|
icon: Icons.gps_fixed,
|
|
title: 'Tirs',
|
|
value: '42',
|
|
color: Colors.blue,
|
|
),
|
|
),
|
|
),
|
|
);
|
|
|
|
expect(find.text('Tirs'), findsOneWidget);
|
|
expect(find.text('42'), findsOneWidget);
|
|
expect(find.byIcon(Icons.gps_fixed), findsOneWidget);
|
|
});
|
|
}
|