You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

89 lines
1.9 KiB

#include "../src/common.h"
#include "../src/record.h"
#include "../src/io.h"
#include "../src/simdb.h"
int main() {
simdb_t *db;
simdb_urec_t *data;
simdb_urec_t rec[2];
char *path = "test.db";
int mode = 0, ret = 0;
unlink(path);
db = simdb_open(path, mode, &ret);
assert(db == NULL);
assert(ret == -1); /* no such file */
ret = simdb_create(path);
assert(ret == true);
db = simdb_open(path, mode, &ret);
assert(db != NULL);
ret = simdb_read(db, 1, 1, &data);
assert(ret == 0);
memset(&rec[0], 0xAA, SIMDB_REC_LEN);
memset(&rec[1], 0xAA, SIMDB_REC_LEN);
rec[0].used = 1;
rec[1].used = 1;
ret = simdb_write(db, 1, 2, rec);
assert(ret == SIMDB_ERR_READONLY); /* database open in read-only mode */
simdb_close(db);
mode = SIMDB_FLAG_WRITE | SIMDB_FLAG_LOCKNB;
db = simdb_open(path, mode, &ret);
assert(db != NULL);
ret = simdb_records_count(db);
assert(ret == 0);
ret = simdb_write(db, 1, 2, rec);
assert(ret == 2); /* success */
assert(simdb_record_used(db, 0) == false);
assert(simdb_record_used(db, 1) == true);
assert(simdb_record_used(db, 2) == true);
assert(simdb_record_used(db, 3) == false);
ret = simdb_records_count(db);
assert(ret == 2);
ret = simdb_read(db, 1, 0, &data);
assert(ret == SIMDB_ERR_USAGE);
ret = simdb_read(db, 0, 0, &data);
assert(ret == SIMDB_ERR_USAGE);
ret = simdb_read(db, 0, 1, &data);
assert(ret == SIMDB_ERR_USAGE);
/* valid request : single record */
ret = simdb_read(db, 1, 1, &data);
assert(ret == 1);
free(data);
/* valid request : multiple records */
ret = simdb_read(db, 1, 2, &data);
assert(ret == 2);
free(data);
/* range beyond end of file */
ret = simdb_read(db, 1, 4, &data);
assert(ret == 2);
free(data);
/* start beyond end of file */
ret = simdb_read(db, 3, 4, &data);
assert(ret == 0);
simdb_close(db);
unlink(path);
return 0;
}