From bc307084355829e200faf88fd71a8cbbcddf7e83 Mon Sep 17 00:00:00 2001
From: Francois Bleibel <fbleibel@gmail.com>
Date: Fri, 25 Jun 2010 10:40:09 +0900
Subject: [PATCH] Added forgotten test file test_ptr.cpp

---
 unitTesting/signal/test_ptr.cpp | 130 ++++++++++++++++++++++++++++++++
 1 file changed, 130 insertions(+)
 create mode 100644 unitTesting/signal/test_ptr.cpp

diff --git a/unitTesting/signal/test_ptr.cpp b/unitTesting/signal/test_ptr.cpp
new file mode 100644
index 00000000..ee3f8996
--- /dev/null
+++ b/unitTesting/signal/test_ptr.cpp
@@ -0,0 +1,130 @@
+/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ * Copyright Projet JRL-JAPAN, Tsukuba, 2007
+ *+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ *
+ * File:      test_ptr.cc
+ * Project:   Stack Of Tasks
+ * Author:    Nicolas Mansard
+ *
+ * Version control
+ * ===============
+ *
+ *  $Id$
+ *
+ * Description
+ * ============
+ *
+ *
+ * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
+
+/* -------------------------------------------------------------------------- */
+/* --- INCLUDES ------------------------------------------------------------- */
+/* -------------------------------------------------------------------------- */
+#include <sot-core/debug.h>
+#include <dynamic-graph/all-signals.h>
+#include <iostream>
+
+#include <MatrixAbstractLayer/boost.h>
+#include <sot-core/vector-utheta.h>
+#include <sot-core/exception-abstract.h>
+
+using namespace std;
+using namespace sot;
+
+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; 
+
+    sotDEBUG(5) << "Inside " << typeid(Res).name() <<endl;
+    for( list< SignalTimeDependant<double,int>* >::iterator it=inputsig.begin();
+	 it!=inputsig.end();++it )
+       { sotDEBUG(5) << *(*it) << endl; (*it)->access(timedata);}
+    for( list< SignalTimeDependant<ml::Vector,int>* >::iterator it=inputsigV.begin();
+	 it!=inputsigV.end();++it )
+      { sotDEBUG(5) << *(*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;
+}
+template<>
+VectorUTheta DummyClass<VectorUTheta>::operator() (void)
+{
+  res.fill(12.6); return res;
+}
+
+
+// void dispArray( const SignalArray<int> &ar )
+// {
+//   for( unsigned int i=0;i<ar.rank;++i ) sotDEBUG(5)<<*ar.array[i]<<endl;
+// }
+
+void funtest( ml::Vector& v ){ } 
+
+#include <vector>
+int main( void )
+{
+   DummyClass<VectorUTheta> pro3;
+
+   SignalTimeDependant<VectorUTheta,int> sig3(sotNOSIGNAL,"Sig3");
+   SignalPtr<ml::Vector,int> sigTo3( NULL,"SigTo3" );
+
+   ml::Vector v;
+   VectorUTheta v3;
+   funtest(v);
+   funtest(v3);
+
+   sig3.setFunction( boost::bind(&DummyClass<VectorUTheta>::fun,pro3,_1,_2) );
+   try 
+     {
+       sigTo3.plug(&sig3);
+     }
+   catch( sot::ExceptionAbstract& e ) { cout << e << endl; exit(1); }
+   
+   sig3.access(1); sig3.setReady();
+   sigTo3.access(2);
+   cout << sigTo3.access(2);
+
+  return 0;
+
+}
-- 
GitLab