Skip to content

Commit e0ee70e

Browse files
committed
content test [nfc]: Use checks-extensions in list-marker tests; explain a bit more
A couple of the extension members added here don't actually end up getting used (because the "height of one line" check feels like it benefits from describing the calculation more explicitly). Still the fact we're referring to those properties in a test makes a good prompt to add the extension so future tests can use it.
1 parent ce338ab commit e0ee70e

File tree

2 files changed

+25
-7
lines changed

2 files changed

+25
-7
lines changed

test/flutter_checks.dart

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,20 @@ library;
44
import 'package:checks/checks.dart';
55
import 'package:flutter/foundation.dart';
66
import 'package:flutter/material.dart';
7+
import 'package:flutter/rendering.dart';
78
import 'package:flutter/services.dart';
89

910
extension PaintChecks on Subject<Paint> {
1011
Subject<Shader?> get shader => has((x) => x.shader, 'shader');
1112
}
1213

1314
extension RectChecks on Subject<Rect> {
15+
Subject<double> get left => has((d) => d.left, 'left');
1416
Subject<double> get top => has((d) => d.top, 'top');
17+
Subject<double> get right => has((d) => d.right, 'right');
1518
Subject<double> get bottom => has((d) => d.bottom, 'bottom');
16-
19+
Subject<double> get width => has((d) => d.width, 'width');
20+
Subject<double> get height => has((d) => d.height, 'height');
1721
// TODO others
1822
}
1923

@@ -36,6 +40,10 @@ extension GlobalKeyChecks<T extends State<StatefulWidget>> on Subject<GlobalKey<
3640
Subject<T?> get currentState => has((k) => k.currentState, 'currentState');
3741
}
3842

43+
extension RenderBoxChecks on Subject<RenderBox> {
44+
Subject<Size> get size => has((x) => x.size, 'size');
45+
}
46+
3947
extension IconChecks on Subject<Icon> {
4048
Subject<IconData?> get icon => has((i) => i.icon, 'icon');
4149
Subject<Color?> get color => has((i) => i.color, 'color');
@@ -130,6 +138,11 @@ extension InlineSpanChecks on Subject<InlineSpan> {
130138
Subject<TextStyle?> get style => has((x) => x.style, 'style');
131139
}
132140

141+
extension RenderParagraphChecks on Subject<RenderParagraph> {
142+
Subject<InlineSpan> get text => has((x) => x.text, 'text');
143+
Subject<bool> get didExceedMaxLines => has((x) => x.didExceedMaxLines, 'didExceedMaxLines');
144+
}
145+
133146
extension SizeChecks on Subject<Size> {
134147
Subject<double> get width => has((x) => x.width, 'width');
135148
Subject<double> get height => has((x) => x.height, 'height');

test/widgets/content_test.dart

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -248,19 +248,24 @@ void main() {
248248

249249
testWidgets('ordered list markers have enough space to render completely', (tester) async {
250250
await prepareContent(tester, plainContent(ContentExample.orderedListLargeStart.html));
251-
final renderParagraph = tester.renderObject(find.textContaining('9999.')) as RenderParagraph;
252-
final textHeight = renderParagraph.size.height;
253-
final lineHeight = renderParagraph.text.style!.height! * renderParagraph.text.style!.fontSize!;
251+
final marker = tester.renderObject(find.textContaining('9999.')) as RenderParagraph;
252+
// The marker has the height of just one line of text, not more.
253+
final textHeight = marker.size.height;
254+
final lineHeight = marker.text.style!.height! * marker.text.style!.fontSize!;
254255
check(textHeight).equals(lineHeight);
255-
check(renderParagraph.didExceedMaxLines).isFalse();
256+
// The marker's text didn't overflow to more lines
257+
// (and get cut off by a `maxLines: 1`).
258+
check(marker).didExceedMaxLines.isFalse();
256259
});
257260

258261
testWidgets('ordered list markers are end-aligned', (tester) async {
259262
await prepareContent(tester, plainContent(ContentExample.orderedListLargeStart.html));
260263
final marker9999 = tester.getRect(find.textContaining('9999.'));
261264
final marker10000 = tester.getRect(find.textContaining('10000.'));
262-
check(marker9999.width != marker10000.width).isTrue();
263-
check(marker9999.right).equals(marker10000.right);
265+
// The markers are aligned at their right edge...
266+
check(marker9999).right.equals(marker10000.right);
267+
// ... and not because they somehow happen to have the same width.
268+
check(marker9999).width.isLessThan(marker10000.width);
264269
});
265270
});
266271

0 commit comments

Comments
 (0)