You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
3.1 KiB
3.1 KiB
Writing Skia Tests
We assume you have already synced Skia's dependecies and set up Skia's build system.
python tools/git-sync-deps
bin/gn gen out/Debug
bin/gn gen out/Release --args='is_debug=false'
Writing a Unit Test
-
Add a file
tests/NewUnitTest.cpp
:/* * Copyright ........ * * Use of this source code is governed by a BSD-style license * that can be found in the LICENSE file. */ #include "Test.h" DEF_TEST(NewUnitTest, reporter) { if (1 + 1 != 2) { ERRORF(reporter, "%d + %d != %d", 1, 1, 2); } bool lifeIsGood = true; REPORTER_ASSERT(reporter, lifeIsGood); }
-
Add
NewUnitTest.cpp
togn/tests.gni
. -
Recompile and run test:
ninja -C out/Debug dm out/Debug/dm --match NewUnitTest
Writing a Rendering Test
-
Add a file
gm/newgmtest.cpp
:/* * Copyright ........ * * Use of this source code is governed by a BSD-style license * that can be found in the LICENSE file. */ #include "gm.h" DEF_SIMPLE_GM(newgmtest, canvas, 128, 128) { canvas->clear(SK_ColorWHITE); SkPaint p; p.setStrokeWidth(2); canvas->drawLine(16, 16, 112, 112, p); }
-
Add
newgmtest.cpp
togn/gm.gni
. -
Recompile and run test:
ninja -C out/Debug dm out/Debug/dm --match newgmtest
-
Run the GM inside Viewer:
ninja -C out/Debug viewer out/Debug/viewer --slide GM_newgmtest
Writing a Benchmark Test
-
Add a file
bench/FooBench.cpp
:/* * Copyright ........ * * Use of this source code is governed by a BSD-style license * that can be found in the LICENSE file. */ #include "Benchmark.h" #include "SkCanvas.h" namespace { class FooBench : public Benchmark { public: FooBench() {} virtual ~FooBench() {} protected: const char* onGetName() override { return "Foo"; } SkIPoint onGetSize() override { return SkIPoint{100, 100}; } void onDraw(int loops, SkCanvas* canvas) override { while (loops-- > 0) { canvas->drawLine(0.0f, 0.0f, 100.0f, 100.0f, SkPaint()); } } }; } // namespace DEF_BENCH(return new FooBench;)
-
Add
FooBench.cpp
togn/bench.gni
. -
Recompile and run nanobench:
ninja -C out/Release nanobench out/Release/nanobench --match Foo