#ifndef CHROME_BROWSER_VR_TEST_CONDITIONAL_SKIPPING_H_
#define CHROME_BROWSER_VR_TEST_CONDITIONAL_SKIPPING_H_
#include <string>
#include <unordered_set>
#include <vector>
#include "base/logging.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace vr {
enum class XrTestRequirement {
DIRECTX_11_1,
};
std::string CheckXrRequirements(
const std::vector<XrTestRequirement>& requirements_vector,
const std::unordered_set<std::string>& ignored_set);
std::string XrTestRequirementToString(XrTestRequirement requirement);
inline bool CheckXrRequirementsHelper(
const std::vector<XrTestRequirement>& requirements_vector,
const std::unordered_set<std::string>& ignored_set,
bool* setup_skipped) {
auto failure_message = CheckXrRequirements(requirements_vector, ignored_set);
if (failure_message != "") {
LOG(WARNING) << "\n\nSkipping test due to reason: " << failure_message
<< "\n";
if (setup_skipped) {
*setup_skipped = true;
}
return true;
}
return false;
}
}
#define XR_CONDITIONAL_SKIP(requirements_vector, ignored_set) \
XR_CONDITIONAL_SKIP_INTERNAL_(requirements_vector, ignored_set, nullptr)
#define XR_CONDITIONAL_SKIP_PRETEST(requirements_vector, ignored_set, \
setup_skipped) \
XR_CONDITIONAL_SKIP_INTERNAL_(requirements_vector, ignored_set, setup_skipped)
#define XR_CONDITIONAL_SKIP_INTERNAL_(requirements_vector, ignored_set, \
setup_skipped) \
if (CheckXrRequirementsHelper(requirements_vector, ignored_set, \
setup_skipped)) { \
GTEST_SKIP(); \
}
#endif