annotate libtests/0003/prog1.c @ 507:e7fd50483311

Free bits of the datum constructed in audioDB::query. We're not quite safe: error calls between allocation of some of these bits and pieces and their use will cause failure... but not freeing things here is definitely wrong.
author mas01cr
date Tue, 13 Jan 2009 21:37:10 +0000
parents 342822c2d49a
children bcc7a6ddb2c8
rev   line source
mas01cr@498 1 #include "audioDB_API.h"
mas01cr@498 2 #include "test_utils_lib.h"
mas01ik@355 3
mas01cr@498 4 int main(int argc, char **argv) {
mas01cr@498 5 adb_t *adb;
mas01ik@355 6
mas01cr@498 7 clean_remove_db(TESTDB);
mas01cr@498 8 if(!(adb = audiodb_create(TESTDB, 0, 0, 0)))
mas01cr@498 9 return 1;
mas01cr@498 10 if(audiodb_l2norm(adb))
mas01cr@498 11 return 1;
mas01ik@355 12
mas01cr@498 13 adb_datum_t datum = {1, 1, "testfeature", (double[1]) {1}, NULL, NULL};
mas01cr@498 14 if(audiodb_insert_datum(adb, &datum))
mas01cr@498 15 return 1;
mas01ik@355 16
mas01cr@498 17 adb_query_id_t qid = {0};
mas01cr@498 18 qid.datum = &datum;
mas01cr@498 19 qid.sequence_length = 1;
mas01cr@498 20 qid.sequence_start = 0;
mas01cr@498 21 adb_query_parameters_t parms =
mas01cr@498 22 {ADB_ACCUMULATION_DB, ADB_DISTANCE_DOT_PRODUCT, 10, 0};
mas01cr@498 23 adb_query_refine_t refine = {0};
mas01cr@498 24 refine.hopsize = 1;
mas01ik@355 25
mas01cr@498 26 adb_query_spec_t spec;
mas01cr@498 27 spec.qid = qid;
mas01cr@498 28 spec.params = parms;
mas01cr@498 29 spec.refine = refine;
mas01ik@355 30
mas01cr@498 31 adb_query_results_t *results = audiodb_query_spec(adb, &spec);
mas01cr@498 32 if(!results || results->nresults != 1) return 1;
mas01cr@498 33 result_present_or_fail(results, "testfeature", 1, 0, 0);
mas01cr@498 34 audiodb_query_free_results(adb, &spec, results);
mas01ik@355 35
mas01cr@498 36 audiodb_close(adb);
mas01ik@355 37
mas01cr@498 38 return 104;
mas01ik@355 39 }