Skip to content

Commit 76aabdf

Browse files
daohoangsonclaude
andcommitted
test: add computeDryBaseline tests for custom RenderBox subclasses
These tests verify that getDryBaseline works correctly on all custom render objects. Four tests currently fail because the render objects that extend RenderBox directly do not implement computeDryBaseline, which is required in Flutter 3.32+. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent 18c4b10 commit 76aabdf

1 file changed

Lines changed: 182 additions & 0 deletions

File tree

Lines changed: 182 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,182 @@
1+
import 'package:flutter/material.dart';
2+
import 'package:flutter/rendering.dart';
3+
import 'package:flutter_test/flutter_test.dart';
4+
import 'package:flutter_widget_from_html_core/flutter_widget_from_html_core.dart';
5+
6+
import '_.dart';
7+
8+
void main() {
9+
group('computeDryBaseline', () {
10+
testWidgets('HtmlListItem', (tester) async {
11+
final key = GlobalKey();
12+
await tester.pumpWidget(
13+
MaterialApp(
14+
home: Scaffold(
15+
body: HtmlListItem(
16+
key: key,
17+
marker: const Text('1.'),
18+
textDirection: TextDirection.ltr,
19+
child: const Text('Hello'),
20+
),
21+
),
22+
),
23+
);
24+
await tester.pumpAndSettle();
25+
26+
final renderBox = key.renderBox;
27+
final baseline = renderBox.getDryBaseline(
28+
renderBox.constraints,
29+
TextBaseline.alphabetic,
30+
);
31+
expect(baseline, isNotNull);
32+
});
33+
34+
testWidgets('HtmlListMarker', (tester) async {
35+
final key = GlobalKey();
36+
await tester.pumpWidget(
37+
MaterialApp(
38+
home: Scaffold(
39+
body: HtmlListItem(
40+
marker: HtmlListMarker(
41+
key: key,
42+
markerType: HtmlListMarkerType.disc,
43+
textStyle: const TextStyle(fontSize: 14),
44+
),
45+
textDirection: TextDirection.ltr,
46+
child: const Text('Hello'),
47+
),
48+
),
49+
),
50+
);
51+
await tester.pumpAndSettle();
52+
53+
final renderBox = key.renderBox;
54+
final baseline = renderBox.getDryBaseline(
55+
renderBox.constraints,
56+
TextBaseline.alphabetic,
57+
);
58+
expect(baseline, isNotNull);
59+
});
60+
61+
testWidgets('HtmlRuby', (tester) async {
62+
final key = GlobalKey();
63+
await tester.pumpWidget(
64+
MaterialApp(
65+
home: Scaffold(
66+
body: HtmlRuby(
67+
key: key,
68+
ruby: const Text('漢'),
69+
rt: const Text('かん'),
70+
),
71+
),
72+
),
73+
);
74+
await tester.pumpAndSettle();
75+
76+
final renderBox = key.renderBox;
77+
final baseline = renderBox.getDryBaseline(
78+
renderBox.constraints,
79+
TextBaseline.alphabetic,
80+
);
81+
expect(baseline, isNotNull);
82+
});
83+
84+
testWidgets('HtmlTable', (tester) async {
85+
final key = GlobalKey();
86+
await tester.pumpWidget(
87+
HtmlTable(
88+
key: key,
89+
children: const [
90+
HtmlTableCell(
91+
columnStart: 0,
92+
rowStart: 0,
93+
child: Text('Cell'),
94+
),
95+
],
96+
),
97+
);
98+
await tester.pumpAndSettle();
99+
100+
final renderBox = key.renderBox;
101+
final baseline = renderBox.getDryBaseline(
102+
const BoxConstraints(maxWidth: 100, maxHeight: 100),
103+
TextBaseline.alphabetic,
104+
);
105+
expect(baseline, isNotNull);
106+
});
107+
108+
testWidgets('HorizontalMargin', (tester) async {
109+
final key = GlobalKey();
110+
await tester.pumpWidget(
111+
MaterialApp(
112+
home: Scaffold(
113+
body: SizedBox(
114+
width: 100,
115+
child: HorizontalMargin(
116+
key: key,
117+
left: 10,
118+
right: 10,
119+
child: const Text('Hello'),
120+
),
121+
),
122+
),
123+
),
124+
);
125+
await tester.pumpAndSettle();
126+
127+
final renderBox = key.renderBox;
128+
final baseline = renderBox.getDryBaseline(
129+
renderBox.constraints,
130+
TextBaseline.alphabetic,
131+
);
132+
expect(baseline, isNotNull);
133+
});
134+
135+
testWidgets('CssSizing', (tester) async {
136+
final key = GlobalKey();
137+
await tester.pumpWidget(
138+
MaterialApp(
139+
home: Scaffold(
140+
body: CssSizing(
141+
key: key,
142+
child: const Text('Hello'),
143+
),
144+
),
145+
),
146+
);
147+
await tester.pumpAndSettle();
148+
149+
final renderBox = key.renderBox;
150+
final baseline = renderBox.getDryBaseline(
151+
renderBox.constraints,
152+
TextBaseline.alphabetic,
153+
);
154+
expect(baseline, isNotNull);
155+
});
156+
157+
testWidgets('ValignBaseline', (tester) async {
158+
final key = GlobalKey();
159+
await tester.pumpWidget(
160+
MaterialApp(
161+
home: Scaffold(
162+
body: ValignBaselineContainer(
163+
child: ValignBaseline(
164+
key: key,
165+
index: 0,
166+
child: const Text('Hello'),
167+
),
168+
),
169+
),
170+
),
171+
);
172+
await tester.pumpAndSettle();
173+
174+
final renderBox = key.renderBox;
175+
final baseline = renderBox.getDryBaseline(
176+
renderBox.constraints,
177+
TextBaseline.alphabetic,
178+
);
179+
expect(baseline, isNotNull);
180+
});
181+
});
182+
}

0 commit comments

Comments
 (0)