diff options
author | 2013-04-10 15:55:37 +0000 | |
---|---|---|
committer | 2013-04-10 15:55:37 +0000 | |
commit | 66089e4ec4f1702caf2154780471417872862148 (patch) | |
tree | e078d7a335a396cc325f2d2f55723315307eb07d /tests/PathOpsSimplifyDegenerateThreadedTest.cpp | |
parent | 51dbabee67ea1285e1115e535d26944d4da99be5 (diff) |
Make parallel unit testing work on windows
Review URL: https://codereview.chromium.org/14072002
git-svn-id: http://skia.googlecode.com/svn/trunk@8594 2bbb7eff-a529-9590-31e7-b0007b416f81
Diffstat (limited to 'tests/PathOpsSimplifyDegenerateThreadedTest.cpp')
-rwxr-xr-x | tests/PathOpsSimplifyDegenerateThreadedTest.cpp | 120 |
1 files changed, 53 insertions, 67 deletions
diff --git a/tests/PathOpsSimplifyDegenerateThreadedTest.cpp b/tests/PathOpsSimplifyDegenerateThreadedTest.cpp index 41ddd9d7b6..ea4ed0d268 100755 --- a/tests/PathOpsSimplifyDegenerateThreadedTest.cpp +++ b/tests/PathOpsSimplifyDegenerateThreadedTest.cpp @@ -5,76 +5,64 @@ * found in the LICENSE file. */ #include "PathOpsExtendedTest.h" +#include "PathOpsThreadedCommon.h" -static THREAD_TYPE testSimplifyDegeneratesMain(void* data) { +static void testSimplifyDegeneratesMain(PathOpsThreadState* data) { SkASSERT(data); - State4& state = *(State4*) data; + PathOpsThreadState& state = *data; char pathStr[1024]; sk_bzero(pathStr, sizeof(pathStr)); - do { - int ax = state.a & 0x03; - int ay = state.a >> 2; - int bx = state.b & 0x03; - int by = state.b >> 2; - int cx = state.c & 0x03; - int cy = state.c >> 2; - for (int d = 0; d < 16; ++d) { - int dx = d & 0x03; - int dy = d >> 2; - for (int e = d ; e < 16; ++e) { - int ex = e & 0x03; - int ey = e >> 2; - for (int f = d ; f < 16; ++f) { - int fx = f & 0x03; - int fy = f >> 2; - if (state.d && (ex - dx) * (fy - dy) - != (ey - dy) * (fx - dx)) { - continue; - } - SkPath path, out; - path.setFillType(SkPath::kWinding_FillType); - path.moveTo(SkIntToScalar(ax), SkIntToScalar(ay)); - path.lineTo(SkIntToScalar(bx), SkIntToScalar(by)); - path.lineTo(SkIntToScalar(cx), SkIntToScalar(cy)); - path.close(); - path.moveTo(SkIntToScalar(dx), SkIntToScalar(dy)); - path.lineTo(SkIntToScalar(ex), SkIntToScalar(ey)); - path.lineTo(SkIntToScalar(fx), SkIntToScalar(fy)); - path.close(); - if (1) { - char* str = pathStr; - str += sprintf(str, " path.moveTo(%d, %d);\n", ax, ay); - str += sprintf(str, " path.lineTo(%d, %d);\n", bx, by); - str += sprintf(str, " path.lineTo(%d, %d);\n", cx, cy); - str += sprintf(str, " path.close();\n"); - str += sprintf(str, " path.moveTo(%d, %d);\n", dx, dy); - str += sprintf(str, " path.lineTo(%d, %d);\n", ex, ey); - str += sprintf(str, " path.lineTo(%d, %d);\n", fx, fy); - str += sprintf(str, " path.close();\n"); - } - outputProgress(state, pathStr, SkPath::kWinding_FillType); - testSimplify(path, false, out, state, pathStr); - state.testsRun++; - path.setFillType(SkPath::kEvenOdd_FillType); - outputProgress(state, pathStr, SkPath::kEvenOdd_FillType); - testSimplify(path, true, out, state, pathStr); - state.testsRun++; + int ax = state.fA & 0x03; + int ay = state.fA >> 2; + int bx = state.fB & 0x03; + int by = state.fB >> 2; + int cx = state.fC & 0x03; + int cy = state.fC >> 2; + for (int d = 0; d < 16; ++d) { + int dx = d & 0x03; + int dy = d >> 2; + for (int e = d ; e < 16; ++e) { + int ex = e & 0x03; + int ey = e >> 2; + for (int f = d ; f < 16; ++f) { + int fx = f & 0x03; + int fy = f >> 2; + if (state.fD && (ex - dx) * (fy - dy) + != (ey - dy) * (fx - dx)) { + continue; } + SkPath path, out; + path.setFillType(SkPath::kWinding_FillType); + path.moveTo(SkIntToScalar(ax), SkIntToScalar(ay)); + path.lineTo(SkIntToScalar(bx), SkIntToScalar(by)); + path.lineTo(SkIntToScalar(cx), SkIntToScalar(cy)); + path.close(); + path.moveTo(SkIntToScalar(dx), SkIntToScalar(dy)); + path.lineTo(SkIntToScalar(ex), SkIntToScalar(ey)); + path.lineTo(SkIntToScalar(fx), SkIntToScalar(fy)); + path.close(); + char* str = pathStr; + str += sprintf(str, " path.moveTo(%d, %d);\n", ax, ay); + str += sprintf(str, " path.lineTo(%d, %d);\n", bx, by); + str += sprintf(str, " path.lineTo(%d, %d);\n", cx, cy); + str += sprintf(str, " path.close();\n"); + str += sprintf(str, " path.moveTo(%d, %d);\n", dx, dy); + str += sprintf(str, " path.lineTo(%d, %d);\n", ex, ey); + str += sprintf(str, " path.lineTo(%d, %d);\n", fx, fy); + str += sprintf(str, " path.close();\n"); + outputProgress(state.fPathStr, pathStr, SkPath::kWinding_FillType); + testSimplify(path, false, out, state, pathStr); + path.setFillType(SkPath::kEvenOdd_FillType); + outputProgress(state.fPathStr, pathStr, SkPath::kEvenOdd_FillType); + testSimplify(path, true, out, state, pathStr); } } - } while (runNextTestSet(state)); - THREAD_RETURN + } } static void TestSimplifyDegeneratesThreaded(skiatest::Reporter* reporter) { - int testsRun = 0; - if (gShowTestProgress) SkDebugf("%s\n", __FUNCTION__); -#ifdef SK_DEBUG - gDebugMaxWindSum = 2; - gDebugMaxWindValue = 2; -#endif - const char testStr[] = "testDegenerates"; - initializeTests(reporter, testStr, sizeof(testStr)); + int threadCount = initializeTests("testDegenerates"); + PathOpsThreadedTestRunner testRunner(reporter, threadCount); for (int a = 0; a < 16; ++a) { int ax = a & 0x03; int ay = a >> 2; @@ -85,17 +73,15 @@ static void TestSimplifyDegeneratesThreaded(skiatest::Reporter* reporter) { int cx = c & 0x03; int cy = c >> 2; bool abcIsATriangle = (bx - ax) * (cy - ay) != (by - ay) * (cx - ax); - testsRun += dispatchTest4(testSimplifyDegeneratesMain, - a, b, c, abcIsATriangle); + *testRunner.fRunnables.append() = SkNEW_ARGS(PathOpsThreadedRunnable, + (&testSimplifyDegeneratesMain, a, b, c, abcIsATriangle, + &testRunner)); } - if (!gAllowExtendedTest) goto finish; - if (gShowTestProgress) SkDebugf("."); + if (!reporter->allowExtendedTest()) goto finish; } - if (gShowTestProgress) SkDebugf("\n%d", a); } finish: - testsRun += waitForCompletion(); - if (gShowTestProgress) SkDebugf("%s tests=%d\n", __FUNCTION__, testsRun); + testRunner.render(); } #include "TestClassDef.h" |