1cb93a386Sopenharmony_ci--- 2cb93a386Sopenharmony_cititle: 'Writing Skia Tests' 3cb93a386Sopenharmony_cilinkTitle: 'Writing Skia Tests' 4cb93a386Sopenharmony_ci--- 5cb93a386Sopenharmony_ci 6cb93a386Sopenharmony_ciWe assume you have already synced Skia's dependencies and set up Skia's build 7cb93a386Sopenharmony_cisystem. 8cb93a386Sopenharmony_ci 9cb93a386Sopenharmony_ci<!--?prettify lang=sh?--> 10cb93a386Sopenharmony_ci 11cb93a386Sopenharmony_ci python2 tools/git-sync-deps 12cb93a386Sopenharmony_ci bin/gn gen out/Debug 13cb93a386Sopenharmony_ci bin/gn gen out/Release --args='is_debug=false' 14cb93a386Sopenharmony_ci 15cb93a386Sopenharmony_ci## Writing a Unit Test 16cb93a386Sopenharmony_ci 17cb93a386Sopenharmony_ci1. Add a file `tests/NewUnitTest.cpp`: 18cb93a386Sopenharmony_ci 19cb93a386Sopenharmony_ci <!--?prettify lang=cc?--> 20cb93a386Sopenharmony_ci 21cb93a386Sopenharmony_ci /* 22cb93a386Sopenharmony_ci * Copyright ........ 23cb93a386Sopenharmony_ci * 24cb93a386Sopenharmony_ci * Use of this source code is governed by a BSD-style license 25cb93a386Sopenharmony_ci * that can be found in the LICENSE file. 26cb93a386Sopenharmony_ci */ 27cb93a386Sopenharmony_ci #include "Test.h" 28cb93a386Sopenharmony_ci DEF_TEST(NewUnitTest, reporter) { 29cb93a386Sopenharmony_ci if (1 + 1 != 2) { 30cb93a386Sopenharmony_ci ERRORF(reporter, "%d + %d != %d", 1, 1, 2); 31cb93a386Sopenharmony_ci } 32cb93a386Sopenharmony_ci bool lifeIsGood = true; 33cb93a386Sopenharmony_ci REPORTER_ASSERT(reporter, lifeIsGood); 34cb93a386Sopenharmony_ci } 35cb93a386Sopenharmony_ci 36cb93a386Sopenharmony_ci2. Add `NewUnitTest.cpp` to `gn/tests.gni`. 37cb93a386Sopenharmony_ci 38cb93a386Sopenharmony_ci3. Recompile and run test: 39cb93a386Sopenharmony_ci 40cb93a386Sopenharmony_ci <!--?prettify lang=sh?--> 41cb93a386Sopenharmony_ci 42cb93a386Sopenharmony_ci ninja -C out/Debug dm 43cb93a386Sopenharmony_ci out/Debug/dm --match NewUnitTest 44cb93a386Sopenharmony_ci 45cb93a386Sopenharmony_ci## Writing a Rendering Test 46cb93a386Sopenharmony_ci 47cb93a386Sopenharmony_ci1. Add a file `gm/newgmtest.cpp`: 48cb93a386Sopenharmony_ci 49cb93a386Sopenharmony_ci <!--?prettify lang=cc?--> 50cb93a386Sopenharmony_ci 51cb93a386Sopenharmony_ci /* 52cb93a386Sopenharmony_ci * Copyright ........ 53cb93a386Sopenharmony_ci * 54cb93a386Sopenharmony_ci * Use of this source code is governed by a BSD-style license 55cb93a386Sopenharmony_ci * that can be found in the LICENSE file. 56cb93a386Sopenharmony_ci */ 57cb93a386Sopenharmony_ci #include "gm.h" 58cb93a386Sopenharmony_ci DEF_SIMPLE_GM(newgmtest, canvas, 128, 128) { 59cb93a386Sopenharmony_ci canvas->clear(SK_ColorWHITE); 60cb93a386Sopenharmony_ci SkPaint p; 61cb93a386Sopenharmony_ci p.setStrokeWidth(2); 62cb93a386Sopenharmony_ci canvas->drawLine(16, 16, 112, 112, p); 63cb93a386Sopenharmony_ci } 64cb93a386Sopenharmony_ci 65cb93a386Sopenharmony_ci2. Add `newgmtest.cpp` to `gn/gm.gni`. 66cb93a386Sopenharmony_ci 67cb93a386Sopenharmony_ci3. Recompile and run test: 68cb93a386Sopenharmony_ci 69cb93a386Sopenharmony_ci <!--?prettify lang=sh?--> 70cb93a386Sopenharmony_ci 71cb93a386Sopenharmony_ci ninja -C out/Debug dm 72cb93a386Sopenharmony_ci out/Debug/dm --match newgmtest 73cb93a386Sopenharmony_ci 74cb93a386Sopenharmony_ci4. Run the GM inside Viewer: 75cb93a386Sopenharmony_ci 76cb93a386Sopenharmony_ci <!--?prettify lang=sh?--> 77cb93a386Sopenharmony_ci 78cb93a386Sopenharmony_ci ninja -C out/Debug viewer 79cb93a386Sopenharmony_ci out/Debug/viewer --slide GM_newgmtest 80cb93a386Sopenharmony_ci 81cb93a386Sopenharmony_ci## Writing a Benchmark Test 82cb93a386Sopenharmony_ci 83cb93a386Sopenharmony_ci1. Add a file `bench/FooBench.cpp`: 84cb93a386Sopenharmony_ci 85cb93a386Sopenharmony_ci <!--?prettify lang=cc?--> 86cb93a386Sopenharmony_ci 87cb93a386Sopenharmony_ci /* 88cb93a386Sopenharmony_ci * Copyright ........ 89cb93a386Sopenharmony_ci * 90cb93a386Sopenharmony_ci * Use of this source code is governed by a BSD-style license 91cb93a386Sopenharmony_ci * that can be found in the LICENSE file. 92cb93a386Sopenharmony_ci */ 93cb93a386Sopenharmony_ci #include "Benchmark.h" 94cb93a386Sopenharmony_ci #include "SkCanvas.h" 95cb93a386Sopenharmony_ci namespace { 96cb93a386Sopenharmony_ci class FooBench : public Benchmark { 97cb93a386Sopenharmony_ci public: 98cb93a386Sopenharmony_ci FooBench() {} 99cb93a386Sopenharmony_ci virtual ~FooBench() {} 100cb93a386Sopenharmony_ci protected: 101cb93a386Sopenharmony_ci const char* onGetName() override { return "Foo"; } 102cb93a386Sopenharmony_ci SkIPoint onGetSize() override { return SkIPoint{100, 100}; } 103cb93a386Sopenharmony_ci void onDraw(int loops, SkCanvas* canvas) override { 104cb93a386Sopenharmony_ci while (loops-- > 0) { 105cb93a386Sopenharmony_ci canvas->drawLine(0.0f, 0.0f, 100.0f, 100.0f, SkPaint()); 106cb93a386Sopenharmony_ci } 107cb93a386Sopenharmony_ci } 108cb93a386Sopenharmony_ci }; 109cb93a386Sopenharmony_ci } // namespace 110cb93a386Sopenharmony_ci DEF_BENCH(return new FooBench;) 111cb93a386Sopenharmony_ci 112cb93a386Sopenharmony_ci2. Add `FooBench.cpp` to `gn/bench.gni`. 113cb93a386Sopenharmony_ci 114cb93a386Sopenharmony_ci3. Recompile and run nanobench: 115cb93a386Sopenharmony_ci 116cb93a386Sopenharmony_ci <!--?prettify lang=sh?--> 117cb93a386Sopenharmony_ci 118cb93a386Sopenharmony_ci ninja -C out/Release nanobench 119cb93a386Sopenharmony_ci out/Release/nanobench --match Foo 120