source: trunk/test/matrix_lookup_test.cc @ 537

Last change on this file since 537 was 537, checked in by Peter, 16 years ago

forked tests and fixed bugs

  • Property svn:eol-style set to native
  • Property svn:keywords set to Id
File size: 4.8 KB
Line 
1// $Id: matrix_lookup_test.cc 537 2006-03-05 09:30:03Z peter $
2
3#include <c++_tools/gslapi/matrix.h>
4#include <c++_tools/classifier/MatrixLookup.h>
5
6#include <fstream>
7#include <iostream>
8#include <vector>
9
10using namespace theplu;
11
12gslapi::matrix matrix(size_t n);
13
14int main(const int argc,const char* argv[])
15{
16  using namespace theplu::classifier;
17
18  std::ostream* error;
19  if (argc>1 && argv[1]==std::string("-v"))
20    error = &std::cerr;
21  else {
22    error = new std::ofstream("/dev/null");
23    if (argc>1)
24      std::cout << "lookup_test -v : for printing extra information\n";
25  }
26  bool ok = true;
27
28  *error << "\nTesting MatrixLookup" << std::endl;
29  *error << "MatrixLookup::MatrixLookup(const gslapi::matrix& data)...";
30  gslapi::matrix gsl_m1(matrix(2));
31  classifier::MatrixLookup m1(gsl_m1);
32  if (m1.rows()!=gsl_m1.rows() || m1.columns()!=gsl_m1.columns() || 
33      m1(0,0)!=gsl_m1(0,0) || m1(0,1)!=gsl_m1(0,1) || 
34      m1(1,0)!=gsl_m1(1,0) || m1(1,1)!=gsl_m1(1,1) ) {
35    ok =false;
36    *error <<   "ERROR:" << std::endl;
37  }
38  else 
39    *error << "Ok" << std::endl;
40
41 
42  *error << "MatrixLookup::MatrixLookup(const gslapi::matrix&,\n" 
43         << "                           const std::vector<size_t>&,\n"
44         << "                           const std::vector<size_t>&)...";
45  gslapi::matrix gsl_m2(matrix(4));
46  std::vector<size_t> index_odd;
47  index_odd.push_back(1);
48  index_odd.push_back(3);
49  std::vector<size_t> index_even;
50  index_even.push_back(2);
51  index_even.push_back(0);
52 
53  classifier::MatrixLookup m2(gsl_m2,index_odd, index_even);
54  if (m2.rows()!=2 || m2.columns()!=2 || 
55      m2(0,0)!=gsl_m2(1,2) || m2(0,1)!=gsl_m2(1,0) || 
56      m2(1,0)!=gsl_m2(3,2) || m2(1,1)!=gsl_m2(3,0) ) {
57    ok =false;
58    *error <<   "ERROR:" << std::endl;
59  }
60  else
61    *error << "Ok" << std::endl;
62
63  *error << "MatrixLookup::MatrixLookup(const gslapi::matrix&,\n" 
64         << "                           const std::vector<size_t>&,\n"
65         << "                           const bool)...";
66  std::vector<size_t> one(1,1);
67  classifier::MatrixLookup m3(gsl_m2,one,true);
68  if (m3.rows()!=1 || m3.columns()!=gsl_m2.columns() || m3(0,0)!=gsl_m2(1,0) || 
69      m3(0,1)!=gsl_m2(1,1) || m3(0,2)!=gsl_m2(1,2) || m3(0,3)!=gsl_m2(1,3)) {
70    ok =false;
71    *error <<   "ERROR:" << std::endl;
72    *error << "m3.rows(): " << m3.rows() << " expected 1" << std::endl; 
73    *error << "m3.columns(): " << m3.columns() << " expected " 
74           << gsl_m2.columns() << std::endl; 
75  }
76  else
77    *error << "Ok" << std::endl;
78
79  *error << "MatrixLookup::MatrixLookup(const MatrixLookup&)...";
80  classifier::MatrixLookup m4(m2);
81  if (m4.rows()!=m2.rows() || m4.columns()!=m2.rows() || m4(0,0)!=m2(0,0) || 
82      m4(0,1)!=m2(0,1) || m4(1,0)!=m2(1,0) || m4(1,1)!=m2(1,1) ) {
83    ok =false;
84    *error <<   "ERROR:" << std::endl;
85  }
86  else
87    *error << "Ok" << std::endl;
88
89  *error << "MatrixLookup::MatrixLookup(const MatrixLookup& data\n" 
90         << "                           const std::vector<size_t>&,\n"
91         << "                           const std::vector<size_t>&)...";
92  classifier::MatrixLookup m5(m2,one,one);
93  if (m5.rows()!=1 || m5.columns()!=1 || m5(0,0)!=m2(1,1) ) {
94    ok =false;
95    *error <<   "ERROR:" << std::endl;
96    *error << "MatrixLookup is " << m5(0,0) << " expected " << m2(1,1)
97           << std::endl;
98  }
99  else
100    *error << "Ok" << std::endl;
101 
102  *error << "MatrixLookup::MatrixLookup(const MatrixLookup&,\n" 
103         << "                           const std::vector<size_t>&,\n"
104         << "                           const bool)...";
105  classifier::MatrixLookup m6(m2,one,true);
106  if (m6.rows()!=1 || m6.columns()!=m2.columns() || m6(0,0)!=m2(1,0) || 
107      m6(0,1)!=m2(1,1)) {
108    ok =false;
109    *error << "ERROR:" << std::endl;
110  }
111  else
112    *error << "Ok" << std::endl;
113
114  *error << "MatrixLookup::MatrixLookup(const size_t,const size_t,\n"
115         << "                           const double)...";
116  classifier::MatrixLookup m7(103,112,12);
117  if (m7.rows()!=103 || m7.columns()!=112 || m7(0,0)!=12) {
118    ok =false;
119    *error << "ERROR:" << std::endl;
120  }
121  else
122    *error << "Ok" << std::endl;
123
124
125  *error << "MatrixLookup::training_data(const std::vector<size_t>)...";
126  const classifier::MatrixLookup* TrnData = m2.training_data(one);
127  if (TrnData->rows() != m2.rows() || TrnData->columns()!=one.size()){
128    ok =false;
129    *error << "ERROR:" << std::endl;
130  }
131  else
132    *error << "Ok" << std::endl;
133  delete TrnData;
134
135  *error << "MatrixLookup::validation_data(const std::vector<size_t>,\n"
136         << "                              const std::vector<size_t>)...";
137  std::vector<size_t> val(23,2);
138  const classifier::MatrixLookup* ValData = m2.validation_data(one, val);
139  if (ValData->rows() != m2.rows() || TrnData->columns()!=val.size()){
140    ok =false;
141    *error << "ERROR:" << std::endl;
142  }
143  else
144    *error << "Ok" << std::endl;
145  delete ValData;
146
147  if (ok)
148    *error << "Test Ok." << std::endl;
149  if (error!=&std::cerr)
150    delete error;
151  return (ok ? 0 : -1);
152}
153
154gslapi::matrix matrix(size_t n)
155{
156  gslapi::matrix res(n,n);
157  for (size_t i=0;i<n;i++)
158    for (size_t j=0;j<n;j++)
159      res(i,j)=10*i+j;
160  return res;
161}
162
163
Note: See TracBrowser for help on using the repository browser.