import 'package:flutter/widgets.dart';
import 'package:test/test.dart';

import 'widget_tester.dart';

final BoxDecoration kBoxDecorationA = new BoxDecoration(
  backgroundColor: const Color(0xFFFF0000)
);

final BoxDecoration kBoxDecorationB = new BoxDecoration(
  backgroundColor: const Color(0xFF00FF00)
);

final BoxDecoration kBoxDecorationC = new BoxDecoration(
  backgroundColor: const Color(0xFF0000FF)
);

class FlipComponent extends StatefulComponent {
  FlipComponent({ Key key, this.left, this.right }) : super(key: key);

  final Widget left;
  final Widget right;

  FlipComponentState createState() => new FlipComponentState();
}

class FlipComponentState extends State<FlipComponent> {
  bool _showLeft = true;

  void flip() {
    setState(() {
      _showLeft = !_showLeft;
    });
  }

  Widget build(BuildContext context) {
    return _showLeft ? config.left : config.right;
  }
}

class TestBuildCounter extends StatelessComponent {
  static int buildCount = 0;

  Widget build(BuildContext context) {
    ++buildCount;
    return new DecoratedBox(decoration: kBoxDecorationA);
  }
}

void flipStatefulComponent(WidgetTester tester) {
  StatefulComponentElement stateElement =
      tester.findElement((Element element) => element is StatefulComponentElement);
  expect(stateElement, isNotNull);
  expect(stateElement.state is FlipComponentState, isTrue);
  FlipComponentState state = stateElement.state;
  state.flip();
}
