annotate libtests/0031/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;
mas01ik@355 11
mas01cr@498 12 adb_datum_t datum1 = {1, 2, "testfeature01", (double[4]) {0, 1}};
mas01cr@498 13 adb_datum_t datum2 = {1, 2, "testfeature10", (double[4]) {1, 0}};
mas01cr@498 14 if(audiodb_insert_datum(adb, &datum1))
mas01cr@498 15 return 1;
mas01cr@498 16 if(audiodb_insert_datum(adb, &datum2))
mas01cr@498 17 return 1;
mas01ik@355 18
mas01cr@498 19 if(audiodb_l2norm(adb))
mas01cr@498 20 return 1;
mas01ik@355 21
mas01cr@498 22 adb_datum_t query = {1, 2, "testquery", (double[2]) {0, 0.5}};
mas01ik@355 23
mas01cr@498 24 adb_query_id_t qid = {0};
mas01cr@498 25 qid.datum = &query;
mas01cr@498 26 qid.sequence_length = 1;
mas01cr@498 27 qid.sequence_start = 0;
mas01cr@498 28 adb_query_parameters_t parms =
mas01cr@498 29 {ADB_ACCUMULATION_PER_TRACK, ADB_DISTANCE_EUCLIDEAN_NORMED, 10, 10};
mas01cr@498 30 adb_query_refine_t refine = {0};
mas01cr@498 31 refine.hopsize = 1;
mas01ik@355 32
mas01cr@498 33 adb_query_spec_t spec;
mas01cr@498 34 spec.qid = qid;
mas01cr@498 35 spec.params = parms;
mas01cr@498 36 spec.refine = refine;
mas01ik@355 37
mas01cr@498 38 adb_query_results_t *results = audiodb_query_spec(adb, &spec);
mas01cr@498 39 if(!results || results->nresults != 2) return 1;
mas01cr@498 40 result_present_or_fail(results, "testfeature01", 0, 0, 0);
mas01cr@498 41 result_present_or_fail(results, "testfeature10", 2, 0, 0);
mas01cr@498 42 audiodb_query_free_results(adb, &spec, results);
mas01ik@355 43
mas01cr@498 44 spec.refine.flags = ADB_REFINE_INCLUDE_KEYLIST;
mas01cr@498 45 spec.refine.include.nkeys = 0;
mas01cr@498 46 results = audiodb_query_spec(adb, &spec);
mas01cr@498 47 if(!results || results->nresults != 0) return 1;
mas01cr@498 48 audiodb_query_free_results(adb, &spec, results);
mas01ik@355 49
mas01cr@498 50 spec.refine.include.nkeys = 1;
mas01cr@498 51 spec.refine.include.keys = keys;
mas01cr@498 52 spec.refine.include.keys[0] = "testfeature01";
mas01cr@498 53 results = audiodb_query_spec(adb, &spec);
mas01cr@498 54 if(!results || results->nresults != 1) return 1;
mas01cr@498 55 result_present_or_fail(results, "testfeature01", 0, 0, 0);
mas01cr@498 56 audiodb_query_free_results(adb, &spec, results);
mas01ik@355 57
mas01cr@498 58 spec.refine.include.keys[0] = "testfeature10";
mas01cr@498 59 results = audiodb_query_spec(adb, &spec);
mas01cr@498 60 if(!results || results->nresults != 1) return 1;
mas01cr@498 61 result_present_or_fail(results, "testfeature10", 2, 0, 0);
mas01cr@498 62 audiodb_query_free_results(adb, &spec, results);
mas01ik@355 63
mas01cr@498 64 spec.params.ntracks = 1;
mas01cr@498 65 results = audiodb_query_spec(adb, &spec);
mas01cr@498 66 if(!results || results->nresults != 1) return 1;
mas01cr@498 67 result_present_or_fail(results, "testfeature10", 2, 0, 0);
mas01cr@498 68 audiodb_query_free_results(adb, &spec, results);
mas01ik@355 69
mas01cr@498 70 spec.params.ntracks = 10;
mas01cr@498 71 spec.refine.flags = ADB_REFINE_EXCLUDE_KEYLIST;
mas01cr@498 72 spec.refine.include.nkeys = 0;
mas01cr@498 73 spec.refine.include.keys = NULL;
mas01cr@498 74 spec.refine.exclude.nkeys = 1;
mas01cr@498 75 spec.refine.exclude.keys = keys;
mas01cr@498 76 spec.refine.exclude.keys[0] = "testfeature01";
mas01cr@498 77 results = audiodb_query_spec(adb, &spec);
mas01cr@498 78 if(!results || results->nresults != 1) return 1;
mas01cr@498 79 result_present_or_fail(results, "testfeature10", 2, 0, 0);
mas01cr@498 80 audiodb_query_free_results(adb, &spec, results);
mas01ik@355 81
mas01cr@498 82 audiodb_close(adb);
mas01ik@355 83
mas01cr@498 84 return 104;
mas01ik@355 85 }