
This allows the scheduler library to depend on the services library and the painting library to depend on the scheduler library without the services library having to depend on the scheduler library. While I was at it I also cleaned up some of the binding logic: the licenses logic can now be overridden (and the test library does so), and the image cache can now be overridden as well.
100 lines
2.9 KiB
Dart
100 lines
2.9 KiB
Dart
// 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/rendering.dart';
|
|
import 'package:flutter/widgets.dart';
|
|
import 'package:flutter_test/flutter_test.dart';
|
|
|
|
import '../painting/mocks_for_image_cache.dart';
|
|
|
|
const ImageProvider _kImage = const TestImageProvider(21, 42);
|
|
|
|
void main() {
|
|
testWidgets('ImageIcon sizing - no theme, default size', (WidgetTester tester) async {
|
|
await tester.pumpWidget(
|
|
const Center(
|
|
child: const ImageIcon(_kImage)
|
|
)
|
|
);
|
|
|
|
final RenderBox renderObject = tester.renderObject(find.byType(ImageIcon));
|
|
expect(renderObject.size, equals(const Size.square(24.0)));
|
|
expect(find.byType(Image), findsOneWidget);
|
|
});
|
|
|
|
testWidgets('Icon opacity', (WidgetTester tester) async {
|
|
await tester.pumpWidget(
|
|
const Center(
|
|
child: const IconTheme(
|
|
data: const IconThemeData(opacity: 0.5),
|
|
child: const ImageIcon(_kImage),
|
|
),
|
|
),
|
|
);
|
|
|
|
final Image image = tester.widget(find.byType(Image));
|
|
expect(image, isNotNull);
|
|
expect(image.color.alpha, equals(128));
|
|
});
|
|
|
|
testWidgets('ImageIcon sizing - no theme, explicit size', (WidgetTester tester) async {
|
|
await tester.pumpWidget(
|
|
const Center(
|
|
child: const ImageIcon(
|
|
null,
|
|
size: 96.0
|
|
)
|
|
)
|
|
);
|
|
|
|
final RenderBox renderObject = tester.renderObject(find.byType(ImageIcon));
|
|
expect(renderObject.size, equals(const Size.square(96.0)));
|
|
});
|
|
|
|
testWidgets('ImageIcon sizing - sized theme', (WidgetTester tester) async {
|
|
await tester.pumpWidget(
|
|
const Center(
|
|
child: const IconTheme(
|
|
data: const IconThemeData(size: 36.0),
|
|
child: const ImageIcon(null)
|
|
)
|
|
)
|
|
);
|
|
|
|
final RenderBox renderObject = tester.renderObject(find.byType(ImageIcon));
|
|
expect(renderObject.size, equals(const Size.square(36.0)));
|
|
});
|
|
|
|
testWidgets('ImageIcon sizing - sized theme, explicit size', (WidgetTester tester) async {
|
|
await tester.pumpWidget(
|
|
const Center(
|
|
child: const IconTheme(
|
|
data: const IconThemeData(size: 36.0),
|
|
child: const ImageIcon(
|
|
null,
|
|
size: 48.0
|
|
)
|
|
)
|
|
)
|
|
);
|
|
|
|
final RenderBox renderObject = tester.renderObject(find.byType(ImageIcon));
|
|
expect(renderObject.size, equals(const Size.square(48.0)));
|
|
});
|
|
|
|
testWidgets('ImageIcon sizing - sizeless theme, default size', (WidgetTester tester) async {
|
|
await tester.pumpWidget(
|
|
const Center(
|
|
child: const IconTheme(
|
|
data: const IconThemeData(),
|
|
child: const ImageIcon(null)
|
|
)
|
|
)
|
|
);
|
|
|
|
final RenderBox renderObject = tester.renderObject(find.byType(ImageIcon));
|
|
expect(renderObject.size, equals(const Size.square(24.0)));
|
|
});
|
|
}
|