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