fix: filtre historique, fuite mémoire OpenCV, export IA, tests
- 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>
This commit is contained in:
@@ -1,20 +1,32 @@
|
||||
// This is a basic Flutter widget test.
|
||||
// Test de fumée sur un widget pur (sans providers ni base de données).
|
||||
//
|
||||
// To perform an interaction with a widget in your test, use the WidgetTester
|
||||
// utility in the flutter_test package. For example, you can send tap and scroll
|
||||
// gestures. You can also use WidgetTester to find child widgets in the widget
|
||||
// tree, read text, and verify that the values of widget properties are correct.
|
||||
// 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/app.dart';
|
||||
import 'package:bully/features/home/widgets/stats_card.dart';
|
||||
|
||||
void main() {
|
||||
testWidgets('App loads correctly', (WidgetTester tester) async {
|
||||
// Build our app and trigger a frame.
|
||||
await tester.pumpWidget(const BullyApp());
|
||||
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,
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
|
||||
// Verify that the app title is displayed.
|
||||
expect(find.text('Bully'), findsOneWidget);
|
||||
expect(find.text('Tirs'), findsOneWidget);
|
||||
expect(find.text('42'), findsOneWidget);
|
||||
expect(find.byIcon(Icons.gps_fixed), findsOneWidget);
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user