forked from google-deepmind/lab2d
-
Notifications
You must be signed in to change notification settings - Fork 0
/
env_c_api_test_suite.h
72 lines (63 loc) · 2.08 KB
/
env_c_api_test_suite.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
// Copyright 2019 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
////////////////////////////////////////////////////////////////////////////////
//
// A conformance test library for EnvCApi.
//
// This library exposes a test suite for implementations of EnvCApi. The test
// suite is parameterized on an EvCApiTestParam (see below), which contains a
// function to instantiate the environment and a list of settings to be passed
// to it.
//
// Usage example:
//
// my_env_test.cc:
//
// #include "my/project/my_env.h"
// #include "third_party/rl_api/env_c_api.h"
// #include "third_party/rl_api/env_c_api_test_suite.h"
//
// namespace myproject {
// namespace {
//
// using ::rl_api::EnvCApiConformanceTestSuite;
//
// int test_connect(EnvCApi* api, void** context) { /* ... */ }
//
// INSTANTIATE_TEST_SUITE_P(
// MyEnvConformanceTest, EnvCApiConformanceTestSuite,
// testing::Values(EnvCApiTestParam{
// test_connect, {{"key1", "value1"}, {"key2", "value2"}}}));
//
// } // namespace
// } // namespace myproject
#ifndef DEEPMIND_ENV_C_API_TEST_SUITE_H_
#define DEEPMIND_ENV_C_API_TEST_SUITE_H_
#include <functional>
#include <string>
#include <vector>
#include "gtest/gtest.h"
#include "third_party/rl_api/env_c_api.h"
namespace rl_api {
struct EnvCApiTestParam {
struct Setting {
std::string key, value;
};
std::function<int(EnvCApi*, void**)> connect_fn;
std::vector<Setting> settings;
};
using EnvCApiConformanceTestSuite = ::testing::TestWithParam<EnvCApiTestParam>;
} // namespace rl_api
#endif // DEEPMIND_ENV_C_API_TEST_SUITE_H_