Ignore:
Timestamp:
Sep 26, 2007, 3:44:19 PM (16 years ago)
Author:
Markus Ringnér
Message:

A first suggestion for how to adress #250. Also removed contamination of namespace std (see #251).

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/test/vector_distance_test.cc

    r897 r898  
    55#include "yat/statistics/euclidean_vector_distance.h"
    66#include "yat/statistics/pearson_vector_distance.h"
     7#include "yat/statistics/vector_distance_ptr.h"
    78#include "yat/utility/matrix.h"
    89#include "yat/utility/vector.h"
     
    1415
    1516using namespace theplu::yat;
     17
     18
     19// Function to test pointers to distance specialized for DataLookup1D::iterator
     20double f(statistics::vector_distance_lookup_weighted_ptr distance) {
     21  utility::matrix m(2,3,1);
     22  m(0,1)=2;
     23  m(1,0)=0;
     24  m(1,1)=0;
     25  utility::matrix w(2,3,1);
     26  w(0,0)=0;
     27  classifier::MatrixLookupWeighted mw(m,w);
     28  classifier::DataLookupWeighted1D aw(mw,0,true);
     29  classifier::DataLookupWeighted1D bw(mw,1,true);
     30 
     31  double dist=(*distance)(aw.begin(),aw.end(),bw.begin());
     32  return dist; 
     33}
    1634
    1735int main(const int argc,const char* argv[])
     
    6381 
    6482  dist=statistics::vector_distance(aw.begin(),aw.end(),bw.begin(),
    65                                           statistics::euclidean_vector_distance_tag());
     83                                   statistics::euclidean_vector_distance_tag());
    6684 
    6785  if(fabs(dist-2)>tolerance) {
     
    7997
    8098
    81   // Test with reference to a vector_distance_tag
    82   statistics::euclidean_vector_distance_tag tag;
    83   statistics::vector_distance_tag& tagref=tag;
    84   dist=statistics::vector_distance(aw.begin(),aw.end(),bw.begin(),tagref);
    85   *error << "Dist: " << dist << std::endl;
     99  // Test with std::vectors
     100  std::vector<double> sa(3,1);
     101  sa[1] = 2;
     102  std::vector<double> sb(3,0);
     103  sb[2] = 1;
    86104
     105  dist=statistics::vector_distance(sa.begin(),sa.end(),sb.begin(),
     106                                   statistics::euclidean_vector_distance_tag());  if(fabs(dist-2.23607)>tolerance) {
     107    *error << "Error in vector_distance for std::vector: " << std::endl;
     108    ok=false;
     109  }
     110
     111
     112  // Test with pointer to a vector_distance
     113  statistics::vector_distance_lookup_weighted_ptr test_ptr=
     114    statistics::vector_distance<statistics::euclidean_vector_distance_tag>;
     115  dist=(*test_ptr)(aw.begin(),aw.end(),bw.begin());
     116  if(fabs(dist-2)>tolerance) {
     117    *error << "Error when using pointer to vector_distance" << std::endl;
     118    ok=false;
     119  }
     120
     121  if(!ok) {
     122    *error << "vector_distance_test failed" << std::endl;
     123  }
    87124  if (error!=&std::cerr)
    88125    delete error;
    89 
    90126  if (ok=true) 
    91127    return 0;
Note: See TracChangeset for help on using the changeset viewer.