blob: bdb0afb6eb907379c3dcdca2820fa0584a4cb27b [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 Titovb5541a02018-10-17 17:37:47 +020028 virtual int Init(int* argc, char* argv[]) = 0;
Artem Titov40a7a352018-10-15 15:25:34 +020029
30 // Runs test end return result error code. 0 - no errors.
31 virtual int Run(int argc, char* argv[]) = 0;
32
33 protected:
34 TestMain() = default;
Mirko Bonadei2ab97f62019-07-18 13:44:12 +020035
36 std::string field_trials_;
Artem Titov40a7a352018-10-15 15:25:34 +020037};
38
39} // namespace webrtc
40
41#endif // TEST_TEST_MAIN_LIB_H_