Cache should work with INF values
Change-Id: I1ae8d95bb85d28fdce9e0cf270583f0224e4dfed
Bug: skia:9874
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/268938
Commit-Queue: Julia Lavrova <jlavrova@google.com>
Reviewed-by: Ben Wagner <bungeman@google.com>
diff --git a/tests/SkParagraphTest.cpp b/tests/SkParagraphTest.cpp
index 9378773..1c9a38f 100644
--- a/tests/SkParagraphTest.cpp
+++ b/tests/SkParagraphTest.cpp
@@ -5223,3 +5223,55 @@
//std::this_thread::sleep_for(std::chrono::milliseconds(1000));
}
};
+
+DEF_TEST(SkParagraph_FormattingInfinity, reporter) {
+ sk_sp<ResourceFontCollection> fontCollection = sk_make_sp<ResourceFontCollection>();
+ if (!fontCollection->fontsFound()) return;
+ fontCollection->setDefaultFontManager(SkFontMgr::RefDefault());
+ TestCanvas canvas("SkParagraph_FormattingInfinity.png");
+
+ const char* text = "Some text\nAnother line";
+
+ SkPaint paint;
+ paint.setAntiAlias(true);
+ paint.setColor(SK_ColorBLACK);
+
+ TextStyle textStyle;
+ textStyle.setForegroundColor(paint);
+ textStyle.setFontFamilies({ SkString("Roboto") });
+ ParagraphStyle paragraphStyle;
+ paragraphStyle.setTextStyle(textStyle);
+
+ auto draw = [&](const char* prefix, TextAlign textAlign) {
+ paragraphStyle.setTextAlign(textAlign);
+ ParagraphBuilderImpl builder(paragraphStyle, fontCollection);
+ builder.addText(text);
+ auto paragraph = builder.Build();
+ paragraph->layout(SK_ScalarInfinity);
+ paragraph->paint(canvas.get(), 0, 0);
+ canvas.get()->translate(0, 100);
+ };
+
+ draw("left", TextAlign::kLeft);
+ draw("right", TextAlign::kRight);
+ draw("center", TextAlign::kCenter);
+ draw("justify", TextAlign::kJustify);
+};
+
+DEF_TEST(SkParagraph_Infinity, reporter) {
+ SkASSERT(nearlyEqual(1, SK_ScalarInfinity) == false);
+ SkASSERT(nearlyEqual(1, SK_ScalarNegativeInfinity) == false);
+ SkASSERT(nearlyEqual(1, SK_ScalarNaN) == false);
+
+ SkASSERT(nearlyEqual(SK_ScalarInfinity, SK_ScalarInfinity) == true);
+ SkASSERT(nearlyEqual(SK_ScalarInfinity, SK_ScalarNegativeInfinity) == false);
+ SkASSERT(nearlyEqual(SK_ScalarInfinity, SK_ScalarNaN) == false);
+
+ SkASSERT(nearlyEqual(SK_ScalarNegativeInfinity, SK_ScalarInfinity) == false);
+ SkASSERT(nearlyEqual(SK_ScalarNegativeInfinity, SK_ScalarNegativeInfinity) == true);
+ SkASSERT(nearlyEqual(SK_ScalarNegativeInfinity, SK_ScalarNaN) == false);
+
+ SkASSERT(nearlyEqual(SK_ScalarNaN, SK_ScalarInfinity) == false);
+ SkASSERT(nearlyEqual(SK_ScalarNaN, SK_ScalarNegativeInfinity) == false);
+ SkASSERT(nearlyEqual(SK_ScalarNaN, SK_ScalarNaN) == false);
+};