| OLD | NEW |
| 1 | 1 |
| 2 /* | 2 /* |
| 3 * Copyright 2011 Google Inc. | 3 * Copyright 2011 Google Inc. |
| 4 * | 4 * |
| 5 * Use of this source code is governed by a BSD-style license that can be | 5 * Use of this source code is governed by a BSD-style license that can be |
| 6 * found in the LICENSE file. | 6 * found in the LICENSE file. |
| 7 */ | 7 */ |
| 8 // Unit tests for src/core/SkPoint.cpp and its header | 8 // Unit tests for src/core/SkPoint.cpp and its header |
| 9 | 9 |
| 10 #include "SkPoint.h" | 10 #include "SkPoint.h" |
| (...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 110 SkPoint pt = { SkFloatToScalar(1.0e-37f), SkFloatToScalar(1.0e-37f) }; | 110 SkPoint pt = { SkFloatToScalar(1.0e-37f), SkFloatToScalar(1.0e-37f) }; |
| 111 SkPoint copy = pt; | 111 SkPoint copy = pt; |
| 112 | 112 |
| 113 REPORTER_ASSERT(reporter, 0 == SkPoint::Normalize(&pt)); | 113 REPORTER_ASSERT(reporter, 0 == SkPoint::Normalize(&pt)); |
| 114 REPORTER_ASSERT(reporter, pt == copy); // pt is unchanged | 114 REPORTER_ASSERT(reporter, pt == copy); // pt is unchanged |
| 115 | 115 |
| 116 REPORTER_ASSERT(reporter, !pt.setLength(SK_Scalar1)); | 116 REPORTER_ASSERT(reporter, !pt.setLength(SK_Scalar1)); |
| 117 REPORTER_ASSERT(reporter, pt == copy); // pt is unchanged | 117 REPORTER_ASSERT(reporter, pt == copy); // pt is unchanged |
| 118 } | 118 } |
| 119 | 119 |
| 120 static void PointTest(skiatest::Reporter* reporter) { | 120 #include "TestClassDef.h" |
| 121 DEF_TEST(Point, reporter) { |
| 121 test_casts(reporter); | 122 test_casts(reporter); |
| 122 | 123 |
| 123 static const struct { | 124 static const struct { |
| 124 SkScalar fX; | 125 SkScalar fX; |
| 125 SkScalar fY; | 126 SkScalar fY; |
| 126 SkScalar fLength; | 127 SkScalar fLength; |
| 127 } gRec[] = { | 128 } gRec[] = { |
| 128 { SkIntToScalar(3), SkIntToScalar(4), SkIntToScalar(5) }, | 129 { SkIntToScalar(3), SkIntToScalar(4), SkIntToScalar(5) }, |
| 129 { SkFloatToScalar(0.6f), SkFloatToScalar(0.8f), SK_Scalar1 }, | 130 { SkFloatToScalar(0.6f), SkFloatToScalar(0.8f), SK_Scalar1 }, |
| 130 }; | 131 }; |
| 131 | 132 |
| 132 for (size_t i = 0; i < SK_ARRAY_COUNT(gRec); ++i) { | 133 for (size_t i = 0; i < SK_ARRAY_COUNT(gRec); ++i) { |
| 133 test_length(reporter, gRec[i].fX, gRec[i].fY, gRec[i].fLength); | 134 test_length(reporter, gRec[i].fX, gRec[i].fY, gRec[i].fLength); |
| 134 } | 135 } |
| 135 | 136 |
| 136 test_underflow(reporter); | 137 test_underflow(reporter); |
| 137 test_overflow(reporter); | 138 test_overflow(reporter); |
| 138 } | 139 } |
| 139 | 140 |
| 140 #include "TestClassDef.h" | 141 DEF_TEST(Point_setLengthFast, reporter) { |
| 141 DEFINE_TESTCLASS("Point", PointTestClass, PointTest) | 142 // Scale a (1,1) point to a bunch of different lengths, |
| 143 // making sure the slow and fast paths are within 0.1%. |
| 144 const float tests[] = { 1.0f, 0.0f, 1.0e-37f, 3.4e38f, 42.0f, 0.00012f }; |
| 145 |
| 146 const SkPoint kOne = {1.0f, 1.0f}; |
| 147 for (unsigned i = 0; i < SK_ARRAY_COUNT(tests); i++) { |
| 148 SkPoint slow = kOne, fast = kOne; |
| 149 |
| 150 slow.setLength(tests[i]); |
| 151 fast.setLengthFast(tests[i]); |
| 152 |
| 153 if (slow.length() < FLT_MIN && fast.length() < FLT_MIN) continue; |
| 154 |
| 155 SkScalar ratio = slow.length() / fast.length(); |
| 156 REPORTER_ASSERT(reporter, ratio > 0.999f); |
| 157 REPORTER_ASSERT(reporter, ratio < 1.001f); |
| 158 } |
| 159 } |
| OLD | NEW |