import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:smplayer/features/player/widgets/android/android_gesture_feedback.dart';

void main() {
  Widget buildSubject({required bool seekIsForward}) {
    return MaterialApp(
      home: SizedBox(
        width: 360,
        height: 240,
        child: AndroidGestureFeedback(
          data: GestureFeedbackData(
            kind: GestureFeedbackKind.seek,
            seekTarget: const Duration(minutes: 1),
            totalDuration: const Duration(minutes: 10),
            seekIsForward: seekIsForward,
          ),
        ),
      ),
    );
  }

  testWidgets('seek preview shows rewind icon for backward seek', (
    tester,
  ) async {
    await tester.pumpWidget(buildSubject(seekIsForward: false));

    expect(find.byIcon(Icons.fast_rewind), findsOneWidget);
    expect(find.byIcon(Icons.fast_forward), findsNothing);
  });

  testWidgets('seek preview shows forward icon for forward seek', (
    tester,
  ) async {
    await tester.pumpWidget(buildSubject(seekIsForward: true));

    expect(find.byIcon(Icons.fast_forward), findsOneWidget);
    expect(find.byIcon(Icons.fast_rewind), findsNothing);
  });

  testWidgets('long press speed uses light background', (tester) async {
    await tester.pumpWidget(
      const MaterialApp(
        home: SizedBox(
          width: 360,
          height: 240,
          child: AndroidGestureFeedback(
            data: GestureFeedbackData(
              kind: GestureFeedbackKind.longPressSpeed,
              speedRate: 3,
            ),
          ),
        ),
      ),
    );

    final container = tester.widget<Container>(
      find.descendant(
        of: find.byType(AndroidGestureFeedback),
        matching: find.byType(Container),
      ),
    );
    final decoration = container.decoration as BoxDecoration;

    expect(decoration.color, const Color(0x45181818));
  });
}
