index: Clean up unit test
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
This commit is contained in:
parent
4b0c6121c3
commit
afd47ce667
|
@ -8,32 +8,10 @@
|
|||
|
||||
#include <sstream>
|
||||
|
||||
static IndexEntry *IDX_NULL = NULL;
|
||||
|
||||
/***
|
||||
*
|
||||
* Struct for passing around arguments to tests
|
||||
*
|
||||
*/
|
||||
static unsigned int N = 0;
|
||||
static Index *INDEX = NULL;
|
||||
|
||||
struct TestArgs {
|
||||
const unsigned int n;
|
||||
Index *index;
|
||||
|
||||
TestArgs(const unsigned int, Index *);
|
||||
};
|
||||
|
||||
TestArgs :: TestArgs(const unsigned int _n, Index *_index)
|
||||
: n(_n), index(_index)
|
||||
{}
|
||||
|
||||
|
||||
|
||||
/***
|
||||
*
|
||||
* Run tests with varying index sizes
|
||||
*
|
||||
*/
|
||||
|
||||
static void test_single_item()
|
||||
{
|
||||
|
@ -42,7 +20,7 @@ static void test_single_item()
|
|||
index.insert("a", 0);
|
||||
IndexEntry *it = index.find("a");
|
||||
|
||||
test_not_equal(it, IDX_NULL);
|
||||
test_not_equal(it, (IndexEntry *)NULL);
|
||||
test_equal(index.size(), (unsigned)1);
|
||||
test_equal(it->size(), (size_t)1);
|
||||
test_equal(*(it->begin()), (unsigned)0);
|
||||
|
@ -52,7 +30,7 @@ static void test_single_item()
|
|||
test_equal(it->size(), (size_t)0);
|
||||
}
|
||||
|
||||
static void test_insertion(struct TestArgs *args)
|
||||
static void test_insertion()
|
||||
{
|
||||
std::string key;
|
||||
IndexEntry *it;
|
||||
|
@ -61,32 +39,32 @@ static void test_insertion(struct TestArgs *args)
|
|||
for (char c = 'a'; c <= 'z'; c++) {
|
||||
key = c;
|
||||
|
||||
for (unsigned int i = 0; i < args->n; i++)
|
||||
args->index->insert(key, i);
|
||||
for (unsigned int i = 0; i < N; i++)
|
||||
INDEX->insert(key, i);
|
||||
}
|
||||
test :: success();
|
||||
|
||||
if (args->n == 0)
|
||||
test_equal(args->index->size(), (unsigned int)0);
|
||||
if (N == 0)
|
||||
test_equal(INDEX->size(), (unsigned int)0);
|
||||
else
|
||||
test_equal(args->index->size(), (unsigned int)26);
|
||||
test_equal(INDEX->size(), (unsigned int)26);
|
||||
|
||||
test :: begin();
|
||||
for (char c = 'a'; c <= 'z'; c++) {
|
||||
key = c;
|
||||
it = args->index->find(key);
|
||||
it = INDEX->find(key);
|
||||
|
||||
if (args->n == 0)
|
||||
check_equal(it, IDX_NULL);
|
||||
if (N == 0)
|
||||
check_equal(it, (IndexEntry *)NULL);
|
||||
else {
|
||||
check_not_equal(it, IDX_NULL);
|
||||
check_equal(it->size(), (size_t)args->n);
|
||||
check_not_equal(it, (IndexEntry *)NULL);
|
||||
check_equal(it->size(), (size_t)N);
|
||||
}
|
||||
}
|
||||
test :: success();
|
||||
}
|
||||
|
||||
static void test_removal(struct TestArgs *args)
|
||||
static void test_removal()
|
||||
{
|
||||
std::string key;
|
||||
IndexEntry *it;
|
||||
|
@ -95,20 +73,20 @@ static void test_removal(struct TestArgs *args)
|
|||
for (char c = 'a'; c <= 'z'; c++) {
|
||||
key = c;
|
||||
|
||||
for (unsigned int i = 0; i < args->n; i++)
|
||||
args->index->remove(key, i);
|
||||
it = args->index->find(key);
|
||||
if (args->n == 0)
|
||||
check_equal(it, IDX_NULL);
|
||||
for (unsigned int i = 0; i < N; i++)
|
||||
INDEX->remove(key, i);
|
||||
it = INDEX->find(key);
|
||||
if (N == 0)
|
||||
check_equal(it, (IndexEntry *)NULL);
|
||||
else {
|
||||
check_not_equal(it, IDX_NULL);
|
||||
check_not_equal(it, (IndexEntry *)NULL);
|
||||
check_equal(it->size(), (size_t)0);
|
||||
}
|
||||
}
|
||||
test :: success();
|
||||
}
|
||||
|
||||
static void test_saving(struct TestArgs *args)
|
||||
static void test_saving()
|
||||
{
|
||||
std::string key;
|
||||
IndexEntry *it1, *it2;
|
||||
|
@ -117,24 +95,24 @@ static void test_saving(struct TestArgs *args)
|
|||
idx2.load();
|
||||
test_equal(idx2.size(), (unsigned)0);
|
||||
|
||||
args->index->save();
|
||||
INDEX->save();
|
||||
idx2.load();
|
||||
|
||||
test_equal(idx2.size(), args->index->size());
|
||||
test_equal(idx2.actual_size(), args->index->actual_size());
|
||||
test_equal(idx2.size(), INDEX->size());
|
||||
test_equal(idx2.actual_size(), INDEX->actual_size());
|
||||
|
||||
test :: begin();
|
||||
for (char c = 'a'; c <= 'z'; c++) {
|
||||
key = c;
|
||||
it1 = args->index->find(key);
|
||||
it1 = INDEX->find(key);
|
||||
it2 = idx2.find(key);
|
||||
|
||||
if (args->n == 0) {
|
||||
check_equal(it1, IDX_NULL);
|
||||
check_equal(it2, IDX_NULL);
|
||||
if (N == 0) {
|
||||
check_equal(it1, (IndexEntry *)NULL);
|
||||
check_equal(it2, (IndexEntry *)NULL);
|
||||
} else {
|
||||
check_not_equal(it1, IDX_NULL);
|
||||
check_not_equal(it2, IDX_NULL);
|
||||
check_not_equal(it1, (IndexEntry *)NULL);
|
||||
check_not_equal(it2, (IndexEntry *)NULL);
|
||||
check_equal(it1->size(), it2->size());
|
||||
}
|
||||
}
|
||||
|
@ -150,13 +128,15 @@ static void index_test(unsigned int n)
|
|||
const std::string n_str = ss.str();
|
||||
|
||||
Index index("index.idx", false);
|
||||
struct TestArgs args(n, &index);
|
||||
|
||||
N = n;
|
||||
INDEX = &index;
|
||||
|
||||
if (n == 0)
|
||||
run_test("Index Single Item Test", test_single_item);
|
||||
run_test("Index Insertion Test" + n_str, test_insertion, &args);
|
||||
run_test("Index Removal Test" + n_str, test_removal, &args);
|
||||
run_test("Index Save and Load Test" + n_str, test_saving, &args);
|
||||
run_test("Index Insertion Test" + n_str, test_insertion);
|
||||
run_test("Index Removal Test" + n_str, test_removal);
|
||||
run_test("Index Save and Load Test" + n_str, test_saving);
|
||||
}
|
||||
|
||||
int main(int argc, char **argv)
|
||||
|
|
Loading…
Reference in New Issue