annotate libtests/0032/prog1.c @ 506:33913e11348a

Makefile fixup. Whoops. audioDB.h currently pulls in soapH.h and cmdline.h, and because we haven't finished the unintertwingling of the library from everything else we still need to depend on those files even for LIBOBJS.
author mas01cr
date Tue, 13 Jan 2009 21:37:06 +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;
mas01cr@498 6 const char *keys[2];
mas01ik@355 7
mas01cr@498 8 clean_remove_db(TESTDB);
mas01cr@498 9 if(!(adb = audiodb_create(TESTDB, 0, 0, 0)))
mas01cr@498 10 return 1;
mas01cr@498 11 if(audiodb_l2norm(adb))
mas01cr@498 12 return 1;
mas01ik@355 13
mas01cr@498 14 adb_datum_t datum1 = {1, 2, "testfeature01", (double[2]) {0, 1}};
mas01cr@498 15 adb_datum_t datum2 = {1, 2, "testfeature10", (double[2]) {1, 0}};
mas01cr@498 16 if(audiodb_insert_datum(adb, &datum1))
mas01cr@498 17 return 1;
mas01cr@498 18 if(audiodb_insert_datum(adb, &datum2))
mas01cr@498 19 return 1;
mas01ik@355 20
mas01cr@498 21 adb_datum_t query = {1, 2, "testquery", (double[2]) {0, 0.5}};
mas01ik@355 22
mas01cr@498 23 adb_query_id_t qid = {0};
mas01cr@498 24 qid.datum = &query;
mas01cr@498 25 qid.sequence_length = 1;
mas01cr@498 26 qid.sequence_start = 0;
mas01cr@498 27 adb_query_parameters_t parms =
mas01cr@498 28 {ADB_ACCUMULATION_PER_TRACK, ADB_DISTANCE_DOT_PRODUCT, 10, 10};
mas01cr@498 29 adb_query_refine_t refine = {0};
mas01cr@498 30 refine.hopsize = 1;
mas01ik@355 31
mas01cr@498 32 adb_query_spec_t spec;
mas01cr@498 33 spec.qid = qid;
mas01cr@498 34 spec.params = parms;
mas01cr@498 35 spec.refine = refine;
mas01ik@355 36
mas01cr@498 37 adb_query_results_t *results = audiodb_query_spec(adb, &spec);
mas01cr@498 38 if(!results || results->nresults != 2) return 1;
mas01cr@498 39 result_present_or_fail(results, "testfeature01", 0.5, 0, 0);
mas01cr@498 40 result_present_or_fail(results, "testfeature10", 0, 0, 0);
mas01cr@498 41 audiodb_query_free_results(adb, &spec, results);
mas01ik@355 42
mas01cr@498 43 spec.refine.flags = ADB_REFINE_INCLUDE_KEYLIST;
mas01cr@498 44 spec.refine.include.nkeys = 0;
mas01cr@498 45 results = audiodb_query_spec(adb, &spec);
mas01cr@498 46 if(!results || results->nresults != 0) return 1;
mas01cr@498 47 audiodb_query_free_results(adb, &spec, results);
mas01ik@355 48
mas01cr@498 49 spec.refine.include.nkeys = 1;
mas01cr@498 50 spec.refine.include.keys = keys;
mas01cr@498 51 spec.refine.include.keys[0] = "testfeature01";
mas01cr@498 52 results = audiodb_query_spec(adb, &spec);
mas01cr@498 53 if(!results || results->nresults != 1) return 1;
mas01cr@498 54 result_present_or_fail(results, "testfeature01", 0.5, 0, 0);
mas01cr@498 55 audiodb_query_free_results(adb, &spec, results);
mas01ik@355 56
mas01cr@498 57 spec.refine.include.keys[0] = "testfeature10";
mas01cr@498 58 results = audiodb_query_spec(adb, &spec);
mas01cr@498 59 if(!results || results->nresults != 1) return 1;
mas01cr@498 60 result_present_or_fail(results, "testfeature10", 0, 0, 0);
mas01cr@498 61 audiodb_query_free_results(adb, &spec, results);
mas01ik@355 62
mas01cr@498 63 spec.refine.include.nkeys = 2;
mas01cr@498 64 spec.refine.include.keys[0] = "testfeature01";
mas01cr@498 65 spec.refine.include.keys[1] = "testfeature10";
mas01cr@498 66 results = audiodb_query_spec(adb, &spec);
mas01cr@498 67 if(!results || results->nresults != 2) return 1;
mas01cr@498 68 result_present_or_fail(results, "testfeature01", 0.5, 0, 0);
mas01cr@498 69 result_present_or_fail(results, "testfeature10", 0, 0, 0);
mas01cr@498 70 audiodb_query_free_results(adb, &spec, results);
mas01ik@355 71
mas01cr@498 72 spec.refine.include.nkeys = 0;
mas01cr@498 73 spec.refine.include.keys = NULL;
mas01cr@498 74 spec.refine.flags = ADB_REFINE_EXCLUDE_KEYLIST;
mas01cr@498 75 spec.refine.exclude.nkeys = 1;
mas01cr@498 76 spec.refine.exclude.keys = keys;
mas01cr@498 77 spec.refine.exclude.keys[0] = "testfeature10";
mas01cr@498 78 results = audiodb_query_spec(adb, &spec);
mas01cr@498 79 if(!results || results->nresults != 1) return 1;
mas01cr@498 80 result_present_or_fail(results, "testfeature01", 0.5, 0, 0);
mas01cr@498 81 audiodb_query_free_results(adb, &spec, results);
mas01ik@355 82
mas01cr@498 83 spec.refine.exclude.keys[0] = "testfeature01";
mas01cr@498 84 results = audiodb_query_spec(adb, &spec);
mas01cr@498 85 if(!results || results->nresults != 1) return 1;
mas01cr@498 86 result_present_or_fail(results, "testfeature10", 0, 0, 0);
mas01cr@498 87 audiodb_query_free_results(adb, &spec, results);
mas01ik@355 88
mas01cr@498 89 audiodb_close(adb);
mas01ik@355 90
mas01cr@498 91 return 104;
mas01ik@355 92 }