annotate libtests/0007/prog1.c @ 544:283b412083db multiprobeLSH

A fix for using_query_point with query_by_key (i.e. not by file). This code path still loads the entire query file, even if using one vector. Loading of query data needs better rationalization.
author mas01mc
date Sun, 08 Feb 2009 06:41:55 +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;
mas01ik@355 10
mas01cr@498 11 adb_datum_t feature = {2, 2, "testfeature", (double[4]) {0, 1, 1, 0}};
mas01cr@498 12 if(audiodb_insert_datum(adb, &feature))
mas01cr@498 13 return 1;
mas01cr@498 14 audiodb_l2norm(adb);
mas01ik@355 15
mas01cr@498 16 adb_datum_t query = {1, 2, "testquery", (double[2]) {0, 0.5}};
mas01cr@498 17 adb_query_id_t qid = {0};
mas01cr@498 18 qid.datum = &query;
mas01cr@498 19 qid.sequence_length = 16;
mas01cr@498 20 qid.sequence_start = 0;
mas01cr@498 21 adb_query_parameters_t parms =
mas01cr@498 22 {ADB_ACCUMULATION_PER_TRACK, ADB_DISTANCE_EUCLIDEAN_NORMED, 10, 10};
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;
mas01cr@498 30 adb_query_results_t *results = audiodb_query_spec(adb, &spec);
mas01cr@498 31 if(results) return 1;
mas01ik@355 32
mas01cr@498 33 spec.params.npoints = 1;
mas01cr@498 34 results = audiodb_query_spec(adb, &spec);
mas01cr@498 35 if(results) return 1;
mas01ik@355 36
mas01cr@498 37 spec.qid.datum->data = (double [2]) {0.5, 0};
mas01cr@498 38 spec.params.npoints = 10;
mas01cr@498 39 results = audiodb_query_spec(adb, &spec);
mas01cr@498 40 if(results) return 1;
mas01cr@498 41
mas01cr@498 42 spec.params.npoints = 1;
mas01cr@498 43 results = audiodb_query_spec(adb, &spec);
mas01cr@498 44 if(results) return 1;
mas01ik@355 45
mas01cr@498 46 /* the above tests mirror those in the audioDB command-line test
mas01cr@498 47 * suite. We can test for additional bad input cases too: */
mas01ik@355 48
mas01cr@498 49 spec.qid.sequence_start = 1;
mas01cr@498 50 spec.qid.sequence_length = 1;
mas01cr@498 51 results = audiodb_query_spec(adb, &spec);
mas01cr@498 52 if(results) return 1;
mas01ik@355 53
mas01cr@498 54 /* and just sanity check that we haven't broken everything */
mas01cr@498 55 spec.qid.sequence_start = 0;
mas01cr@498 56 spec.params.npoints = 2;
mas01cr@498 57 results = audiodb_query_spec(adb, &spec);
mas01cr@498 58 if(!results || results->nresults != 2) return 1;
mas01cr@498 59 audiodb_query_free_results(adb, &spec, results);
mas01ik@355 60
mas01cr@498 61 audiodb_close(adb);
mas01ik@355 62
mas01cr@498 63 return 104;
mas01ik@355 64 }