annotate libtests/0034/prog1.c @ 497:9d8aee621afb api-inversion

More libtests fixups. Include audiodb_close() calls everywhere (whoops). Add the facility to run tests under valgrind. Unfortunately the error-exitcode flag doesn't actually cause an error exit if the only thing wrong is memory leaks, but it will if there are actual memory errors, which is a start.
author mas01cr
date Sat, 10 Jan 2009 16:07:43 +0000
parents c291e9201a3c
children
rev   line source
mas01cr@487 1 #include "audioDB_API.h"
mas01cr@487 2 #include "test_utils_lib.h"
mas01ik@355 3
mas01cr@494 4 int main(int argc, char **argv) {
mas01cr@494 5 adb_t *adb;
mas01cr@494 6 adb_insert_t insert = {0};
mas01cr@494 7 adb_status_t status = {0};
mas01cr@494 8 adb_insert_t batch[4] = {{0},{0},{0},{0}};
mas01ik@355 9
mas01cr@494 10 clean_remove_db(TESTDB);
mas01cr@494 11 if(!(adb = audiodb_create(TESTDB, 0, 0, 0)))
mas01cr@494 12 return 1;
mas01ik@355 13
mas01cr@495 14 maketestfile("testfeature", 2, (double[2]) {1, 1}, 2);
mas01cr@495 15 maketestfile("testfeature01", 2, (double[2]) {0, 1}, 2);
mas01cr@495 16 maketestfile("testfeature10", 2, (double[2]) {1, 0}, 2);
mas01ik@355 17
mas01cr@494 18 insert.features = "testfeature";
mas01cr@494 19 if(audiodb_insert(adb, &insert))
mas01cr@494 20 return 1;
mas01cr@494 21 if(audiodb_status(adb, &status) || status.numFiles != 1)
mas01cr@494 22 return 1;
mas01cr@494 23
mas01cr@494 24 /* reinserts using audiodb_insert() should silently not fail and
mas01cr@494 25 * silently not insert, to support legacy command-line behaviour. */
mas01cr@494 26 if(audiodb_insert(adb, &insert))
mas01cr@494 27 return 1;
mas01cr@494 28 if(audiodb_status(adb, &status) || status.numFiles != 1)
mas01cr@494 29 return 1;
mas01ik@355 30
mas01cr@494 31 /* reinserts using audiodb_insert_datum() should fail. */
mas01cr@494 32 adb_datum_t datum = {1, 2, "testfeature", (double[2]) {1, 1}};
mas01cr@494 33 if(!audiodb_insert_datum(adb, &datum))
mas01cr@494 34 return 1;
mas01ik@355 35
mas01cr@494 36 insert.features = "testfeature01";
mas01cr@494 37 if(audiodb_insert(adb, &insert))
mas01cr@494 38 return 1;
mas01cr@494 39 if(audiodb_status(adb, &status) || status.numFiles != 2)
mas01cr@494 40 return 1;
mas01ik@355 41
mas01cr@494 42 insert.features = "testfeature10";
mas01cr@494 43 if(audiodb_insert(adb, &insert))
mas01cr@494 44 return 1;
mas01cr@494 45 if(audiodb_status(adb, &status) || status.numFiles != 3)
mas01cr@494 46 return 1;
mas01cr@494 47
mas01cr@497 48 audiodb_close(adb);
mas01cr@497 49
mas01cr@494 50 clean_remove_db(TESTDB);
mas01cr@494 51 if(!(adb = audiodb_create(TESTDB, 0, 0, 0)))
mas01cr@494 52 return 1;
mas01ik@355 53
mas01cr@494 54 batch[0].features = "testfeature";
mas01cr@494 55 batch[1].features = "testfeature01";
mas01cr@494 56 batch[2].features = "testfeature10";
mas01cr@494 57 batch[3].features = "testfeature10";
mas01cr@494 58 if(audiodb_batchinsert(adb, batch, 4))
mas01cr@494 59 return 1;
mas01cr@494 60 if(audiodb_status(adb, &status) || status.numFiles != 3)
mas01cr@494 61 return 1;
mas01ik@355 62
mas01cr@497 63 audiodb_close(adb);
mas01cr@497 64
mas01cr@494 65 return 104;
mas01ik@355 66 }