import 'package:flutter_test/flutter_test.dart'; import 'package:halkyon_ui/halkyon_ui.dart'; import 'package:material_ui/material_ui.dart'; void main() { Future show(WidgetTester tester) async { final controller = TextEditingController(); addTearDown(controller.dispose); await tester.pumpWidget( MaterialApp( home: Scaffold( body: TextField( controller: controller, maxLength: TextLimits.name, buildCounter: nearLimitCounter, ), ), ), ); return controller; } testWidgets('a field counts only near its limit, and stops there', ( tester, ) async { final controller = await show(tester); await tester.enterText(find.byType(TextField), 'a' * 10); await tester.pump(); expect(find.textContaining(' / ${TextLimits.name}'), findsNothing); await tester.enterText(find.byType(TextField), 'a' * 35); await tester.pump(); expect(find.text('35 / ${TextLimits.name}'), findsOneWidget); await tester.enterText(find.byType(TextField), 'a' * 100); await tester.pump(); expect(controller.text, hasLength(TextLimits.name)); expect( find.text('${TextLimits.name} / ${TextLimits.name}'), findsOneWidget, ); }); }