git / moonbite-core / src/leveldb/util/testharness.cc · raw
// Copyright (c) 2011 The LevelDB Authors. All rights reserved.// Use of this source code is governed by a BSD-style license that can be// found in the LICENSE file. See the AUTHORS file for names of contributors.#include "util/testharness.h"#include <stdlib.h>#include <sys/stat.h>#include <sys/types.h>#include <string>#include <vector>#include "leveldb/env.h"namespace leveldb {namespace test {namespace {struct Test { const char* base; const char* name; void (*func)();};std::vector<Test>* tests;} // namespacebool RegisterTest(const char* base, const char* name, void (*func)()) { if (tests == nullptr) { tests = new std::vector<Test>; } Test t; t.base = base; t.name = name; t.func = func; tests->push_back(t); return true;}int RunAllTests() { const char* matcher = getenv("LEVELDB_TESTS"); int num = 0; if (tests != nullptr) { for (size_t i = 0; i < tests->size(); i++) { const Test& t = (*tests)[i]; if (matcher != nullptr) { std::string name = t.base; name.push_back('.'); name.append(t.name); if (strstr(name.c_str(), matcher) == nullptr) { continue; } } fprintf(stderr, "==== Test %s.%s\n", t.base, t.name); (*t.func)(); ++num; } } fprintf(stderr, "==== PASSED %d tests\n", num); return 0;}std::string TmpDir() { std::string dir; Status s = Env::Default()->GetTestDirectory(&dir); ASSERT_TRUE(s.ok()) << s.ToString(); return dir;}int RandomSeed() { const char* env = getenv("TEST_RANDOM_SEED"); int result = (env != nullptr ? atoi(env) : 301); if (result <= 0) { result = 301; } return result;}} // namespace test} // namespace leveldb