|
|
|
#include "../src/common.h"
|
|
|
|
#include "../src/database.h"
|
|
|
|
|
|
|
|
int main()
|
|
|
|
{
|
|
|
|
imdb_db_t *db;
|
|
|
|
imdb_rec_t rec[2];
|
|
|
|
imdb_block_t blk;
|
|
|
|
char *path = "test.db";
|
|
|
|
int mode = 0, err = 0, num;
|
|
|
|
bool ret;
|
|
|
|
|
|
|
|
unlink(path);
|
|
|
|
|
|
|
|
db = imdb_open(path, mode, &err);
|
|
|
|
assert(db == NULL);
|
|
|
|
assert(err == -1); /* no such file */
|
|
|
|
|
|
|
|
ret = imdb_create(path);
|
|
|
|
assert(ret == true);
|
|
|
|
|
|
|
|
db = imdb_open(path, mode, &err);
|
|
|
|
assert(db != NULL);
|
|
|
|
|
|
|
|
rec[0].num = 1;
|
|
|
|
err = imdb_read_rec(db, rec);
|
|
|
|
assert(err < 0); /* no such record */
|
|
|
|
|
|
|
|
memset(rec[0].data, 0xAA, IMDB_REC_LEN);
|
|
|
|
memset(rec[0].data, 0xFF, 1); /* record is used */
|
|
|
|
|
|
|
|
num = imdb_write_rec(db, rec);
|
|
|
|
assert(num != 1); /* database open in read-only mode */
|
|
|
|
|
|
|
|
imdb_close(db);
|
|
|
|
|
|
|
|
mode |= IMDB_FLAG_WRITE;
|
|
|
|
db = imdb_open(path, mode, &err);
|
|
|
|
assert(db != NULL);
|
|
|
|
|
|
|
|
num = imdb_write_rec(db, rec);
|
|
|
|
assert(num == 1); /* success */
|
|
|
|
|
|
|
|
num = imdb_read_rec(db, rec);
|
|
|
|
assert(num == 1);
|
|
|
|
|
|
|
|
blk.start = 1;
|
|
|
|
blk.records = 2;
|
|
|
|
blk.data = NULL;
|
|
|
|
num = imdb_read_blk(db, &blk);
|
|
|
|
assert(num == 1);
|
|
|
|
assert(blk.records == 1);
|
|
|
|
assert(blk.data != NULL);
|
|
|
|
|
|
|
|
rec[0].num = 1;
|
|
|
|
rec[1].num = 3;
|
|
|
|
|
|
|
|
imdb_close(db);
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
}
|