blob: e516d199ec790e780de6aadb27948c3f5a0469f8 [file] [log] [blame]
// Copyright 2013 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import 'package:test/test.dart';
import 'package:ui/src/engine.dart';
TestLine l(
String? displayText,
int? startIndex,
int? endIndex, {
bool? hardBreak,
double? height,
double? width,
double? widthWithTrailingSpaces,
double? left,
double? baseline,
}) {
return TestLine(
displayText: displayText,
startIndex: startIndex,
endIndex: endIndex,
hardBreak: hardBreak,
height: height,
width: width,
widthWithTrailingSpaces: widthWithTrailingSpaces,
left: left,
baseline: baseline,
);
}
void expectLines(CanvasParagraph paragraph, List<TestLine> expectedLines) {
final List<ParagraphLine> lines = paragraph.lines;
expect(lines, hasLength(expectedLines.length));
for (int i = 0; i < lines.length; i++) {
final ParagraphLine line = lines[i];
final TestLine expectedLine = expectedLines[i];
expect(
line.lineNumber,
i,
reason: 'line #$i had the wrong `lineNumber`. Expected: $i. Actual: ${line.lineNumber}',
);
if (expectedLine.displayText != null) {
final String displayText = line.getText(paragraph);
expect(
displayText,
expectedLine.displayText,
reason:
'line #$i had a different `displayText` value: "$displayText" vs. "${expectedLine.displayText}"',
);
}
if (expectedLine.startIndex != null) {
expect(
line.startIndex,
expectedLine.startIndex,
reason:
'line #$i had a different `startIndex` value: "${line.startIndex}" vs. "${expectedLine.startIndex}"',
);
}
if (expectedLine.endIndex != null) {
expect(
line.endIndex,
expectedLine.endIndex,
reason:
'line #$i had a different `endIndex` value: "${line.endIndex}" vs. "${expectedLine.endIndex}"',
);
}
if (expectedLine.hardBreak != null) {
expect(
line.hardBreak,
expectedLine.hardBreak,
reason:
'line #$i had a different `hardBreak` value: "${line.hardBreak}" vs. "${expectedLine.hardBreak}"',
);
}
if (expectedLine.height != null) {
expect(
line.height,
expectedLine.height,
reason:
'line #$i had a different `height` value: "${line.height}" vs. "${expectedLine.height}"',
);
}
if (expectedLine.width != null) {
expect(
line.width,
expectedLine.width,
reason:
'line #$i had a different `width` value: "${line.width}" vs. "${expectedLine.width}"',
);
}
if (expectedLine.widthWithTrailingSpaces != null) {
expect(
line.widthWithTrailingSpaces,
expectedLine.widthWithTrailingSpaces,
reason:
'line #$i had a different `widthWithTrailingSpaces` value: "${line.widthWithTrailingSpaces}" vs. "${expectedLine.widthWithTrailingSpaces}"',
);
}
if (expectedLine.left != null) {
expect(
line.left,
expectedLine.left,
reason:
'line #$i had a different `left` value: "${line.left}" vs. "${expectedLine.left}"',
);
}
}
}
class TestLine {
TestLine({
this.displayText,
this.startIndex,
this.endIndex,
this.hardBreak,
this.height,
this.width,
this.widthWithTrailingSpaces,
this.left,
this.baseline,
});
final String? displayText;
final int? startIndex;
final int? endIndex;
final bool? hardBreak;
final double? height;
final double? width;
final double? widthWithTrailingSpaces;
final double? left;
final double? baseline;
}