blob: 2233171c60fda43bfd83ee8f89731c930bb5de01 [file] [log] [blame]
Artem Titov40a7a352018-10-15 13:25:341/*
2 * Copyright (c) 2018 The WebRTC project authors. All Rights Reserved.
3 *
4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree.
9 */
10#ifndef TEST_TEST_MAIN_LIB_H_
11#define TEST_TEST_MAIN_LIB_H_
12
13#include <memory>
Mirko Bonadei2ab97f62019-07-18 11:44:1214#include <string>
Artem Titov40a7a352018-10-15 13:25:3415
16namespace webrtc {
17
18// Class to initialize test environment and run tests.
19class TestMain {
20 public:
21 virtual ~TestMain() {}
22
23 static std::unique_ptr<TestMain> Create();
24
25 // Initializes test environment. Clients can add their own initialization
26 // steps after call to this method and before running tests.
27 // Returns 0 if initialization was successful and non 0 otherwise.
Artem Titovbcb42f12020-08-11 10:19:1828 virtual int Init() = 0;
29 // Temporary for backward compatibility
Artem Titovb5541a02018-10-17 15:37:4730 virtual int Init(int* argc, char* argv[]) = 0;
Artem Titov40a7a352018-10-15 13:25:3431
32 // Runs test end return result error code. 0 - no errors.
33 virtual int Run(int argc, char* argv[]) = 0;
34
35 protected:
36 TestMain() = default;
Mirko Bonadei2ab97f62019-07-18 11:44:1237
38 std::string field_trials_;
Artem Titov40a7a352018-10-15 13:25:3439};
40
41} // namespace webrtc
42
43#endif // TEST_TEST_MAIN_LIB_H_