ScaleToSidesTest.cpp revision 7cf12ddb8c1c2cf7a0eec63439148cc6b2bc104a
1/*
2 * Copyright 2016 Google Inc.
3 *
4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file.
6 */
7
8#include "SkScaleToSides.h"
9
10#include <cfloat>
11#include "Test.h"
12
13DEF_TEST(ScaleToSides, reporter) {
14    float interestingValues[] = {
15        0.0f,
16        0.5f,
17        1.0f,
18        2.0f,
19        3.0f,
20        33.0f,
21        33554430.0f,
22        33554431.0f,
23        33554464.0f,
24        333333332.0f,
25        333333333.0f,
26        333333334.0f,
27        FLT_MAX,
28        FLT_EPSILON,
29        FLT_MIN
30    };
31
32    int numInterestingValues = (int)SK_ARRAY_COUNT(interestingValues);
33
34    for (int i = 0; i < numInterestingValues; i++) {
35        for (int j = 0; j < numInterestingValues; j++) {
36            for (int k = 0; k < numInterestingValues; k++) {
37                float radius1 = interestingValues[i];
38                float radius2 = interestingValues[j];
39                float width = interestingValues[k];
40                if (width > 0.0f) {
41                    double scale = (double)width / ((double)radius1 + (double)radius2);
42                    if (scale < 1.0) {
43                        ScaleToSides::AdjustRadii(width, scale, &radius1, &radius2);
44                    }
45                }
46            }
47        }
48    }
49}
50