libalaudio  1.14.5
tests/alacousticalmodel_test.cpp
00001 
00006 #include "gtest/gtest.h"
00007 #include "alaudio/alacousticalmodel.h"
00008 
00009 #include <almath/alrandom.h>
00010 #include <alvalue/alvalue.h>
00011 using boost::shared_ptr;
00012 
00013 TEST(forwardITD, Init) {
00014 
00018   boost::shared_ptr<ALAcousticalModel> model = ALAcousticalModel::getInstance();
00019 
00021   std::vector<int> pITDValues;
00022   std::vector<float> tmp;
00023   float titi;
00024 
00025   pITDValues.push_back(0);  pITDValues.push_back(0);
00026   pITDValues.push_back(0);  pITDValues.push_back(0);
00027   pITDValues.push_back(0);  pITDValues.push_back(0);
00028   tmp = model->forwardITD(pITDValues,titi);
00029   if(  (tmp[0]-0.0f)  > 0.001f
00030     || (tmp[1]-0.0f)  > 0.001f
00031     || (titi-0.0f)    > 0.001f) {
00032     std::cout << " test 1 " << std::endl;
00033     EXPECT_EQ(0, 4);
00034   }
00035 
00036   tmp.clear();
00037   pITDValues[0] = 1;  pITDValues[3] = 0;
00038   pITDValues[1] = 0;  pITDValues[4] = 0;
00039   pITDValues[2] = 0;  pITDValues[5] = 1;
00040   tmp = model->forwardITD(pITDValues,titi);
00041   if(  (tmp[0]-0.0f)    > 0.001f
00042     || (tmp[1]-0.0f)    > 0.001f
00043     || (titi-0.218264f) > 0.001f) {
00044     std::cout << " test 2 : failed" << std::endl;
00045     EXPECT_EQ(1, 4);
00046   }
00047 
00048   pITDValues[0] = -6;  pITDValues[3] = 0;
00049   pITDValues[1] = -6;  pITDValues[4] = 2;
00050   pITDValues[2] = -2;  pITDValues[5] = 5;
00051   tmp = model->forwardITD(pITDValues,titi);
00052   if(  (tmp[0]-(-0.354632f)) > 0.001f
00053     || (tmp[1]-0.444303f)    > 0.001f
00054     || (titi - 0.813129f)    > 0.001f) {
00055     std::cout << " test 3 : failed" << std::endl;
00056     EXPECT_EQ(2, 4);
00057   }
00058 
00059   pITDValues[0] = 10;  pITDValues[3] = 11;
00060   pITDValues[1] = -7;  pITDValues[4] = 14;
00061   pITDValues[2] = 8;  pITDValues[5] = 12;
00062   tmp = model->forwardITD(pITDValues,titi);
00063 
00064   if(  (tmp[0]-0.068907f) > 0.001f
00065     || (tmp[1]-0.971899f) > 0.001f
00066     || (titi-0.344555f)   > 0.001f) {
00067     std::cout << " test 4 : failed" << std::endl;
00068     EXPECT_EQ(3, 4);
00069   }
00070   EXPECT_EQ(4, 4);
00071 }
00072 
00073 TEST(getITDtest, Init) {
00074   boost::shared_ptr<ALAcousticalModel> model = ALAcousticalModel::getInstance();
00075   int a = 0;
00076   model->getITDmaxLR(a);
00077   EXPECT_EQ(a, 21) << "error : getITDmaxLR";
00078 
00079   int b = 0;
00080   model->getITDmaxFR(b);
00081   EXPECT_EQ(b, 14)<< "error : getITDmaxFR";
00082 
00083   std::vector<int> to;
00084   model->getITDmaxV6(to);
00085   EXPECT_EQ(to[0], 25 ) << "error : getITDmaxV6 [0]";
00086   EXPECT_EQ(to[1], 20 ) << "error : getITDmaxV6 [1]";
00087   EXPECT_EQ(to[2], 20 ) << "error : getITDmaxV6 [2]";
00088   EXPECT_EQ(to[3], 20 ) << "error : getITDmaxV6 [3]";
00089   EXPECT_EQ(to[4], 20 ) << "error : getITDmaxV6 [4]";
00090   EXPECT_EQ(to[5], 25 ) << "error : getITDmaxV6 [5]";
00091   EXPECT_EQ(4, 4);
00092 }
00093 
00094 TEST(computeAngleTest, Init) {
00095   boost::shared_ptr<ALAcousticalModel> model = ALAcousticalModel::getInstance();
00096   std::vector<float> to;
00097   std::vector<int> itd;
00098   itd.push_back(10);
00099   to = model->computeAngle(itd, "az");
00100   if(( to[0] - 0.577957) > 0.00001 )
00101     EXPECT_EQ(to[0], 10.0f ) << "error : computeAngle";
00102 }
00103 
00104 TEST(getValues, Init) {
00105   boost::shared_ptr<ALAcousticalModel> model = ALAcousticalModel::getInstance();
00106   float to = 0.0f;
00107 
00108   model->getSampleRate(to);
00109   EXPECT_EQ(to, 48000.0f ) << "error : getSampleRate";
00110 
00111   model->getSoundSpeed(to);
00112   EXPECT_EQ(to, 342.0f ) << "error : getSoundSpeed";
00113 
00114   std::vector<AL::Math::Position3D> micpos;
00115   model->getMicrosPosition(micpos);
00116   if( fabsf( micpos[0].x - (-0.005575f) ) > 0.0001f ) EXPECT_EQ(micpos[0].x, -0.005575f) << "error : getMicrosPosition 0 x";
00117   if( fabsf( micpos[0].y - (-0.0606f)   ) > 0.0001f ) EXPECT_EQ(micpos[0].y, -0.0606f  ) << "error : getMicrosPosition 0 y";
00118   if( fabsf( micpos[0].z - (-0.02365f)  ) > 0.0001f ) EXPECT_EQ(micpos[0].z, -0.0606f  ) << "error : getMicrosPosition 0 z";
00119 
00120   if( fabsf( micpos[1].x - (-0.005575f) ) > 0.0001f ) EXPECT_EQ(micpos[1].x, -0.005575f) << "error : getMicrosPosition 1 x";
00121   if( fabsf( micpos[1].y - ( 0.0606f)   ) > 0.0001f ) EXPECT_EQ(micpos[1].y,  0.0606f  ) << "error : getMicrosPosition 1 y";
00122   if( fabsf( micpos[1].z - (-0.02365f)  ) > 0.0001f ) EXPECT_EQ(micpos[1].z,  0.0606f  ) << "error : getMicrosPosition 1 z";
00123 
00124   if( fabsf( micpos[2].x - ( 0.054925f) ) > 0.0001f ) EXPECT_EQ(micpos[2].x,  0.054925f) << "error : getMicrosPosition 2 x";
00125   if( fabsf( micpos[2].y - ( 0.0f)      ) > 0.0001f ) EXPECT_EQ(micpos[2].y,  0.0f   )   << "error : getMicrosPosition 2 y";
00126   if( fabsf( micpos[2].z - ( 0.03475f)  ) > 0.0001f ) EXPECT_EQ(micpos[2].z,  0.0f   )   << "error : getMicrosPosition 2 z";
00127 
00128   if( fabsf( micpos[3].x - (-0.043775f) ) > 0.0001f ) EXPECT_EQ(micpos[3].x, -0.043775f) << "error : getMicrosPosition 3 x";
00129   if( fabsf( micpos[3].y - ( 0.0f)      ) > 0.0001f ) EXPECT_EQ(micpos[3].y,  0.0f   )   << "error : getMicrosPosition 3 y";
00130   if( fabsf( micpos[3].z - ( 0.01255f)  ) > 0.0001f ) EXPECT_EQ(micpos[3].z,  0.0f   )   << "error : getMicrosPosition 3 z";
00131 }
00132 
00133 TEST(forwardUpdate, Init) {
00134   boost::shared_ptr<ALAcousticalModel> model = ALAcousticalModel::getInstance();
00135   std::vector<float> ITDValues;
00136   std::vector<float> pITDValues;
00137   pITDValues.push_back(10.0f);  pITDValues.push_back(-7.0f);
00138   pITDValues.push_back(8.0f);   pITDValues.push_back(11.0f);
00139   pITDValues.push_back(14.0f);  pITDValues.push_back(12.0f);
00140 
00141   float toto;
00142   toto = model->forwardITDUpdateValues(pITDValues, ITDValues);
00143   if( fabsf( toto - (0.253429f))         > 0.0001f ) EXPECT_EQ(toto         , (0.253429f))  << "error : return forwardITDUpdateValues";
00144   if( fabsf( ITDValues[0] - (-4.66667f)) > 0.0001f ) EXPECT_EQ(ITDValues[0] , (-4.66667f))  << "error : forwardITDUpdateValues 0";
00145   if( fabsf( ITDValues[1] - (-6.0f)    ) > 0.0001f ) EXPECT_EQ(ITDValues[1] , (-6.0f)    )  << "error : forwardITDUpdateValues 1";
00146   if( fabsf( ITDValues[2] - ( 7.0f)  )   > 0.0001f ) EXPECT_EQ(ITDValues[2] , ( 7.0f)    )  << "error : forwardITDUpdateValues 2";
00147   if( fabsf( ITDValues[3] - (-1.33333f)) > 0.0001f ) EXPECT_EQ(ITDValues[3] , (-1.33333f))  << "error : forwardITDUpdateValues 3";
00148   if( fabsf( ITDValues[4] - (11.6667f))  > 0.0001f ) EXPECT_EQ(ITDValues[4] , (11.6667f) )  << "error : forwardITDUpdateValues 4";
00149   if( fabsf( ITDValues[5] - (13.0f)  )   > 0.0001f ) EXPECT_EQ(ITDValues[5] , (13.0f)    )  << "error : forwardITDUpdateValues 5";
00150 }
 All Classes Files Functions