xref: /aosp_15_r20/external/skia/tools/testrunners/common/TestRunner.h (revision c8dee2aa9b3f27cf6c858bd81872bdeb2c07ed17)
1*c8dee2aaSAndroid Build Coastguard Worker /*
2*c8dee2aaSAndroid Build Coastguard Worker  * Copyright 2024 Google LLC
3*c8dee2aaSAndroid Build Coastguard Worker  *
4*c8dee2aaSAndroid Build Coastguard Worker  * Use of this source code is governed by a BSD-style license that can be
5*c8dee2aaSAndroid Build Coastguard Worker  * found in the LICENSE file.
6*c8dee2aaSAndroid Build Coastguard Worker  */
7*c8dee2aaSAndroid Build Coastguard Worker 
8*c8dee2aaSAndroid Build Coastguard Worker #ifndef TestRunner_DEFINED
9*c8dee2aaSAndroid Build Coastguard Worker #define TestRunner_DEFINED
10*c8dee2aaSAndroid Build Coastguard Worker 
11*c8dee2aaSAndroid Build Coastguard Worker #include "tools/flags/CommandLineFlags.h"
12*c8dee2aaSAndroid Build Coastguard Worker 
13*c8dee2aaSAndroid Build Coastguard Worker #include <map>
14*c8dee2aaSAndroid Build Coastguard Worker 
15*c8dee2aaSAndroid Build Coastguard Worker namespace TestRunner {
16*c8dee2aaSAndroid Build Coastguard Worker namespace FlagValidators {
17*c8dee2aaSAndroid Build Coastguard Worker 
18*c8dee2aaSAndroid Build Coastguard Worker void StringNonEmpty(std::string name, CommandLineFlags::StringArray flag);
19*c8dee2aaSAndroid Build Coastguard Worker 
20*c8dee2aaSAndroid Build Coastguard Worker void StringAtMostOne(std::string name, CommandLineFlags::StringArray flag);
21*c8dee2aaSAndroid Build Coastguard Worker 
22*c8dee2aaSAndroid Build Coastguard Worker void StringEven(std::string name, CommandLineFlags::StringArray flag);
23*c8dee2aaSAndroid Build Coastguard Worker 
24*c8dee2aaSAndroid Build Coastguard Worker void IntGreaterOrEqual(std::string name, int flag, int min);
25*c8dee2aaSAndroid Build Coastguard Worker 
26*c8dee2aaSAndroid Build Coastguard Worker void AllOrNone(std::map<std::string, bool> flags);
27*c8dee2aaSAndroid Build Coastguard Worker 
28*c8dee2aaSAndroid Build Coastguard Worker void ExactlyOne(std::map<std::string, bool> flags);
29*c8dee2aaSAndroid Build Coastguard Worker 
30*c8dee2aaSAndroid Build Coastguard Worker }  // namespace FlagValidators
31*c8dee2aaSAndroid Build Coastguard Worker 
32*c8dee2aaSAndroid Build Coastguard Worker // Performs some common initialization steps, and logs all command-line arguments.
33*c8dee2aaSAndroid Build Coastguard Worker //
34*c8dee2aaSAndroid Build Coastguard Worker // It should be called by all test runners at the beginning of their main() function.
35*c8dee2aaSAndroid Build Coastguard Worker void InitAndLogCmdlineArgs(int argc, char** argv);
36*c8dee2aaSAndroid Build Coastguard Worker 
37*c8dee2aaSAndroid Build Coastguard Worker // Determines whether a test case should be run based on the --match and --skip command-line flags.
38*c8dee2aaSAndroid Build Coastguard Worker bool ShouldRunTestCase(const char* name,
39*c8dee2aaSAndroid Build Coastguard Worker                        CommandLineFlags::StringArray& matchFlag,
40*c8dee2aaSAndroid Build Coastguard Worker                        CommandLineFlags::StringArray& skipFlag);
41*c8dee2aaSAndroid Build Coastguard Worker 
42*c8dee2aaSAndroid Build Coastguard Worker // Logs a message to stdout.
43*c8dee2aaSAndroid Build Coastguard Worker //
44*c8dee2aaSAndroid Build Coastguard Worker // It prefixes the message with a timestamp, and suffixes it with a line break ("\n").
45*c8dee2aaSAndroid Build Coastguard Worker void Log(const char* format, ...) SK_PRINTF_LIKE(1, 2);
46*c8dee2aaSAndroid Build Coastguard Worker 
47*c8dee2aaSAndroid Build Coastguard Worker }  // namespace TestRunner
48*c8dee2aaSAndroid Build Coastguard Worker 
49*c8dee2aaSAndroid Build Coastguard Worker #endif  // TestRunner_DEFINED
50