Ignore:
Timestamp:
Mar 3, 2006, 10:19:29 PM (16 years ago)
Author:
Peter
Message:

fixed problem with ConsensusInputranker? - Now all tests do pass

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/test/lookup_test.cc

    r534 r536  
    22
    33#include <c++_tools/gslapi/matrix.h>
     4#include <c++_tools/classifier/DataLookup1D.h>
     5#include <c++_tools/classifier/KernelLookup.h>
     6#include <c++_tools/classifier/Kernel_SEV.h>
    47#include <c++_tools/classifier/MatrixLookup.h>
     8#include <c++_tools/classifier/PolynomialKernelFunction.h>
     9
    510
    611#include <fstream>
     
    1217gslapi::matrix matrix(size_t n);
    1318
     19bool test_data_lookup1D(std::ostream* error);
     20bool test_kernel_lookup(std::ostream* error);
    1421bool test_matrix_lookup(std::ostream* error);
    1522
     
    2734  }
    2835
    29   *error << "Testing lookup classes" << std::endl;
    30   bool ok = true;
    31 
    32   ok = test_matrix_lookup(error);
    33  
     36  *error << "Testing Lookup Classes" << std::endl;
     37  bool ok = test_data_lookup1D(error);
     38
     39  ok = ok && test_matrix_lookup(error);
     40 
     41  ok = ok && test_kernel_lookup(error);
    3442
    3543  if (ok)
     
    5159}
    5260
     61bool test_data_lookup1D(std::ostream* error)
     62{
     63  bool ok =true;
     64  *error << "Testing DataLookup1D" << std::endl;
     65  gslapi::matrix gsl_m1(matrix(5));
     66  std::vector<size_t> index_odd;
     67  index_odd.push_back(1);
     68  index_odd.push_back(3);
     69  std::vector<size_t> index_even;
     70  index_even.push_back(2);
     71  index_even.push_back(0);
     72  index_even.push_back(4);
     73  classifier::MatrixLookup m1(gsl_m1,index_odd,index_even);
     74  *error << "DataLookup1D::DataLookup1D(const MatrixLookup&\n"
     75         << "                           const size_t, const bool)...";
     76  classifier::DataLookup1D v1(m1,1);
     77  if (v1.size()!=m1.columns() || v1(0)!=m1(1,0) ||
     78      v1(1)!=m1(1,1) ) {
     79    ok =false;
     80    *error << "\nERROR" << std::endl;
     81    *error << "size: " << v1.size() << " expected " << m1.columns() << "\n"
     82           << "v1(0): " << v1(0) << " expected " << m1(1,0) << "\n"
     83           << "v1(1): " << v1(1) << " expected " << m1(1,1)
     84           << std::endl;
     85  }
     86  else
     87    *error << "Ok" << std::endl;
     88
     89  *error << "DataLookup1D::DataLookup1D(const MatrixLookup&\n"
     90         << "                           const size_t, const bool)...";
     91  classifier::DataLookup1D v2(m1,1,false);
     92  if (v2.size()!=m1.rows() || v2(0)!=m1(0,1) || v2(1)!=m1(1,1) ) {
     93    ok =false;
     94    *error << "\nERROR\n"
     95           << "size: " << v2.size() << " expected " << m1.rows() << "\n"
     96           << "v2(0): " << v2(0) << " expected " << m1(0,1) << "\n"
     97           << "v2(1): " << v2(1) << " expected " << m1(1,1)
     98           << std::endl;
     99  }
     100  else
     101    *error << "Ok" << std::endl;
     102
     103  return ok;
     104}
     105
     106bool test_kernel_lookup(std::ostream* error)
     107{
     108  bool ok =true;
     109  *error << "\nTesting KernelLookup" << std::endl;
     110  gslapi::matrix data_core(1,5);
     111  for (size_t i=0; i<data_core.columns(); i++)
     112    data_core(0,i)=i;
     113  classifier::MatrixLookup data(data_core);
     114  classifier::PolynomialKernelFunction kf;
     115  classifier::Kernel_SEV kernel(data,kf);
     116  *error << "KernelLookup::KernelLookup(const Kernel&)...";
     117  classifier::KernelLookup k1(kernel);
     118  if (k1.rows()!=kernel.rows() || k1.columns()!=kernel.columns()) {
     119    ok =false;
     120    *error <<   "ERROR:" << std::endl;
     121    *error << "Dimensions do not agree." << std::endl;
     122  }
     123  for (size_t i=0; i<k1.rows(); i++)
     124    for (size_t j=0; j<k1.columns(); j++)
     125      if (k1(i,j)!=kernel(i,j)) {
     126        ok =false;
     127        *error << "ERROR:\n"
     128               << "KernelLookup::KernelLookup(const Kernel& data)"
     129               << std::endl;
     130        *error << "k(" << i << "," << j << ") is " << k1(i,j)
     131               << "expected " << kernel(i,j) << std::endl;
     132      }
     133 
     134  std::vector<size_t> index_odd;
     135  index_odd.push_back(1);
     136  index_odd.push_back(3);
     137  std::vector<size_t> index_even;
     138  index_even.push_back(2);
     139  index_even.push_back(0);
     140  index_even.push_back(5);
     141 
     142
     143
     144  return ok;
     145}
     146
    53147bool test_matrix_lookup(std::ostream* error)
    54148{
    55149  bool ok =true;
    56   *error << "Testing MatrixLookup" << std::endl;
     150  *error << "\nTesting MatrixLookup" << std::endl;
     151  *error << "MatrixLookup::MatrixLookup(const gslapi::matrix& data)...";
    57152  gslapi::matrix gsl_m1(matrix(2));
    58153  classifier::MatrixLookup m1(gsl_m1);
     
    61156      m1(1,0)!=gsl_m1(1,0) || m1(1,1)!=gsl_m1(1,1) ) {
    62157    ok =false;
    63     *error <<   "ERROR:\nMatrixLookup::MatrixLookup(const gslapi::matrix& data)"
    64            << std::endl;
    65   }
    66 
     158    *error <<   "ERROR:" << std::endl;
     159  }
     160  else
     161    *error << "Ok" << std::endl;
     162
     163 
     164  *error << "MatrixLookup::MatrixLookup(const gslapi::matrix&,\n"
     165         << "                           const std::vector<size_t>&,\n"
     166         << "                           const std::vector<size_t>&)...";
    67167  gslapi::matrix gsl_m2(matrix(4));
    68168  std::vector<size_t> index_odd;
     
    78178      m2(1,0)!=gsl_m2(3,2) || m2(1,1)!=gsl_m2(3,0) ) {
    79179    ok =false;
    80     *error <<   "ERROR:\n"
    81            << "MatrixLookup::MatrixLookup(const gslapi::matrix& data\n"
    82            << "                           const std::vector<size_t>& row,\n"
    83            << "                           const std::vector<size_t>& col)"
    84            << std::endl;
    85   }
    86 
     180    *error <<   "ERROR:" << std::endl;
     181  }
     182  else
     183    *error << "Ok" << std::endl;
     184
     185  *error << "MatrixLookup::MatrixLookup(const gslapi::matrix&,\n"
     186         << "                           const std::vector<size_t>&,\n"
     187         << "                           const bool)...";
    87188  std::vector<size_t> one(1,1);
    88189  classifier::MatrixLookup m3(gsl_m2,one,true);
     
    90191      m3(0,1)!=gsl_m2(1,1) || m3(0,2)!=gsl_m2(1,2) || m3(0,3)!=gsl_m2(1,3)) {
    91192    ok =false;
    92     *error <<   "ERROR:\n"
    93            << "MatrixLookup::MatrixLookup(const gslapi::matrix&,\n"
    94            << "                           const std::vector<size_t>&,\n"
    95            << "                           const bool)"
    96            << std::endl;
     193    *error <<   "ERROR:" << std::endl;
    97194    *error << "m3.rows(): " << m3.rows() << " expected 1" << std::endl;
    98195    *error << "m3.columns(): " << m3.columns() << " expected "
    99196           << gsl_m2.columns() << std::endl;
    100197  }
    101 
     198  else
     199    *error << "Ok" << std::endl;
     200
     201  *error << "MatrixLookup::MatrixLookup(const MatrixLookup&)...";
    102202  classifier::MatrixLookup m4(m2);
    103203  if (m4.rows()!=m2.rows() || m4.columns()!=m2.rows() || m4(0,0)!=m2(0,0) ||
    104204      m4(0,1)!=m2(0,1) || m4(1,0)!=m2(1,0) || m4(1,1)!=m2(1,1) ) {
    105205    ok =false;
    106     *error <<   "ERROR:\n"
    107            << "MatrixLookup::MatrixLookup(const MatrixLookup& data)"
    108            << std::endl;
    109   }
    110 
     206    *error <<   "ERROR:" << std::endl;
     207  }
     208  else
     209    *error << "Ok" << std::endl;
     210
     211  *error << "MatrixLookup::MatrixLookup(const MatrixLookup& data\n"
     212         << "                           const std::vector<size_t>&,\n"
     213         << "                           const std::vector<size_t>&)...";
    111214  classifier::MatrixLookup m5(m2,one,one);
    112215  if (m5.rows()!=1 || m5.columns()!=1 || m5(0,0)!=m2(1,1) ) {
    113216    ok =false;
    114     *error <<   "ERROR:\n"
    115            << "MatrixLookup::MatrixLookup(const MatrixLookup& data\n"
    116            << "                           const std::vector<size_t>& row,\n"
    117            << "                           const std::vector<size_t>& col)"
    118            << std::endl;
     217    *error <<   "ERROR:" << std::endl;
    119218    *error << "MatrixLookup is " << m5(0,0) << " expected " << m2(1,1)
    120219           << std::endl;
    121220  }
    122  
     221  else
     222    *error << "Ok" << std::endl;
     223 
     224  *error << "MatrixLookup::MatrixLookup(const MatrixLookup&,\n"
     225         << "                           const std::vector<size_t>&,\n"
     226         << "                           const bool)...";
    123227  classifier::MatrixLookup m6(m2,one,true);
    124228  if (m6.rows()!=1 || m6.columns()!=m2.columns() || m6(0,0)!=m2(1,0) ||
    125229      m6(0,1)!=m2(1,1)) {
    126230    ok =false;
    127     *error <<   "ERROR:\n"
    128            << "MatrixLookup::MatrixLookup(const MatrixLookup&,\n"
    129            << "                           const std::vector<size_t>&,\n"
    130            << "                           const bool)"
    131            << std::endl;
    132   }
    133 
    134 
     231    *error << "ERROR:" << std::endl;
     232  }
     233  else
     234    *error << "Ok" << std::endl;
     235
     236
     237  *error << "MatrixLookup::training_data(const std::vector<size_t>)...";
    135238  const classifier::MatrixLookup* TrnData = m2.training_data(one);
    136239  if (TrnData->rows() != m2.rows() || TrnData->columns()!=one.size()){
    137240    ok =false;
    138     *error << "ERROR:\nMatrixLookup::training_data(const std::vector<size_t>)"
    139            << std::endl;
    140   }
     241    *error << "ERROR:" << std::endl;
     242  }
     243  else
     244    *error << "Ok" << std::endl;
    141245  delete TrnData;
    142246
     247  *error << "MatrixLookup::validation_data(const std::vector<size_t>,\n"
     248         << "                              const std::vector<size_t>)...";
    143249  std::vector<size_t> val(23,2);
    144250  const classifier::MatrixLookup* ValData = m2.validation_data(one, val);
    145251  if (ValData->rows() != m2.rows() || TrnData->columns()!=val.size()){
    146252    ok =false;
    147     *error << "ERROR:\n"
    148            << "MatrixLookup::validation_data(const std::vector<size_t>,\n"
    149            << "                              const std::vector<size_t>)"
    150            << std::endl;
    151   }
     253    *error << "ERROR:" << std::endl;
     254  }
     255  else
     256    *error << "Ok" << std::endl;
    152257  delete ValData;
    153258
Note: See TracChangeset for help on using the changeset viewer.