Alex 'AdUser' Z
8 years ago
2 changed files with 81 additions and 0 deletions
@ -0,0 +1,78 @@
|
||||
#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; |
||||
db = simdb_open(path, mode, &ret); |
||||
assert(db != NULL); |
||||
|
||||
ret = simdb_write(db, 1, 2, rec); |
||||
assert(ret == 2); /* success */ |
||||
|
||||
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; |
||||
} |
Loading…
Reference in new issue