| Index: tests/MathTest.cpp
|
| ===================================================================
|
| --- tests/MathTest.cpp (revision 8804)
|
| +++ tests/MathTest.cpp (working copy)
|
| @@ -48,6 +48,32 @@
|
|
|
| ///////////////////////////////////////////////////////////////////////////////
|
|
|
| +// test that SkMul16ShiftRound and SkMulDiv255Round return the same result
|
| +static void test_muldivround(skiatest::Reporter* reporter) {
|
| +#if 0
|
| + // this "complete" test is too slow, so we test a random sampling of it
|
| +
|
| + for (int a = 0; a <= 32767; ++a) {
|
| + for (int b = 0; b <= 32767; ++b) {
|
| + unsigned prod0 = SkMul16ShiftRound(a, b, 8);
|
| + unsigned prod1 = SkMulDiv255Round(a, b);
|
| + SkASSERT(prod0 == prod1);
|
| + }
|
| + }
|
| +#endif
|
| +
|
| + SkRandom rand;
|
| + for (int i = 0; i < 10000; ++i) {
|
| + unsigned a = rand.nextU() & 0x7FFF;
|
| + unsigned b = rand.nextU() & 0x7FFF;
|
| +
|
| + unsigned prod0 = SkMul16ShiftRound(a, b, 8);
|
| + unsigned prod1 = SkMulDiv255Round(a, b);
|
| +
|
| + REPORTER_ASSERT(reporter, prod0 == prod1);
|
| + }
|
| +}
|
| +
|
| static float float_blend(int src, int dst, float unit) {
|
| return dst + (src - dst) * unit;
|
| }
|
| @@ -595,6 +621,8 @@
|
|
|
| // disable for now
|
| if (false) test_blend31(); // avoid bit rot, suppress warning
|
| +
|
| + test_muldivround(reporter);
|
| }
|
|
|
| #include "TestClassDef.h"
|
|
|