import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:melo/player/now_playing_screen.dart'; void main() { // WanderndesCover.build() liefert ein Positioned zurück (siehe // now_playing_screen.dart) — Positioned braucht laut Flutter zwingend // einen Stack als Vorfahren, sonst wirft es "Incorrect use of // ParentDataWidget" (per Testlauf verifiziert). Genau so wird es auch in // main.dart verwendet (direkt als Kind des HomeShell-Stacks), deshalb hier // ebenfalls in einen Stack gebettet statt direkt als Scaffold.body. testWidgets('Rect bei progress=0 entspricht dem Mini-Player-Rechteck', (tester) async { await tester.pumpWidget(MaterialApp( home: Scaffold( body: Stack( children: [ WanderndesCover( progress: 0, artUri: null, miniRect: const Rect.fromLTWH(0, 700, 400, 52), vollbildRect: const Rect.fromLTWH(0, 0, 400, 800), ), ], ), ), )); final box = tester.getRect(find.byType(WanderndesCover)); expect(box, const Rect.fromLTWH(0, 700, 400, 52)); }); testWidgets('Rect bei progress=1 entspricht dem Vollbild-Rechteck', (tester) async { await tester.pumpWidget(MaterialApp( home: Scaffold( body: Stack( children: [ WanderndesCover( progress: 1, artUri: null, miniRect: const Rect.fromLTWH(0, 700, 400, 52), vollbildRect: const Rect.fromLTWH(0, 0, 400, 800), ), ], ), ), )); final box = tester.getRect(find.byType(WanderndesCover)); expect(box, const Rect.fromLTWH(0, 0, 400, 800)); }); testWidgets('Rect bei progress=0.5 liegt in der Mitte', (tester) async { await tester.pumpWidget(MaterialApp( home: Scaffold( body: Stack( children: [ WanderndesCover( progress: 0.5, artUri: null, miniRect: const Rect.fromLTWH(0, 700, 400, 52), vollbildRect: const Rect.fromLTWH(0, 0, 400, 800), ), ], ), ), )); final box = tester.getRect(find.byType(WanderndesCover)); expect( box, Rect.lerp( const Rect.fromLTWH(0, 700, 400, 52), const Rect.fromLTWH(0, 0, 400, 800), 0.5, ), ); }); }