#pragma once
#ifdef OS_AIX
#include "gtest/gtest.h"
#else
#include <gtest/gtest.h>
#endif
#ifdef GTEST_SKIP_
#define ROCKSDB_GTEST_SKIP(m) \
do { \
fputs("SKIPPED: " m "\n", stderr); \
GTEST_SKIP_(m); \
} while (false)
#else
#define ROCKSDB_GTEST_SKIP(m) \
do { \
fputs("SKIPPED: " m "\n", stderr); \
GTEST_SUCCESS_("SKIPPED: " m); \
} while (false)
#endif
#define ROCKSDB_GTEST_BYPASS(m) \
do { \
fputs("BYPASSED: " m "\n", stderr); \
GTEST_SUCCESS_("BYPASSED: " m); \
} while (false)
#define EXPECT_NEAR2(val1, val2, abs_error) \
EXPECT_NEAR(static_cast<double>(val1), static_cast<double>(val2), \
static_cast<double>(abs_error))
#include <string>
#include "port/stack_trace.h"
#include "rocksdb/env.h"
namespace ROCKSDB_NAMESPACE {
namespace test {
std::string TmpDir(Env* env = Env::Default());
std::string PerThreadDBPath(std::string name);
std::string PerThreadDBPath(Env* env, std::string name);
std::string PerThreadDBPath(std::string dir, std::string name);
int RandomSeed();
::testing::AssertionResult AssertStatus(const char* s_expr, const Status& s);
#define ASSERT_OK(s) \
ASSERT_PRED_FORMAT1(ROCKSDB_NAMESPACE::test::AssertStatus, s)
#define ASSERT_NOK(s) ASSERT_FALSE((s).ok())
#define EXPECT_OK(s) \
EXPECT_PRED_FORMAT1(ROCKSDB_NAMESPACE::test::AssertStatus, s)
#define EXPECT_NOK(s) EXPECT_FALSE((s).ok())
class TestRegex {
public:
TestRegex(const std::string& pattern);
TestRegex(const char* pattern);
bool Matches(const std::string& str) const;
const std::string& GetPattern() const;
private:
class Impl;
std::shared_ptr<Impl> impl_; std::string pattern_;
};
::testing::AssertionResult AssertMatchesRegex(const char* str_expr,
const char* pattern_expr,
const std::string& str,
const TestRegex& pattern);
#define ASSERT_MATCHES_REGEX(str, pattern) \
ASSERT_PRED_FORMAT2(ROCKSDB_NAMESPACE::test::AssertMatchesRegex, str, pattern)
#define EXPECT_MATCHES_REGEX(str, pattern) \
EXPECT_PRED_FORMAT2(ROCKSDB_NAMESPACE::test::AssertMatchesRegex, str, pattern)
}
using test::TestRegex;
}