Add Google's LevelDB support
[novacoin.git] / src / leveldb / util / testharness.cc
1 // Copyright (c) 2011 The LevelDB Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. See the AUTHORS file for names of contributors.
4
5 #include "util/testharness.h"
6
7 #include <string>
8 #include <stdlib.h>
9 #include <sys/stat.h>
10 #include <sys/types.h>
11
12 namespace leveldb {
13 namespace test {
14
15 namespace {
16 struct Test {
17   const char* base;
18   const char* name;
19   void (*func)();
20 };
21 std::vector<Test>* tests;
22 }
23
24 bool RegisterTest(const char* base, const char* name, void (*func)()) {
25   if (tests == NULL) {
26     tests = new std::vector<Test>;
27   }
28   Test t;
29   t.base = base;
30   t.name = name;
31   t.func = func;
32   tests->push_back(t);
33   return true;
34 }
35
36 int RunAllTests() {
37   const char* matcher = getenv("LEVELDB_TESTS");
38
39   int num = 0;
40   if (tests != NULL) {
41     for (int i = 0; i < tests->size(); i++) {
42       const Test& t = (*tests)[i];
43       if (matcher != NULL) {
44         std::string name = t.base;
45         name.push_back('.');
46         name.append(t.name);
47         if (strstr(name.c_str(), matcher) == NULL) {
48           continue;
49         }
50       }
51       fprintf(stderr, "==== Test %s.%s\n", t.base, t.name);
52       (*t.func)();
53       ++num;
54     }
55   }
56   fprintf(stderr, "==== PASSED %d tests\n", num);
57   return 0;
58 }
59
60 std::string TmpDir() {
61   std::string dir;
62   Status s = Env::Default()->GetTestDirectory(&dir);
63   ASSERT_TRUE(s.ok()) << s.ToString();
64   return dir;
65 }
66
67 int RandomSeed() {
68   const char* env = getenv("TEST_RANDOM_SEED");
69   int result = (env != NULL ? atoi(env) : 301);
70   if (result <= 0) {
71     result = 301;
72   }
73   return result;
74 }
75
76 }  // namespace test
77 }  // namespace leveldb