Add some initial test for RdbIndex

This commit is contained in:
Ai Lin Chia
2016-09-23 14:25:29 +02:00
parent 1ba1dc4588
commit df6ab36204
2 changed files with 73 additions and 1 deletions

@ -10,7 +10,7 @@ OBJECTS = GigablastTest.o \
FctypesTest.o \
JsonTest.o \
PosTest.o PosdbTest.o ProcessTest.o \
RdbBucketsTest.o RdbListTest.o RobotRuleTest.o RobotsTest.o \
RdbBucketsTest.o RdbIndexTest.o RdbListTest.o RobotRuleTest.o RobotsTest.o \
ScalingFunctionsTest.o SummaryTest.o \
UnicodeTest.o UrlComponentTest.o UrlParserTest.o UrlTest.o \
WordsTest.o \

@ -0,0 +1,72 @@
#include <gtest/gtest.h>
#include "RdbIndex.h"
#include "RdbBuckets.h"
#include "Posdb.h"
static bool addPosdbKey(RdbBuckets *buckets, int64_t termId, int64_t docId, int32_t wordPos, bool delKey = false) {
char key[MAX_KEY_BYTES];
Posdb::makeKey(&key, termId, docId, wordPos, 0, 0, 0, 0, 0, 0, 0, false, delKey, false);
buckets->addNode(0, key, NULL, 0);
}
TEST(RdbIndexTest, GenerateFromBucketMultipleTermIdSingleDocId) {
RdbBuckets buckets;
buckets.set(Posdb::getFixedDataSize(), 1024 * 1024, "test-posdb", RDB_POSDB, "posdb", Posdb::getKeySize());
static const int total_records = 10;
static const int64_t docId = 1;
for (int i = 0; i < total_records; i++) {
addPosdbKey(&buckets, i, docId, i);
}
RdbIndex index;
index.set("./", "test-posdbidx", Posdb::getFixedDataSize(), Posdb::getUseHalfKeys(), Posdb::getKeySize(), RDB_POSDB);
index.generateIndex(&buckets, 0);
auto docIds = index.getDocIds();
EXPECT_EQ(1, docIds->size());
EXPECT_EQ(docId, (*docIds.get())[0]);
}
TEST(RdbIndexTest, GenerateFromBucketSingleTermIdMultipleDocId) {
RdbBuckets buckets;
buckets.set(Posdb::getFixedDataSize(), 1024 * 1024, "test-posdb", RDB_POSDB, "posdb", Posdb::getKeySize());
static const int total_records = 10;
for (int i = 0; i < total_records; ++i) {
addPosdbKey(&buckets, 1, i, i);
}
RdbIndex index;
index.set("./", "test-posdbidx", Posdb::getFixedDataSize(), Posdb::getUseHalfKeys(), Posdb::getKeySize(), RDB_POSDB);
index.generateIndex(&buckets, 0);
auto docIds = index.getDocIds();
EXPECT_EQ(total_records, docIds->size());
for (int i = 0; i < total_records; ++i) {
EXPECT_EQ(i, (*docIds.get())[i]);
}
}
TEST(RdbIndexTest, GenerateFromBucketMultipleTermIdMultipleDocId) {
RdbBuckets buckets;
buckets.set(Posdb::getFixedDataSize(), 1024 * 1024, "test-posdb", RDB_POSDB, "posdb", Posdb::getKeySize());
static const int total_records = 10;
for (int i = 0; i < total_records; ++i) {
addPosdbKey(&buckets, i, i, i);
}
RdbIndex index;
index.set("./", "test-posdbidx", Posdb::getFixedDataSize(), Posdb::getUseHalfKeys(), Posdb::getKeySize(), RDB_POSDB);
index.generateIndex(&buckets, 0);
auto docIds = index.getDocIds();
EXPECT_EQ(total_records, docIds->size());
for (int i = 0; i < total_records; ++i) {
EXPECT_EQ(i, (*docIds.get())[i]);
}
}