image_icon_test.dart 2.94 KB
Newer Older
Ian Hickson's avatar
Ian Hickson committed
1 2 3 4 5 6
// Copyright 2015 The Chromium 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';
7
import 'package:flutter/services.dart';
Ian Hickson's avatar
Ian Hickson committed
8 9 10
import 'package:flutter/widgets.dart';
import 'package:flutter_test/flutter_test.dart';

11 12 13 14
import '../services/mocks_for_image_cache.dart';

const ImageProvider _kImage = const TestImageProvider(21, 42);

Ian Hickson's avatar
Ian Hickson committed
15 16 17
void main() {
  testWidgets('ImageIcon sizing - no theme, default size', (WidgetTester tester) async {
    await tester.pumpWidget(
18
      const Center(
19
        child: const ImageIcon(_kImage)
Ian Hickson's avatar
Ian Hickson committed
20 21 22
      )
    );

23
    final RenderBox renderObject = tester.renderObject(find.byType(ImageIcon));
Ian Hickson's avatar
Ian Hickson committed
24
    expect(renderObject.size, equals(const Size.square(24.0)));
25 26 27 28 29 30 31
    expect(find.byType(Image), findsOneWidget);
  });

  testWidgets('Icon opacity', (WidgetTester tester) async {
    await tester.pumpWidget(
      new Center(
        child: new IconTheme(
32
          data: const IconThemeData(opacity: 0.5),
33 34 35 36 37
          child: const ImageIcon(_kImage),
        ),
      ),
    );

38
    final Image image = tester.widget(find.byType(Image));
39 40
    expect(image, isNotNull);
    expect(image.color.alpha, equals(128));
Ian Hickson's avatar
Ian Hickson committed
41 42 43 44
  });

  testWidgets('ImageIcon sizing - no theme, explicit size', (WidgetTester tester) async {
    await tester.pumpWidget(
45
      const Center(
46
        child: const ImageIcon(
Ian Hickson's avatar
Ian Hickson committed
47 48 49 50 51 52
          null,
          size: 96.0
        )
      )
    );

53
    final RenderBox renderObject = tester.renderObject(find.byType(ImageIcon));
Ian Hickson's avatar
Ian Hickson committed
54 55 56 57 58 59 60
    expect(renderObject.size, equals(const Size.square(96.0)));
  });

  testWidgets('ImageIcon sizing - sized theme', (WidgetTester tester) async {
    await tester.pumpWidget(
      new Center(
        child: new IconTheme(
61 62
          data: const IconThemeData(size: 36.0),
          child: const ImageIcon(null)
Ian Hickson's avatar
Ian Hickson committed
63 64 65 66
        )
      )
    );

67
    final RenderBox renderObject = tester.renderObject(find.byType(ImageIcon));
Ian Hickson's avatar
Ian Hickson committed
68 69 70 71 72 73 74
    expect(renderObject.size, equals(const Size.square(36.0)));
  });

  testWidgets('ImageIcon sizing - sized theme, explicit size', (WidgetTester tester) async {
    await tester.pumpWidget(
      new Center(
        child: new IconTheme(
75 76
          data: const IconThemeData(size: 36.0),
          child: const ImageIcon(
Ian Hickson's avatar
Ian Hickson committed
77 78 79 80 81 82 83
            null,
            size: 48.0
          )
        )
      )
    );

84
    final RenderBox renderObject = tester.renderObject(find.byType(ImageIcon));
Ian Hickson's avatar
Ian Hickson committed
85 86 87 88 89 90 91
    expect(renderObject.size, equals(const Size.square(48.0)));
  });

  testWidgets('ImageIcon sizing - sizeless theme, default size', (WidgetTester tester) async {
    await tester.pumpWidget(
      new Center(
        child: new IconTheme(
92 93
          data: const IconThemeData(),
          child: const ImageIcon(null)
Ian Hickson's avatar
Ian Hickson committed
94 95 96 97
        )
      )
    );

98
    final RenderBox renderObject = tester.renderObject(find.byType(ImageIcon));
Ian Hickson's avatar
Ian Hickson committed
99 100 101
    expect(renderObject.size, equals(const Size.square(24.0)));
  });
}