annotate libtests/0027/prog1.c @ 597:fac63f65753e

Remove LIBGSL from library link stage At present, the library doesn't depend on libgsl. If Windows porting goes faster than APIs for sample and index, removing libgsl from the link equation will help.
author mas01cr
date Tue, 11 Aug 2009 21:57:46 +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 (double[2]){-0.5, -1}};
mas01cr@498 13 if(!audiodb_insert_datum(adb, &feature))
mas01cr@498 14 return 1;
mas01cr@498 15 if(audiodb_power(adb))
mas01cr@498 16 return 1;
mas01cr@498 17 feature.power = NULL;
mas01cr@498 18 if(!audiodb_insert_datum(adb, &feature))
mas01cr@498 19 return 1;
mas01cr@498 20 feature.power = (double[2]){-0.5, -1};
mas01cr@498 21 if(audiodb_insert_datum(adb, &feature))
mas01cr@498 22 return 1;
mas01ik@355 23
mas01cr@498 24 if(audiodb_l2norm(adb))
mas01cr@498 25 return 1;
mas01ik@355 26
mas01cr@498 27 adb_datum_t query = {1, 2, "testquery", (double[2]) {0, 0.5}};
mas01cr@498 28 adb_query_id_t qid = {0};
mas01cr@498 29 qid.datum = &query;
mas01cr@498 30 qid.sequence_length = 1;
mas01cr@498 31 qid.sequence_start = 0;
mas01cr@498 32 adb_query_parameters_t parms =
mas01cr@498 33 {ADB_ACCUMULATION_PER_TRACK, ADB_DISTANCE_EUCLIDEAN_NORMED, 10, 10};
mas01cr@498 34 adb_query_refine_t refine = {0};
mas01cr@498 35 refine.hopsize = 1;
mas01ik@355 36
mas01cr@498 37 adb_query_spec_t spec;
mas01cr@498 38 spec.qid = qid;
mas01cr@498 39 spec.params = parms;
mas01cr@498 40 spec.refine = refine;
mas01ik@355 41
mas01cr@498 42 adb_query_results_t *results = audiodb_query_spec(adb, &spec);
mas01cr@498 43 if(!results || results->nresults != 2) return 1;
mas01cr@498 44 result_present_or_fail(results, "testfeature", 0, 0, 0);
mas01cr@498 45 result_present_or_fail(results, "testfeature", 2, 0, 1);
mas01cr@498 46 audiodb_query_free_results(adb, &spec, results);
mas01ik@355 47
mas01cr@498 48 spec.params.npoints = 1;
mas01cr@498 49 results = audiodb_query_spec(adb, &spec);
mas01cr@498 50 if(!results || results->nresults != 1) return 1;
mas01cr@498 51 result_present_or_fail(results, "testfeature", 0, 0, 0);
mas01cr@498 52 audiodb_query_free_results(adb, &spec, results);
mas01ik@355 53
mas01cr@498 54 spec.qid.datum->data = (double [2]) {0.5, 0};
mas01cr@498 55 spec.params.npoints = 10;
mas01cr@498 56 results = audiodb_query_spec(adb, &spec);
mas01cr@498 57 if(!results || results->nresults != 2) return 1;
mas01cr@498 58 result_present_or_fail(results, "testfeature", 0, 0, 1);
mas01cr@498 59 result_present_or_fail(results, "testfeature", 2, 0, 0);
mas01cr@498 60 audiodb_query_free_results(adb, &spec, results);
mas01ik@355 61
mas01cr@498 62 spec.params.npoints = 1;
mas01cr@498 63 results = audiodb_query_spec(adb, &spec);
mas01cr@498 64 if(!results || results->nresults != 1) return 1;
mas01cr@498 65 result_present_or_fail(results, "testfeature", 0, 0, 1);
mas01cr@498 66 audiodb_query_free_results(adb, &spec, results);
mas01ik@355 67
mas01cr@498 68 /* queries with associated power data */
mas01cr@498 69 spec.qid.datum->data = (double [2]) {0, 0.5};
mas01cr@498 70 spec.qid.datum->power = (double [1]) {-0.5};
mas01cr@498 71 spec.params.npoints = 10;
mas01cr@498 72 spec.refine.flags = ADB_REFINE_ABSOLUTE_THRESHOLD;
mas01cr@498 73 spec.refine.absolute_threshold = -1.4;
mas01cr@498 74 results = audiodb_query_spec(adb, &spec);
mas01cr@498 75 if(!results || results->nresults != 2) return 1;
mas01cr@498 76 result_present_or_fail(results, "testfeature", 0, 0, 0);
mas01cr@498 77 result_present_or_fail(results, "testfeature", 2, 0, 1);
mas01cr@498 78 audiodb_query_free_results(adb, &spec, results);
mas01ik@355 79
mas01cr@498 80 spec.refine.absolute_threshold = -0.6;
mas01cr@498 81 results = audiodb_query_spec(adb, &spec);
mas01cr@498 82 if(!results || results->nresults != 1) return 1;
mas01cr@498 83 result_present_or_fail(results, "testfeature", 0, 0, 0);
mas01cr@498 84 audiodb_query_free_results(adb, &spec, results);
mas01ik@355 85
mas01cr@498 86 spec.refine.absolute_threshold = -0.2;
mas01cr@498 87 results = audiodb_query_spec(adb, &spec);
mas01cr@498 88 if(!results || results->nresults != 0) return 1;
mas01cr@498 89 audiodb_query_free_results(adb, &spec, results);
mas01ik@355 90
mas01cr@498 91 spec.refine.absolute_threshold = 0;
mas01cr@498 92 spec.refine.flags = ADB_REFINE_RELATIVE_THRESHOLD;
mas01cr@498 93 spec.refine.relative_threshold = 1;
mas01cr@498 94 results = audiodb_query_spec(adb, &spec);
mas01cr@498 95 if(!results || results->nresults != 2) return 1;
mas01cr@498 96 result_present_or_fail(results, "testfeature", 0, 0, 0);
mas01cr@498 97 result_present_or_fail(results, "testfeature", 2, 0, 1);
mas01cr@498 98 audiodb_query_free_results(adb, &spec, results);
mas01ik@355 99
mas01cr@498 100 spec.refine.relative_threshold = 0.2;
mas01cr@498 101 results = audiodb_query_spec(adb, &spec);
mas01cr@498 102 if(!results || results->nresults != 1) return 1;
mas01cr@498 103 result_present_or_fail(results, "testfeature", 0, 0, 0);
mas01cr@498 104 audiodb_query_free_results(adb, &spec, results);
mas01ik@355 105
mas01cr@498 106 spec.qid.datum->data = (double [2]) {0.5, 0};
mas01cr@498 107 spec.refine.flags = ADB_REFINE_ABSOLUTE_THRESHOLD;
mas01cr@498 108 spec.refine.absolute_threshold = -1.4;
mas01cr@498 109 results = audiodb_query_spec(adb, &spec);
mas01cr@498 110 if(!results || results->nresults != 2) return 1;
mas01cr@498 111 result_present_or_fail(results, "testfeature", 0, 0, 1);
mas01cr@498 112 result_present_or_fail(results, "testfeature", 2, 0, 0);
mas01cr@498 113 audiodb_query_free_results(adb, &spec, results);
mas01ik@355 114
mas01cr@498 115 spec.refine.absolute_threshold = -0.6;
mas01cr@498 116 results = audiodb_query_spec(adb, &spec);
mas01cr@498 117 if(!results || results->nresults != 1) return 1;
mas01cr@498 118 result_present_or_fail(results, "testfeature", 2, 0, 0);
mas01cr@498 119 audiodb_query_free_results(adb, &spec, results);
mas01ik@355 120
mas01cr@498 121 spec.refine.absolute_threshold = -0.2;
mas01cr@498 122 results = audiodb_query_spec(adb, &spec);
mas01cr@498 123 if(!results || results->nresults != 0) return 1;
mas01cr@498 124 audiodb_query_free_results(adb, &spec, results);
mas01ik@355 125
mas01cr@498 126 spec.refine.absolute_threshold = 0;
mas01cr@498 127 spec.refine.flags = ADB_REFINE_RELATIVE_THRESHOLD;
mas01cr@498 128 spec.refine.relative_threshold = 1;
mas01cr@498 129 results = audiodb_query_spec(adb, &spec);
mas01cr@498 130 if(!results || results->nresults != 2) return 1;
mas01cr@498 131 result_present_or_fail(results, "testfeature", 0, 0, 1);
mas01cr@498 132 result_present_or_fail(results, "testfeature", 2, 0, 0);
mas01cr@498 133 audiodb_query_free_results(adb, &spec, results);
mas01ik@355 134
mas01cr@498 135 spec.refine.relative_threshold = 0.2;
mas01cr@498 136 results = audiodb_query_spec(adb, &spec);
mas01cr@498 137 if(!results || results->nresults != 1) return 1;
mas01cr@498 138 result_present_or_fail(results, "testfeature", 2, 0, 0);
mas01cr@498 139 audiodb_query_free_results(adb, &spec, results);
mas01ik@355 140
mas01cr@498 141 audiodb_close(adb);
mas01ik@355 142
mas01cr@498 143 return 104;
mas01ik@355 144 }