| Index: tests/ScaleToSidesTest.cpp
|
| diff --git a/tests/ScaleToSidesTest.cpp b/tests/ScaleToSidesTest.cpp
|
| index 60e82be52951201b54143f3a3a997d3cd55ad2c4..513f0c98b656f6e8a436cd8bb493f644aa921712 100644
|
| --- a/tests/ScaleToSidesTest.cpp
|
| +++ b/tests/ScaleToSidesTest.cpp
|
| @@ -7,23 +7,27 @@
|
|
|
| #include "SkScaleToSides.h"
|
|
|
| -#include <cfloat>
|
| +#include <algorithm>
|
| #include "Test.h"
|
|
|
| DEF_TEST(ScaleToSides, reporter) {
|
| - float interestingValues[] = {
|
| - 0.0f,
|
| - 0.5f,
|
| - 1.0f,
|
| - 2.0f,
|
| - 3.0f,
|
| - 33.0f,
|
| - 33554430.0f,
|
| - 33554431.0f,
|
| - 33554464.0f,
|
| - 333333332.0f,
|
| - 333333333.0f,
|
| - 333333334.0f,
|
| + double interestingValues[] = {
|
| + // From skp bitbucket
|
| + 111.60000228881836,
|
| + 55.800003051757813,
|
| + 0.99999996581812677920,
|
| + 0.0,
|
| + 0.5,
|
| + 1.0,
|
| + 2.0,
|
| + 3.0,
|
| + 33.0,
|
| + 33554430.0,
|
| + 33554431.0,
|
| + 33554464.0,
|
| + 333333332.0,
|
| + 333333333.0,
|
| + 333333334.0,
|
| FLT_MAX,
|
| FLT_EPSILON,
|
| FLT_MIN
|
| @@ -31,16 +35,21 @@ DEF_TEST(ScaleToSides, reporter) {
|
|
|
| int numInterestingValues = (int)SK_ARRAY_COUNT(interestingValues);
|
|
|
| - for (int i = 0; i < numInterestingValues; i++) {
|
| - for (int j = 0; j < numInterestingValues; j++) {
|
| - for (int k = 0; k < numInterestingValues; k++) {
|
| - float radius1 = interestingValues[i];
|
| - float radius2 = interestingValues[j];
|
| - float width = interestingValues[k];
|
| - if (width > 0.0f) {
|
| - double scale = (double)width / ((double)radius1 + (double)radius2);
|
| - if (scale < 1.0) {
|
| - ScaleToSides::AdjustRadii(width, scale, &radius1, &radius2);
|
| + for (int s = 0; s <= numInterestingValues; s++) {
|
| + for (int i = 0; i < numInterestingValues; i++) {
|
| + for (int j = 0; j < numInterestingValues; j++) {
|
| + for (int k = 0; k < numInterestingValues; k++) {
|
| + float radius1 = (float)interestingValues[i];
|
| + float radius2 = (float)interestingValues[j];
|
| + double width = interestingValues[k];
|
| + double scale = width / ((double)radius1 + (double)radius2);
|
| + if (width > 0.0) {
|
| + if (s != 0) {
|
| + scale = std::min(scale, interestingValues[s-1]);
|
| + }
|
| + if (scale < 1.0 && scale > 0.0) {
|
| + ScaleToSides::AdjustRadii(width, scale, &radius1, &radius2);
|
| + }
|
| }
|
| }
|
| }
|
|
|