Skip to content

Commit 309ae21

Browse files
authored
Add M3 Intrinsic width tests for InputDecoration (#154098)
## Description This PR migrates InputDecorator intrinsic width tests to M3. ## Related Issue Part of flutter/flutter#139076
1 parent 602f9af commit 309ae21

File tree

1 file changed

+66
-0
lines changed

1 file changed

+66
-0
lines changed

packages/flutter/test/material/input_decorator_test.dart

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7680,6 +7680,72 @@ void main() {
76807680
expect(tester.takeException(), isNull);
76817681
});
76827682

7683+
group('Intrinsic width', () {
7684+
const EdgeInsetsGeometry padding = EdgeInsetsDirectional.only(end: 24, start: 12);
7685+
7686+
const InputDecoration decorationWithoutIcons = InputDecoration(contentPadding: padding);
7687+
const InputDecoration decorationWithPrefix = InputDecoration(contentPadding: padding, prefixIcon: Icon(Icons.search));
7688+
const InputDecoration decorationWithSuffix = InputDecoration(contentPadding: padding, suffixIcon: Icon(Icons.search));
7689+
const InputDecoration decorationWithAffixes = InputDecoration(
7690+
contentPadding: padding,
7691+
prefixIcon: Icon(Icons.search),
7692+
suffixIcon: Icon(Icons.search),
7693+
);
7694+
7695+
Future<Size> measureText(WidgetTester tester, InputDecoration decoration, TextDirection direction) async {
7696+
await tester.pumpWidget(
7697+
buildInputDecorator(
7698+
decoration: decoration,
7699+
useIntrinsicWidth: true,
7700+
textDirection: direction,
7701+
),
7702+
);
7703+
return tester.renderObject<RenderBox>(findInputText()).size;
7704+
}
7705+
7706+
testWidgets('with prefixIcon in LTR', (WidgetTester tester) async {
7707+
final Size textSizeWithoutIcon = await measureText(tester, decorationWithoutIcons, TextDirection.ltr);
7708+
final Size textSizeWithPrefixIcon = await measureText(tester, decorationWithPrefix, TextDirection.ltr);
7709+
7710+
expect(textSizeWithPrefixIcon.width, equals(textSizeWithoutIcon.width));
7711+
});
7712+
7713+
testWidgets('with suffixIcon in LTR', (WidgetTester tester) async {
7714+
final Size textSizeWithoutIcon = await measureText(tester, decorationWithoutIcons, TextDirection.ltr);
7715+
final Size textSizeWithSuffixIcon = await measureText(tester, decorationWithSuffix, TextDirection.ltr);
7716+
7717+
expect(textSizeWithSuffixIcon.width, equals(textSizeWithoutIcon.width));
7718+
});
7719+
7720+
testWidgets('with prefixIcon and suffixIcon in LTR', (WidgetTester tester) async {
7721+
final Size textSizeWithoutIcon = await measureText(tester, decorationWithoutIcons, TextDirection.ltr);
7722+
final Size textSizeWithIcons = await measureText(tester, decorationWithAffixes, TextDirection.ltr);
7723+
7724+
expect(textSizeWithIcons.width, equals(textSizeWithoutIcon.width));
7725+
});
7726+
7727+
testWidgets('with prefixIcon in RTL', (WidgetTester tester) async {
7728+
final Size textSizeWithoutIcon = await measureText(tester, decorationWithoutIcons, TextDirection.rtl);
7729+
final Size textSizeWithPrefixIcon = await measureText(tester, decorationWithPrefix, TextDirection.rtl);
7730+
7731+
expect(textSizeWithPrefixIcon.width, equals(textSizeWithoutIcon.width));
7732+
});
7733+
7734+
testWidgets('with suffixIcon in RTL', (WidgetTester tester) async {
7735+
final Size textSizeWithoutIcon = await measureText(tester, decorationWithoutIcons, TextDirection.rtl);
7736+
final Size textSizeWithSuffixIcon = await measureText(tester, decorationWithSuffix, TextDirection.rtl);
7737+
7738+
expect(textSizeWithSuffixIcon.width, equals(textSizeWithoutIcon.width));
7739+
});
7740+
7741+
testWidgets('with prefixIcon and suffixIcon in RTL', (WidgetTester tester) async {
7742+
final Size textSizeWithoutIcon = await measureText(tester, decorationWithoutIcons, TextDirection.rtl);
7743+
final Size textSizeWithIcons = await measureText(tester, decorationWithAffixes, TextDirection.rtl);
7744+
7745+
expect(textSizeWithIcons.width, equals(textSizeWithoutIcon.width));
7746+
});
7747+
});
7748+
76837749
testWidgets('Ensure the height of labelStyle remains unchanged when TextField is focused', (WidgetTester tester) async {
76847750
// Regression test for https://github.com/flutter/flutter/issues/141448.
76857751
final FocusNode focusNode = FocusNode();

0 commit comments

Comments
 (0)