1cb93a386Sopenharmony_ci/* 2cb93a386Sopenharmony_ci * Copyright 2011 Google Inc. 3cb93a386Sopenharmony_ci * 4cb93a386Sopenharmony_ci * Use of this source code is governed by a BSD-style license that can be 5cb93a386Sopenharmony_ci * found in the LICENSE file. 6cb93a386Sopenharmony_ci */ 7cb93a386Sopenharmony_ci 8cb93a386Sopenharmony_ci#include "include/core/SkRect.h" 9cb93a386Sopenharmony_ci#include "include/private/SkFloatingPoint.h" 10cb93a386Sopenharmony_ci#include "include/utils/SkRandom.h" 11cb93a386Sopenharmony_ci#include "tests/Test.h" 12cb93a386Sopenharmony_ci 13cb93a386Sopenharmony_cistatic void check_invalid(skiatest::Reporter* reporter, 14cb93a386Sopenharmony_ci SkScalar l, SkScalar t, SkScalar r, SkScalar b) { 15cb93a386Sopenharmony_ci SkRect rect; 16cb93a386Sopenharmony_ci rect.setLTRB(l, t, r, b); 17cb93a386Sopenharmony_ci REPORTER_ASSERT(reporter, !rect.isFinite()); 18cb93a386Sopenharmony_ci} 19cb93a386Sopenharmony_ci 20cb93a386Sopenharmony_ci// Tests that isFinite() will reject any rect with +/-inf values 21cb93a386Sopenharmony_ci// as one of its coordinates. 22cb93a386Sopenharmony_ciDEF_TEST(InfRect, reporter) { 23cb93a386Sopenharmony_ci float inf = SK_FloatInfinity; 24cb93a386Sopenharmony_ci float nan = SK_FloatNaN; 25cb93a386Sopenharmony_ci SkASSERT(!(nan == nan)); 26cb93a386Sopenharmony_ci SkScalar small = SkIntToScalar(10); 27cb93a386Sopenharmony_ci SkScalar big = SkIntToScalar(100); 28cb93a386Sopenharmony_ci 29cb93a386Sopenharmony_ci REPORTER_ASSERT(reporter, SkRect::MakeEmpty().isFinite()); 30cb93a386Sopenharmony_ci 31cb93a386Sopenharmony_ci SkRect rect = SkRect::MakeXYWH(small, small, big, big); 32cb93a386Sopenharmony_ci REPORTER_ASSERT(reporter, rect.isFinite()); 33cb93a386Sopenharmony_ci 34cb93a386Sopenharmony_ci const SkScalar invalid[] = { nan, inf, -inf }; 35cb93a386Sopenharmony_ci for (size_t i = 0; i < SK_ARRAY_COUNT(invalid); ++i) { 36cb93a386Sopenharmony_ci check_invalid(reporter, small, small, big, invalid[i]); 37cb93a386Sopenharmony_ci check_invalid(reporter, small, small, invalid[i], big); 38cb93a386Sopenharmony_ci check_invalid(reporter, small, invalid[i], big, big); 39cb93a386Sopenharmony_ci check_invalid(reporter, invalid[i], small, big, big); 40cb93a386Sopenharmony_ci } 41cb93a386Sopenharmony_ci} 42cb93a386Sopenharmony_ci 43cb93a386Sopenharmony_ci// need tests for SkStrSearch 44