summaryrefslogtreecommitdiff
path: root/Source/ThirdParty/ANGLE/src/tests/test_utils/angle_test_instantiate.h
diff options
context:
space:
mode:
Diffstat (limited to 'Source/ThirdParty/ANGLE/src/tests/test_utils/angle_test_instantiate.h')
-rw-r--r--Source/ThirdParty/ANGLE/src/tests/test_utils/angle_test_instantiate.h52
1 files changed, 52 insertions, 0 deletions
diff --git a/Source/ThirdParty/ANGLE/src/tests/test_utils/angle_test_instantiate.h b/Source/ThirdParty/ANGLE/src/tests/test_utils/angle_test_instantiate.h
new file mode 100644
index 000000000..a7b6a81aa
--- /dev/null
+++ b/Source/ThirdParty/ANGLE/src/tests/test_utils/angle_test_instantiate.h
@@ -0,0 +1,52 @@
+//
+// Copyright (c) 2014 The ANGLE Project Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+//
+
+// angle_test_instantiate.h: Adds support for filtering parameterized
+// tests by platform, so we skip unsupported configs.
+
+#ifndef ANGLE_TEST_INSTANTIATE_H_
+#define ANGLE_TEST_INSTANTIATE_H_
+
+#include <gtest/gtest.h>
+
+#include "common/debug.h"
+
+namespace angle
+{
+
+struct PlatformParameters;
+
+bool IsPlatformAvailable(const PlatformParameters &param);
+
+// This functions is used to filter which tests should be registered,
+// T must be or inherit from angle::PlatformParameters.
+template <typename T>
+std::vector<T> FilterTestParams(const T *params, size_t numParams)
+{
+ std::vector<T> filtered;
+
+ for (size_t i = 0; i < numParams; i++)
+ {
+ if (IsPlatformAvailable(params[i]))
+ {
+ filtered.push_back(params[i]);
+ }
+ }
+
+ return filtered;
+}
+
+// Instantiate the test once for each extra argument. The types of all the
+// arguments must match, and getRenderer must be implemented for that type.
+#define ANGLE_INSTANTIATE_TEST(testName, firstParam, ...) \
+ const decltype(firstParam) testName##params[] = { firstParam, ##__VA_ARGS__ }; \
+ INSTANTIATE_TEST_CASE_P(, testName, \
+ testing::ValuesIn(::angle::FilterTestParams(testName##params, ArraySize(testName##params))), \
+ testing::PrintToStringParamName());
+
+} // namespace angle
+
+#endif // ANGLE_TEST_INSTANTIATE_H_