annotate libtests/0023/prog1.c @ 562:dfeb5ef768da

Usually a commitment phobe but everybody has they're first time. Include mant structural changes and additional definition in line with what Christophe has asked for. Some of the schemas are more complicated than Id like - I will try to think of more elegant ways of specification.
author mas02md
date Fri, 17 Apr 2009 16:52:15 +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 adb_insert_t batch[2]={{0},{0}};
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 maketestfile("testfeature01", 2, (double[2]) {0, 1}, 2);
mas01cr@498 13 maketestfile("testfeature10", 2, (double[2]) {1, 0}, 2);
mas01ik@355 14
mas01cr@498 15 batch[0].features="testfeature01";
mas01cr@498 16 batch[1].features="testfeature10";
mas01cr@498 17 if(audiodb_batchinsert(adb, batch, 2))
mas01cr@498 18 return 1;
mas01cr@498 19 if(audiodb_l2norm(adb))
mas01cr@498 20 return 1;
mas01ik@355 21
mas01cr@498 22 adb_datum_t query = {2, 2, "testquery", (double[4]) {0, 0.5, 0.5, 0}};
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_EUCLIDEAN_NORMED, 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;
mas01cr@498 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, 0, 0);
mas01cr@498 40 result_present_or_fail(results, "testfeature10", 2, 0, 0);
mas01cr@498 41 audiodb_query_free_results(adb, &spec, results);
mas01ik@355 42
mas01cr@498 43 spec.params.ntracks = 1;
mas01cr@498 44 results = audiodb_query_spec(adb, &spec);
mas01cr@498 45 if(!results || results->nresults != 1) return 1;
mas01cr@498 46 result_present_or_fail(results, "testfeature01", 0, 0, 0);
mas01cr@498 47 audiodb_query_free_results(adb, &spec, results);
mas01cr@498 48
mas01cr@498 49 spec.qid.sequence_start = 1;
mas01cr@498 50 spec.params.ntracks = 10;
mas01cr@498 51 results = audiodb_query_spec(adb, &spec);
mas01cr@498 52 if(!results || results->nresults != 2) return 1;
mas01cr@498 53 result_present_or_fail(results, "testfeature10", 0, 1, 0);
mas01cr@498 54 result_present_or_fail(results, "testfeature01", 2, 1, 0);
mas01cr@498 55 audiodb_query_free_results(adb, &spec, results);
mas01ik@355 56
mas01cr@498 57 spec.params.ntracks = 1;
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, 1, 0);
mas01cr@498 61 audiodb_query_free_results(adb, &spec, results);
mas01ik@355 62
mas01cr@498 63 audiodb_close(adb);
mas01ik@355 64
mas01cr@498 65 return 104;
mas01ik@355 66 }