From 5f0c35b30324f8b9e54e5ed18b399356c2a2a635 Mon Sep 17 00:00:00 2001 From: Francois Bleibel <fbleibel@gmail.com> Date: Fri, 25 Jun 2010 10:38:32 +0900 Subject: [PATCH] Added forgotten test file test_dep.cpp --- unitTesting/signal/test_dep.cpp | 168 ++++++++++++++++++++++++++++++++ 1 file changed, 168 insertions(+) create mode 100644 unitTesting/signal/test_dep.cpp diff --git a/unitTesting/signal/test_dep.cpp b/unitTesting/signal/test_dep.cpp new file mode 100644 index 00000000..c004603d --- /dev/null +++ b/unitTesting/signal/test_dep.cpp @@ -0,0 +1,168 @@ +/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + * Copyright Projet VISTA / IRISA, 2003 + *+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + * + * File: test_categorie.cc + * Project: Traces + * Author: Nicolas Mansard + * + * Version control + * =============== + * + * $Id: test_boost.cpp,v 1.1.1.1 2006-07-03 05:17:37 nmansard Exp $ + * + * Description + * ============ + * + * Test la classe CategorieTrace. + * + * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/ + +/* -------------------------------------------------------------------------- */ +/* --- INCLUDES ------------------------------------------------------------- */ +/* -------------------------------------------------------------------------- */ +// #include <dynamic-graph/all-signals.h> +#include <dynamic-graph/all-signals.h> +//#include <sot/TimeDependancy.h> +#include <iostream> + +#include <MatrixAbstractLayer/boost.h> + +using namespace std; + +namespace ml = maal::boost; + + + + +template< class Res=double > +class DummyClass +{ + +public: + DummyClass( void ) : res(),appel(0),timedata(0) {} + + Res& fun( Res& res,int t) + { + appel++; timedata=t; + + cout << "Inside " << endl; + for( list< SignalTimeDependant<double,int>* >::iterator it=inputsig.begin(); + it!=inputsig.end();++it ) + { cout << *(*it) << endl; (*it)->access(timedata);} + for( list< SignalTimeDependant<ml::Vector,int>* >::iterator it=inputsigV.begin(); + it!=inputsigV.end();++it ) + { cout << *(*it) << endl; (*it)->access(timedata);} + + return res=(*this)(); + } + + list< SignalTimeDependant<double,int>* > inputsig; + list< SignalTimeDependant<ml::Vector,int>* > inputsigV; + + void add( SignalTimeDependant<double,int>& sig ){ inputsig.push_back(&sig); } + void add( SignalTimeDependant<ml::Vector,int>& sig ){ inputsigV.push_back(&sig); } + + Res operator() ( void ); + + Res res; + int appel; + int timedata; + +}; + +template< class Res > +Res DummyClass<Res>::operator() (void) +{ return this->res; } + +template<> +double DummyClass<double>::operator() (void) +{ + res=appel*timedata; return res; +} +template<> +ml::Vector DummyClass<ml::Vector>::operator() (void) +{ + res.resize(3); + res.fill(appel*timedata); return res; +} + + +// void dispArray( const SignalArray<int> &ar ) +// { +// for( unsigned int i=0;i<ar.rank;++i ) cout<<*ar.array[i]<<endl; +// } + +#include <vector> +int main( void ) +{ + DummyClass<double> pro1,pro3,pro5; + DummyClass<ml::Vector> pro2,pro4,pro6; + + SignalTimeDependant<double,int> sig5("Sig5"); + SignalTimeDependant<ml::Vector,int> sig6("Sig6"); + + SignalTimeDependant<ml::Vector,int> sig4(sig5,"Sig4"); + SignalTimeDependant<ml::Vector,int> sig2(sig4<<sig4<<sig4<<sig6,"Sig2"); + SignalTimeDependant<double,int> sig3(sig2<<sig5<<sig6,"Sig3"); + SignalTimeDependant<double,int> sig1( boost::bind(&DummyClass<double>::fun,pro1,_1,_2), + sig2<<sig3,"Sig1"); + +// cout << "--- Test Array ------ "<<endl; +// SignalArray<int> tarr(12); +// tarr<<sig3<<sig2;//+sig2+sig3; +// dispArray(sig4<<sig2<<sig3); +// dispArray(tarr); + + + + + //sig1.set( &DummyClass<double>::fun,pro1 ); + sig2.setFunction( boost::bind(&DummyClass<ml::Vector>::fun,pro2,_1,_2) ); + sig3.setFunction( boost::bind(&DummyClass<double>::fun,pro3,_1,_2) ); + sig4.setFunction( boost::bind(&DummyClass<ml::Vector>::fun,pro4,_1,_2) ); + sig5.setFunction( boost::bind(&DummyClass<double>::fun,pro5,_1,_2) ); + sig6.setFunction( boost::bind(&DummyClass<ml::Vector>::fun,pro6,_1,_2) ); + + // sig1.addDependancy(sig2); + // sig1.addDependancy(sig3); + // sig2.addDependancy(sig4); + // sig2.addDependancy(sig4); + // sig2.addDependancy(sig4); + // sig3.addDependancy(sig2); + // sig4.addDependancy(sig5); + // sig2.addDependancy(sig6); + // sig3.addDependancy(sig5); + // sig3.addDependancy(sig6); + + pro1.add(sig2); + pro1.add(sig3); + pro2.add(sig4); + pro2.add(sig4); + pro2.add(sig4); + pro3.add(sig2); + pro4.add(sig5); + pro2.add(sig6); + pro3.add(sig5); + pro3.add(sig6); + + //sig5.setDependancyType(TimeDependancy<int>::ALWAYS_READY); + //sig6.setDependancyType(TimeDependancy<int>::BOOL_DEPENDANT); + + sig6.setReady(); + + sig1.displayDependancies(cout)<<endl; + + cout << "Needs update?"<< endl << sig1.needUpdate(2) << endl; + sig1.access(2); + sig1.displayDependancies(cout)<<endl; + sig2.access(4); + sig1.displayDependancies(cout)<<endl; + sig1.access(4); + sig1.displayDependancies(cout)<<endl; + sig1.needUpdate(6); + sig1.needUpdate(6); + + return 0; + +} -- GitLab