aboutsummaryrefslogtreecommitdiffhomepage
path: root/tests/DrawTextTest.cpp
diff options
context:
space:
mode:
authorGravatar herb <herb@google.com>2015-11-12 08:53:42 -0800
committerGravatar Commit bot <commit-bot@chromium.org>2015-11-12 08:53:42 -0800
commit386127f1d431ef64bf655f39994f17daadfb5269 (patch)
tree13f7460fb746988b559bed3b790c723b4839feb9 /tests/DrawTextTest.cpp
parentd7b25c734e6835152451fbe2ff3b809c5006ad51 (diff)
Increment text pointer when the width is zero in the subpixel with center and right alignment.
Diffstat (limited to 'tests/DrawTextTest.cpp')
-rw-r--r--tests/DrawTextTest.cpp59
1 files changed, 32 insertions, 27 deletions
diff --git a/tests/DrawTextTest.cpp b/tests/DrawTextTest.cpp
index 3a96c4ff2d..f2da450fe8 100644
--- a/tests/DrawTextTest.cpp
+++ b/tests/DrawTextTest.cpp
@@ -74,33 +74,38 @@ DEF_TEST(DrawText, reporter) {
create(&drawPosTextBitmap, drawPosTextRect);
SkCanvas drawPosTextCanvas(drawPosTextBitmap);
- for (float offsetY = 0.0f; offsetY < 1.0f; offsetY += (1.0f / 16.0f)) {
- for (float offsetX = 0.0f; offsetX < 1.0f; offsetX += (1.0f / 16.0f)) {
- SkPoint point = SkPoint::Make(25.0f + offsetX,
- 25.0f + offsetY);
-
- for (int align = 0; align < SkPaint::kAlignCount; ++align) {
- paint.setTextAlign(static_cast<SkPaint::Align>(align));
-
- for (unsigned int flags = 0; flags < (1 << 3); ++flags) {
- static const unsigned int antiAliasFlag = 1;
- static const unsigned int subpixelFlag = 1 << 1;
- static const unsigned int lcdFlag = 1 << 2;
-
- paint.setAntiAlias(SkToBool(flags & antiAliasFlag));
- paint.setSubpixelText(SkToBool(flags & subpixelFlag));
- paint.setLCDRenderText(SkToBool(flags & lcdFlag));
-
- // Test: drawText and drawPosText draw the same.
- drawBG(&drawTextCanvas);
- drawTextCanvas.drawText("A", 1, point.fX, point.fY, paint);
-
- drawBG(&drawPosTextCanvas);
- drawPosTextCanvas.drawPosText("A", 1, &point, paint);
-
- REPORTER_ASSERT(reporter,
- compare(drawTextBitmap, drawTextRect,
- drawPosTextBitmap, drawPosTextRect));
+ // Two test cases "A" for the normal path through the code, and " " to check the
+ // early return path.
+ const char* cases[] = {"A", " "};
+ for (auto c : cases) {
+ for (float offsetY = 0.0f; offsetY < 1.0f; offsetY += (1.0f / 16.0f)) {
+ for (float offsetX = 0.0f; offsetX < 1.0f; offsetX += (1.0f / 16.0f)) {
+ SkPoint point = SkPoint::Make(25.0f + offsetX,
+ 25.0f + offsetY);
+
+ for (int align = 0; align < SkPaint::kAlignCount; ++align) {
+ paint.setTextAlign(static_cast<SkPaint::Align>(align));
+
+ for (unsigned int flags = 0; flags < (1 << 3); ++flags) {
+ static const unsigned int antiAliasFlag = 1;
+ static const unsigned int subpixelFlag = 1 << 1;
+ static const unsigned int lcdFlag = 1 << 2;
+
+ paint.setAntiAlias(SkToBool(flags & antiAliasFlag));
+ paint.setSubpixelText(SkToBool(flags & subpixelFlag));
+ paint.setLCDRenderText(SkToBool(flags & lcdFlag));
+
+ // Test: drawText and drawPosText draw the same.
+ drawBG(&drawTextCanvas);
+ drawTextCanvas.drawText(c, 1, point.fX, point.fY, paint);
+
+ drawBG(&drawPosTextCanvas);
+ drawPosTextCanvas.drawPosText(c, 1, &point, paint);
+
+ REPORTER_ASSERT(reporter,
+ compare(drawTextBitmap, drawTextRect,
+ drawPosTextBitmap, drawPosTextRect));
+ }
}
}
}