30a6b81f4b
* Don't rely on '#!', since it doesn't work for Windows cmd shell. * Consistantly use `tools/git-sync-deps` rather than `bin/sync`. * Always call `bin/gn` ranther than `gn` in case depot_tools is missing from the path. NOTRY=true Change-Id: I27909f2610d1bb3241874399d7d2f7286f99f43b Reviewed-on: https://skia-review.googlesource.com/9640 Reviewed-by: Mike Klein <mtklein@chromium.org> Commit-Queue: Mike Klein <mtklein@chromium.org>
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 SampleApp:
ninja -C out/Debug SampleApp out/Debug/SampleApp --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