blob: 2233171c60fda43bfd83ee8f89731c930bb5de01 [file] [log] [blame]
Artem Titov40a7a352018-10-15 15:25:34 +02001/*
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 13:44:12 +020014#include <string>
Artem Titov40a7a352018-10-15 15:25:34 +020015
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 12:19:18 +020028 virtual int Init() = 0;
29 // Temporary for backward compatibility
Artem Titovb5541a02018-10-17 17:37:47 +020030 virtual int Init(int* argc, char* argv[]) = 0;
Artem Titov40a7a352018-10-15 15:25:34 +020031
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 13:44:12 +020037
38 std::string field_trials_;
Artem Titov40a7a352018-10-15 15:25:34 +020039};
40
41} // namespace webrtc
42
43#endif // TEST_TEST_MAIN_LIB_H_