148 lines
4.3 KiB
Dart
148 lines
4.3 KiB
Dart
|
// Tests adapted from https://github.com/flutter/flutter/blob/master/packages/flutter/test/widgets/icon_test.dart
|
||
|
// Copyright 2014 The Flutter Authors. All rights reserved.
|
||
|
|
||
|
import 'package:flutter/material.dart';
|
||
|
import 'package:flutter_test/flutter_test.dart';
|
||
|
import 'package:flutter/widgets.dart';
|
||
|
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
|
||
|
|
||
|
void main() {
|
||
|
testWidgets('Can set opacity for an Icon', (WidgetTester tester) async {
|
||
|
await tester.pumpWidget(
|
||
|
const Directionality(
|
||
|
textDirection: TextDirection.ltr,
|
||
|
child: IconTheme(
|
||
|
data: IconThemeData(
|
||
|
color: Color(0xFF666666),
|
||
|
opacity: 0.5,
|
||
|
),
|
||
|
child: FaIcon(FontAwesomeIcons.accessibleIcon),
|
||
|
),
|
||
|
),
|
||
|
);
|
||
|
final RichText text = tester.widget(find.byType(RichText));
|
||
|
expect(text.text.style!.color, const Color(0xFF666666).withOpacity(0.5));
|
||
|
});
|
||
|
|
||
|
testWidgets('Icon sizing - no theme, default size',
|
||
|
(WidgetTester tester) async {
|
||
|
await tester.pumpWidget(
|
||
|
const Directionality(
|
||
|
textDirection: TextDirection.ltr,
|
||
|
child: Center(
|
||
|
child: FaIcon(FontAwesomeIcons.accessibleIcon),
|
||
|
),
|
||
|
),
|
||
|
);
|
||
|
|
||
|
final RenderBox renderObject = tester.renderObject(find.byType(FaIcon));
|
||
|
expect(renderObject.size, equals(const Size.square(24.0)));
|
||
|
});
|
||
|
|
||
|
testWidgets('Icon sizing - no theme, explicit size',
|
||
|
(WidgetTester tester) async {
|
||
|
await tester.pumpWidget(
|
||
|
const Directionality(
|
||
|
textDirection: TextDirection.ltr,
|
||
|
child: Center(
|
||
|
child: FaIcon(
|
||
|
FontAwesomeIcons.accessibleIcon,
|
||
|
size: 96.0,
|
||
|
),
|
||
|
),
|
||
|
),
|
||
|
);
|
||
|
|
||
|
final RenderBox renderObject = tester.renderObject(find.byType(FaIcon));
|
||
|
expect(renderObject.size, equals(const Size.square(96.0)));
|
||
|
});
|
||
|
|
||
|
testWidgets('Icon sizing - sized theme', (WidgetTester tester) async {
|
||
|
await tester.pumpWidget(
|
||
|
const Directionality(
|
||
|
textDirection: TextDirection.ltr,
|
||
|
child: Center(
|
||
|
child: IconTheme(
|
||
|
data: IconThemeData(size: 36.0),
|
||
|
child: FaIcon(FontAwesomeIcons.accessibleIcon),
|
||
|
),
|
||
|
),
|
||
|
),
|
||
|
);
|
||
|
|
||
|
final RenderBox renderObject = tester.renderObject(find.byType(FaIcon));
|
||
|
expect(renderObject.size, equals(const Size.square(36.0)));
|
||
|
});
|
||
|
|
||
|
testWidgets('Icon sizing - sized theme, explicit size',
|
||
|
(WidgetTester tester) async {
|
||
|
await tester.pumpWidget(
|
||
|
const Directionality(
|
||
|
textDirection: TextDirection.ltr,
|
||
|
child: Center(
|
||
|
child: IconTheme(
|
||
|
data: IconThemeData(size: 36.0),
|
||
|
child: FaIcon(
|
||
|
FontAwesomeIcons.accessibleIcon,
|
||
|
size: 48.0,
|
||
|
),
|
||
|
),
|
||
|
),
|
||
|
),
|
||
|
);
|
||
|
|
||
|
final RenderBox renderObject = tester.renderObject(find.byType(FaIcon));
|
||
|
expect(renderObject.size, equals(const Size.square(48.0)));
|
||
|
});
|
||
|
|
||
|
testWidgets('Icon sizing - sizeless theme, default size',
|
||
|
(WidgetTester tester) async {
|
||
|
await tester.pumpWidget(
|
||
|
const Directionality(
|
||
|
textDirection: TextDirection.ltr,
|
||
|
child: Center(
|
||
|
child: IconTheme(
|
||
|
data: IconThemeData(),
|
||
|
child: FaIcon(FontAwesomeIcons.accessibleIcon),
|
||
|
),
|
||
|
),
|
||
|
),
|
||
|
);
|
||
|
|
||
|
final RenderBox renderObject = tester.renderObject(find.byType(FaIcon));
|
||
|
expect(renderObject.size, equals(const Size.square(24.0)));
|
||
|
});
|
||
|
|
||
|
testWidgets("Changing semantic label from null doesn't rebuild tree ",
|
||
|
(WidgetTester tester) async {
|
||
|
await tester.pumpWidget(
|
||
|
const Directionality(
|
||
|
textDirection: TextDirection.ltr,
|
||
|
child: Center(
|
||
|
child: FaIcon(FontAwesomeIcons.accessibleIcon),
|
||
|
),
|
||
|
),
|
||
|
);
|
||
|
|
||
|
final Element richText1 = tester.element(find.byType(RichText));
|
||
|
|
||
|
await tester.pumpWidget(
|
||
|
const Directionality(
|
||
|
textDirection: TextDirection.ltr,
|
||
|
child: Center(
|
||
|
child: FaIcon(
|
||
|
FontAwesomeIcons.accessibleIcon,
|
||
|
semanticLabel: 'a label',
|
||
|
),
|
||
|
),
|
||
|
),
|
||
|
);
|
||
|
|
||
|
final Element richText2 = tester.element(find.byType(RichText));
|
||
|
|
||
|
// Compare a leaf Element in the Icon subtree before and after changing the
|
||
|
// semanticLabel to make sure the subtree was not rebuilt.
|
||
|
expect(richText2, same(richText1));
|
||
|
});
|
||
|
}
|