| OLD | NEW | 
|     1 /* |     1 /* | 
|     2  * Copyright 2013 Google Inc. |     2  * Copyright 2013 Google Inc. | 
|     3  * |     3  * | 
|     4  * Use of this source code is governed by a BSD-style license that can be |     4  * Use of this source code is governed by a BSD-style license that can be | 
|     5  * found in the LICENSE file. |     5  * found in the LICENSE file. | 
|     6  */ |     6  */ | 
|     7  |     7  | 
|     8 #include "CrashHandler.h" |     8 #include "CrashHandler.h" | 
|     9 // #include "OverwriteLine.h" |     9 // #include "OverwriteLine.h" | 
|    10 #include "Resources.h" |    10 #include "Resources.h" | 
| (...skipping 425 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|   436 static void writePict(const SkBitmap& bitmap, const char* outDir, const char* pn
      gName) { |   436 static void writePict(const SkBitmap& bitmap, const char* outDir, const char* pn
      gName) { | 
|   437     SkString outFile = get_sum_path(outDir); |   437     SkString outFile = get_sum_path(outDir); | 
|   438     outFile.appendf("%s%s", PATH_SLASH, pngName); |   438     outFile.appendf("%s%s", PATH_SLASH, pngName); | 
|   439     if (!SkImageEncoder::EncodeFile(outFile.c_str(), bitmap, SkImageEncoder::kPN
      G_Type, 100)) { |   439     if (!SkImageEncoder::EncodeFile(outFile.c_str(), bitmap, SkImageEncoder::kPN
      G_Type, 100)) { | 
|   440         SkDebugf("unable to encode gr %s (width=%d height=%d)\n", pngName, |   440         SkDebugf("unable to encode gr %s (width=%d height=%d)\n", pngName, | 
|   441                     bitmap.width(), bitmap.height()); |   441                     bitmap.width(), bitmap.height()); | 
|   442     } |   442     } | 
|   443 } |   443 } | 
|   444  |   444  | 
|   445 void TestResult::testOne() { |   445 void TestResult::testOne() { | 
|   446     SkPicture* pic = NULL; |   446     SkPicture* pic = nullptr; | 
|   447     { |   447     { | 
|   448     #if DEBUG_SHOW_TEST_NAME |   448     #if DEBUG_SHOW_TEST_NAME | 
|   449         if (fTestStep == kCompareBits) { |   449         if (fTestStep == kCompareBits) { | 
|   450             SkString testName(fFilename); |   450             SkString testName(fFilename); | 
|   451             const char http[] = "http"; |   451             const char http[] = "http"; | 
|   452             if (testName.startsWith(http)) { |   452             if (testName.startsWith(http)) { | 
|   453                 testName.remove(0, sizeof(http) - 1); |   453                 testName.remove(0, sizeof(http) - 1); | 
|   454             } |   454             } | 
|   455             while (testName.startsWith("_")) { |   455             while (testName.startsWith("_")) { | 
|   456                 testName.remove(0, 1); |   456                 testName.remove(0, 1); | 
| (...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|   526  |   526  | 
|   527 DEFINE_string2(match, m, "PathOpsSkpClipThreaded", |   527 DEFINE_string2(match, m, "PathOpsSkpClipThreaded", | 
|   528         "[~][^]substring[$] [...] of test name to run.\n" |   528         "[~][^]substring[$] [...] of test name to run.\n" | 
|   529         "Multiple matches may be separated by spaces.\n" |   529         "Multiple matches may be separated by spaces.\n" | 
|   530         "~ causes a matching test to always be skipped\n" |   530         "~ causes a matching test to always be skipped\n" | 
|   531         "^ requires the start of the test to match\n" |   531         "^ requires the start of the test to match\n" | 
|   532         "$ requires the end of the test to match\n" |   532         "$ requires the end of the test to match\n" | 
|   533         "^ and $ requires an exact match\n" |   533         "^ and $ requires an exact match\n" | 
|   534         "If a test does not match any list entry,\n" |   534         "If a test does not match any list entry,\n" | 
|   535         "it is skipped unless some list entry starts with ~"); |   535         "it is skipped unless some list entry starts with ~"); | 
|   536 DEFINE_string2(dir, d, NULL, "range of directories (e.g., 1-100)"); |   536 DEFINE_string2(dir, d, nullptr, "range of directories (e.g., 1-100)"); | 
|   537 DEFINE_string2(skp, s, NULL, "skp to test"); |   537 DEFINE_string2(skp, s, nullptr, "skp to test"); | 
|   538 DEFINE_bool2(single, z, false, "run tests on a single thread internally."); |   538 DEFINE_bool2(single, z, false, "run tests on a single thread internally."); | 
|   539 DEFINE_int32(testIndex, 0, "override local test index (PathOpsSkpClipOneOff only
      )."); |   539 DEFINE_int32(testIndex, 0, "override local test index (PathOpsSkpClipOneOff only
      )."); | 
|   540 DEFINE_bool2(verbose, v, false, "enable verbose output."); |   540 DEFINE_bool2(verbose, v, false, "enable verbose output."); | 
|   541  |   541  | 
|   542 static bool verbose() { |   542 static bool verbose() { | 
|   543     return FLAGS_verbose; |   543     return FLAGS_verbose; | 
|   544 } |   544 } | 
|   545  |   545  | 
|   546 class Dirs { |   546 class Dirs { | 
|   547 public: |   547 public: | 
| (...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|   607 class Filenames { |   607 class Filenames { | 
|   608 public: |   608 public: | 
|   609     Filenames() |   609     Filenames() | 
|   610         : fIndex(-1) { |   610         : fIndex(-1) { | 
|   611     } |   611     } | 
|   612  |   612  | 
|   613     const char* next() { |   613     const char* next() { | 
|   614         while (fNames && ++fIndex < fNames->count()) { |   614         while (fNames && ++fIndex < fNames->count()) { | 
|   615             return (*fNames)[fIndex]; |   615             return (*fNames)[fIndex]; | 
|   616         } |   616         } | 
|   617         return NULL; |   617         return nullptr; | 
|   618     } |   618     } | 
|   619  |   619  | 
|   620     void set(const SkCommandLineFlags::StringArray& names) { |   620     void set(const SkCommandLineFlags::StringArray& names) { | 
|   621         fNames = &names; |   621         fNames = &names; | 
|   622     } |   622     } | 
|   623  |   623  | 
|   624 private: |   624 private: | 
|   625     int fIndex; |   625     int fIndex; | 
|   626     const SkCommandLineFlags::StringArray* fNames; |   626     const SkCommandLineFlags::StringArray* fNames; | 
|   627 } gNames; |   627 } gNames; | 
| (...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|   698     } |   698     } | 
|   699 } |   699 } | 
|   700  |   700  | 
|   701 bool Less(const SortByName& a, const SortByName& b); |   701 bool Less(const SortByName& a, const SortByName& b); | 
|   702 bool Less(const SortByName& a, const SortByName& b) { |   702 bool Less(const SortByName& a, const SortByName& b) { | 
|   703     return a < b; |   703     return a < b; | 
|   704 } |   704 } | 
|   705  |   705  | 
|   706 static bool doOneDir(TestState* state, bool threaded) { |   706 static bool doOneDir(TestState* state, bool threaded) { | 
|   707     int dirNo = state->fResult.fDirNo; |   707     int dirNo = state->fResult.fDirNo; | 
|   708     SkString dirName = get_in_path(dirNo, NULL); |   708     SkString dirName = get_in_path(dirNo, nullptr); | 
|   709     if (!dirName.size()) { |   709     if (!dirName.size()) { | 
|   710         return false; |   710         return false; | 
|   711     } |   711     } | 
|   712     SkTDArray<TestResult> tests[1]; |   712     SkTDArray<TestResult> tests[1]; | 
|   713     SkTDArray<SortByName*> sorted[1]; |   713     SkTDArray<SortByName*> sorted[1]; | 
|   714     if (!buildTestDir(dirNo, dirNo, tests, sorted)) { |   714     if (!buildTestDir(dirNo, dirNo, tests, sorted)) { | 
|   715         return false; |   715         return false; | 
|   716     } |   716     } | 
|   717     SkOSFile::Iter iter(dirName.c_str(), "skp"); |   717     SkOSFile::Iter iter(dirName.c_str(), "skp"); | 
|   718     SkString filename; |   718     SkString filename; | 
| (...skipping 186 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|   905     int dirCount = lastDirNo - firstDirNo + 1; |   905     int dirCount = lastDirNo - firstDirNo + 1; | 
|   906     SkAutoTDeleteArray<SkTDArray<TestResult> > tests(new SkTDArray<TestResult>[d
      irCount]); |   906     SkAutoTDeleteArray<SkTDArray<TestResult> > tests(new SkTDArray<TestResult>[d
      irCount]); | 
|   907     SkAutoTDeleteArray<SkTDArray<SortByName*> > sorted(new SkTDArray<SortByName*
      >[dirCount]); |   907     SkAutoTDeleteArray<SkTDArray<SortByName*> > sorted(new SkTDArray<SortByName*
      >[dirCount]); | 
|   908     if (!buildTests(tests.get(), sorted.get())) { |   908     if (!buildTests(tests.get(), sorted.get())) { | 
|   909         return; |   909         return; | 
|   910     } |   910     } | 
|   911     TestRunner testRunner; |   911     TestRunner testRunner; | 
|   912     int dirNo; |   912     int dirNo; | 
|   913     gDirs.reset(); |   913     gDirs.reset(); | 
|   914     while ((dirNo = gDirs.next()) > 0) { |   914     while ((dirNo = gDirs.next()) > 0) { | 
|   915         SkString dirName = get_in_path(dirNo, NULL); |   915         SkString dirName = get_in_path(dirNo, nullptr); | 
|   916         if (!dirName.size()) { |   916         if (!dirName.size()) { | 
|   917             continue; |   917             continue; | 
|   918         } |   918         } | 
|   919         SkOSFile::Iter iter(dirName.c_str(), "skp"); |   919         SkOSFile::Iter iter(dirName.c_str(), "skp"); | 
|   920         SkString filename; |   920         SkString filename; | 
|   921         while (iter.next(&filename)) { |   921         while (iter.next(&filename)) { | 
|   922             for (size_t index = 0; index < skipOverCount; ++index) { |   922             for (size_t index = 0; index < skipOverCount; ++index) { | 
|   923                 if (skipOver[index].directory == dirNo |   923                 if (skipOver[index].directory == dirNo | 
|   924                         && strcmp(filename.c_str(), skipOver[index].filename) ==
       0) { |   924                         && strcmp(filename.c_str(), skipOver[index].filename) ==
       0) { | 
|   925                     goto checkEarlyExit; |   925                     goto checkEarlyExit; | 
| (...skipping 10 matching lines...) Expand all  Loading... | 
|   936                             &testSkpClip, dirNo, filename.c_str(), &testRunner); |   936                             &testSkpClip, dirNo, filename.c_str(), &testRunner); | 
|   937                 } |   937                 } | 
|   938             } |   938             } | 
|   939     checkEarlyExit: |   939     checkEarlyExit: | 
|   940             ; |   940             ; | 
|   941         } |   941         } | 
|   942  |   942  | 
|   943     } |   943     } | 
|   944     testRunner.render(); |   944     testRunner.render(); | 
|   945     SkAutoTDeleteArray<SkTDArray<TestResult> > results(new SkTDArray<TestResult>
      [dirCount]); |   945     SkAutoTDeleteArray<SkTDArray<TestResult> > results(new SkTDArray<TestResult>
      [dirCount]); | 
|   946     if (!buildTests(results.get(), NULL)) { |   946     if (!buildTests(results.get(), nullptr)) { | 
|   947         return; |   947         return; | 
|   948     } |   948     } | 
|   949     SkTDArray<TestResult> allResults; |   949     SkTDArray<TestResult> allResults; | 
|   950     for (int dirNo = firstDirNo; dirNo <= lastDirNo; ++dirNo) { |   950     for (int dirNo = firstDirNo; dirNo <= lastDirNo; ++dirNo) { | 
|   951         SkTDArray<TestResult>& array = results.get()[dirNo - firstDirNo]; |   951         SkTDArray<TestResult>& array = results.get()[dirNo - firstDirNo]; | 
|   952         allResults.append(array.count(), array.begin()); |   952         allResults.append(array.count(), array.begin()); | 
|   953     } |   953     } | 
|   954     int allCount = allResults.count(); |   954     int allCount = allResults.count(); | 
|   955     SkTDArray<SortByPixel*> pixels; |   955     SkTDArray<SortByPixel*> pixels; | 
|   956     SkTDArray<SortByTime*> times; |   956     SkTDArray<SortByTime*> times; | 
| (...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  1035  |  1035  | 
|  1036 class Iter { |  1036 class Iter { | 
|  1037 public: |  1037 public: | 
|  1038     Iter() { this->reset(); } |  1038     Iter() { this->reset(); } | 
|  1039     void reset() { fReg = TestRegistry::Head(); } |  1039     void reset() { fReg = TestRegistry::Head(); } | 
|  1040  |  1040  | 
|  1041     Test* next() { |  1041     Test* next() { | 
|  1042         if (fReg) { |  1042         if (fReg) { | 
|  1043             TestRegistry::Factory fact = fReg->factory(); |  1043             TestRegistry::Factory fact = fReg->factory(); | 
|  1044             fReg = fReg->next(); |  1044             fReg = fReg->next(); | 
|  1045             Test* test = fact(NULL); |  1045             Test* test = fact(nullptr); | 
|  1046             return test; |  1046             return test; | 
|  1047         } |  1047         } | 
|  1048         return NULL; |  1048         return nullptr; | 
|  1049     } |  1049     } | 
|  1050  |  1050  | 
|  1051 private: |  1051 private: | 
|  1052     const TestRegistry* fReg; |  1052     const TestRegistry* fReg; | 
|  1053 }; |  1053 }; | 
|  1054  |  1054  | 
|  1055 int tool_main(int argc, char** argv); |  1055 int tool_main(int argc, char** argv); | 
|  1056 int tool_main(int argc, char** argv) { |  1056 int tool_main(int argc, char** argv) { | 
|  1057     SetupCrashHandler(); |  1057     SetupCrashHandler(); | 
|  1058     SkCommandLineFlags::SetUsage(""); |  1058     SkCommandLineFlags::SetUsage(""); | 
| (...skipping 30 matching lines...) Expand all  Loading... | 
|  1089     header.append(" SK_DEBUG"); |  1089     header.append(" SK_DEBUG"); | 
|  1090 #else |  1090 #else | 
|  1091     header.append(" SK_RELEASE"); |  1091     header.append(" SK_RELEASE"); | 
|  1092 #endif |  1092 #endif | 
|  1093     if (FLAGS_verbose) { |  1093     if (FLAGS_verbose) { | 
|  1094         header.appendf("\n"); |  1094         header.appendf("\n"); | 
|  1095     } |  1095     } | 
|  1096     SkDebugf("%s", header.c_str()); |  1096     SkDebugf("%s", header.c_str()); | 
|  1097     Iter iter; |  1097     Iter iter; | 
|  1098     Test* test; |  1098     Test* test; | 
|  1099     while ((test = iter.next()) != NULL) { |  1099     while ((test = iter.next()) != nullptr) { | 
|  1100         SkAutoTDelete<Test> owned(test); |  1100         SkAutoTDelete<Test> owned(test); | 
|  1101         if (!SkCommandLineFlags::ShouldSkip(FLAGS_match, test->getName())) { |  1101         if (!SkCommandLineFlags::ShouldSkip(FLAGS_match, test->getName())) { | 
|  1102             test->run(); |  1102             test->run(); | 
|  1103         } |  1103         } | 
|  1104     } |  1104     } | 
|  1105     SkGraphics::Term(); |  1105     SkGraphics::Term(); | 
|  1106     return 0; |  1106     return 0; | 
|  1107 } |  1107 } | 
|  1108  |  1108  | 
|  1109 #if !defined(SK_BUILD_FOR_IOS) |  1109 #if !defined(SK_BUILD_FOR_IOS) | 
|  1110 int main(int argc, char * const argv[]) { |  1110 int main(int argc, char * const argv[]) { | 
|  1111     return tool_main(argc, (char**) argv); |  1111     return tool_main(argc, (char**) argv); | 
|  1112 } |  1112 } | 
|  1113 #endif |  1113 #endif | 
| OLD | NEW |