@@ -97,6 +97,43 @@ void main() {
9797 );
9898 });
9999
100+ testWidgets ('opening, zooming, and editing preserve literal tab bytes' , (
101+ WidgetTester tester,
102+ ) async {
103+ final FakeConnection fake = FakeConnection (initial: ConnState .ready);
104+ addTearDown (fake.dispose);
105+ await pumpSurface (tester, const EditorView (), connection: fake);
106+ const String source = 'if True:\n\t print(1)\n ' ;
107+ containerOf (tester)
108+ .read (editorDocumentProvider.notifier)
109+ .openFromBoard (path: '/main.py' , content: source);
110+ await tester.pump ();
111+
112+ EditableText editable = tester.widget <EditableText >(
113+ find.byType (EditableText ),
114+ );
115+ expect (editable.controller.text, source);
116+
117+ await tester.tap (find.byKey (kEditorIncreaseFontSizeButtonKey));
118+ await tester.pump ();
119+ editable = tester.widget <EditableText >(find.byType (EditableText ));
120+ expect (editable.controller.text, source);
121+
122+ editable.controller.value = const TextEditingValue (
123+ text: '${source }# unrelated edit\n ' ,
124+ selection: TextSelection .collapsed (
125+ offset: '${source }# unrelated edit\n ' .length,
126+ ),
127+ );
128+ await tester.pump ();
129+
130+ expect (
131+ containerOf (tester).read (editorDocumentProvider).content,
132+ '${source }# unrelated edit\n ' ,
133+ reason: 'valid tab indentation is source data, never display state' ,
134+ );
135+ });
136+
100137 testWidgets ('font buttons are localized and disable at their bounds' , (
101138 WidgetTester tester,
102139 ) async {
@@ -141,6 +178,41 @@ void main() {
141178 );
142179 });
143180
181+ testWidgets ('maximum zoom composes with 2x accessibility text scaling' , (
182+ WidgetTester tester,
183+ ) async {
184+ final FakeConnection fake = FakeConnection (initial: ConnState .ready);
185+ addTearDown (fake.dispose);
186+ await pumpSurface (
187+ tester,
188+ const MediaQuery (
189+ data: MediaQueryData (textScaler: TextScaler .linear (2 )),
190+ child: EditorView (),
191+ ),
192+ connection: fake,
193+ );
194+ containerOf (tester)
195+ .read (editorDisplaySettingsProvider.notifier)
196+ .setFontSize (kEditorMaxFontSize);
197+ containerOf (tester)
198+ .read (editorDocumentProvider.notifier)
199+ .openFromBoard (
200+ path: '/main.py' ,
201+ content: List <String >.generate (
202+ 120 ,
203+ (int index) => 'value_${index + 1 } = ${index + 1 }' ,
204+ ).join ('\n ' ),
205+ );
206+ await tester.pump ();
207+
208+ expect (
209+ tester.widget <EditableText >(find.byType (EditableText )).style.fontSize,
210+ kEditorMaxFontSize,
211+ );
212+ expect (find.text ('120' ), findsOneWidget);
213+ expect (tester.takeException (), isNull);
214+ });
215+
144216 testWidgets ('compact editor exposes font sizing without overflowing' , (
145217 WidgetTester tester,
146218 ) async {
0 commit comments