diff options
author | caryclark@google.com <caryclark@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81> | 2013-04-10 15:55:37 +0000 |
---|---|---|
committer | caryclark@google.com <caryclark@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81> | 2013-04-10 15:55:37 +0000 |
commit | 66089e4ec4f1702caf2154780471417872862148 (patch) | |
tree | e078d7a335a396cc325f2d2f55723315307eb07d /tests/PathOpsSimplifyTrianglesThreadedTest.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/PathOpsSimplifyTrianglesThreadedTest.cpp')
-rwxr-xr-x | tests/PathOpsSimplifyTrianglesThreadedTest.cpp | 122 |
1 files changed, 54 insertions, 68 deletions
diff --git a/tests/PathOpsSimplifyTrianglesThreadedTest.cpp b/tests/PathOpsSimplifyTrianglesThreadedTest.cpp index 567713ce6e..ae72a723e6 100755 --- a/tests/PathOpsSimplifyTrianglesThreadedTest.cpp +++ b/tests/PathOpsSimplifyTrianglesThreadedTest.cpp @@ -5,78 +5,66 @@ * found in the LICENSE file. */ #include "PathOpsExtendedTest.h" +#include "PathOpsThreadedCommon.h" -static THREAD_TYPE testSimplifyTrianglesMain(void* data) { +static void testSimplifyTrianglesMain(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 < 15; ++d) { - int dx = d & 0x03; - int dy = d >> 2; - for (int e = d + 1; e < 16; ++e) { - int ex = e & 0x03; - int ey = e >> 2; - for (int f = d + 1; f < 16; ++f) { - if (e == f) { - continue; - } - int fx = f & 0x03; - int fy = f >> 2; - if ((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 < 15; ++d) { + int dx = d & 0x03; + int dy = d >> 2; + for (int e = d + 1; e < 16; ++e) { + int ex = e & 0x03; + int ey = e >> 2; + for (int f = d + 1; f < 16; ++f) { + if (e == f) { + continue; + } + int fx = f & 0x03; + int fy = f >> 2; + if ((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 TestSimplifyTrianglesThreaded(skiatest::Reporter* reporter) { - int testsRun = 0; - if (gShowTestProgress) SkDebugf("%s\n", __FUNCTION__); -#ifdef SK_DEBUG - gDebugMaxWindSum = 2; - gDebugMaxWindValue = 2; -#endif - const char testStr[] = "testTriangles"; - initializeTests(reporter, testStr, sizeof(testStr)); + int threadCount = initializeTests("testTriangles"); + PathOpsThreadedTestRunner testRunner(reporter, threadCount); for (int a = 0; a < 15; ++a) { int ax = a & 0x03; int ay = a >> 2; @@ -92,16 +80,14 @@ static void TestSimplifyTrianglesThreaded(skiatest::Reporter* reporter) { if ((bx - ax) * (cy - ay) == (by - ay) * (cx - ax)) { continue; } - testsRun += dispatchTest4(testSimplifyTrianglesMain, a, b, c, 0); + *testRunner.fRunnables.append() = SkNEW_ARGS(PathOpsThreadedRunnable, + (&testSimplifyTrianglesMain, a, b, c, 0, &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" |