// Copyright 2014 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

import 'package:flutter/material.dart';
import 'package:flutter/rendering.dart';
import 'package:flutter_api_samples/rendering/scroll_direction/scroll_direction.0.dart'
    as example;
import 'package:flutter_test/flutter_test.dart';

void main() {
  testWidgets('Example app has ScrollDirection represented', (
    WidgetTester tester,
  ) async {
    await tester.pumpWidget(const example.ExampleApp());

    expect(find.byType(Radio<AxisDirection>), findsNWidgets(4));
    final RenderViewport viewport = tester.renderObject(find.byType(Viewport));
    expect(find.text('AxisDirection.down'), findsOneWidget);
    expect(find.text('Axis.vertical'), findsOneWidget);
    expect(find.text('GrowthDirection.forward'), findsOneWidget);
    expect(find.text('ScrollDirection.idle'), findsOneWidget);
    expect(find.byIcon(Icons.arrow_downward_rounded), findsNWidgets(2));
    expect(viewport.axisDirection, AxisDirection.down);

    await tester.tap(
      find.byWidgetPredicate((Widget widget) {
        return widget is Radio<AxisDirection> &&
            widget.value == AxisDirection.up;
      }),
    );
    await tester.pumpAndSettle();

    expect(find.text('AxisDirection.up'), findsOneWidget);
    expect(find.text('Axis.vertical'), findsOneWidget);
    expect(find.text('GrowthDirection.forward'), findsOneWidget);
    expect(find.text('ScrollDirection.idle'), findsOneWidget);
    expect(find.byIcon(Icons.arrow_upward_rounded), findsNWidgets(2));
    expect(viewport.axisDirection, AxisDirection.up);
  });
}
