commit-gnuradio
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Commit-gnuradio] r3413 - gnuradio/branches/developers/eb/mb/mblock/src/


From: eb
Subject: [Commit-gnuradio] r3413 - gnuradio/branches/developers/eb/mb/mblock/src/lib
Date: Fri, 25 Aug 2006 13:58:23 -0600 (MDT)

Author: eb
Date: 2006-08-25 13:58:23 -0600 (Fri, 25 Aug 2006)
New Revision: 3413

Modified:
   gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_mblock_impl.cc
   gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_port.h
   gnuradio/branches/developers/eb/mb/mblock/src/lib/qa_mblock_prims.cc
Log:
work-in-progress: QA code for define_port

Modified: gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_mblock_impl.cc
===================================================================
--- gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_mblock_impl.cc 
2006-08-25 19:56:23 UTC (rev 3412)
+++ gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_mblock_impl.cc 
2006-08-25 19:58:23 UTC (rev 3413)
@@ -80,7 +80,7 @@
 mb_port_sptr
 mb_mblock_impl::lookup_port(pmt_t port_name)
 {
-  for (std::vector<mb_port_sptr>::iterator p = d_ports.begin();
+  for (std::vector<mb_port_sptr>::const_iterator p = d_ports.begin();
        p != d_ports.end(); p++){
     if (pmt_eq(port_name, (*p)->port_name()))
       return *p;
@@ -94,10 +94,12 @@
 const std::vector<mb_port_class_sptr>
 mb_mblock_impl::peer_interface() const
 {
-  // FIXME
   std::vector<mb_port_class_sptr>      r;
+
+  for (std::vector<mb_port_sptr>::const_iterator p = d_ports.begin();
+       p != d_ports.end(); p++){
+    r.push_back((*p)->port_class());
+  }
+
   return r;
 }
-
-
-

Modified: gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_port.h
===================================================================
--- gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_port.h 2006-08-25 
19:56:23 UTC (rev 3412)
+++ gnuradio/branches/developers/eb/mb/mblock/src/lib/mb_port.h 2006-08-25 
19:58:23 UTC (rev 3413)
@@ -41,6 +41,8 @@
 
   ~mb_port();
 
+  mb_port_class_sptr        port_class() const { return d_port_class; }
+
   // delegations to d_port_class
 
   pmt_t                             port_name() const { return 
d_port_class->port_name(); }

Modified: gnuradio/branches/developers/eb/mb/mblock/src/lib/qa_mblock_prims.cc
===================================================================
--- gnuradio/branches/developers/eb/mb/mblock/src/lib/qa_mblock_prims.cc        
2006-08-25 19:56:23 UTC (rev 3412)
+++ gnuradio/branches/developers/eb/mb/mblock/src/lib/qa_mblock_prims.cc        
2006-08-25 19:58:23 UTC (rev 3413)
@@ -30,6 +30,8 @@
 static pmt_t s_cs = pmt_intern("cs");
 static pmt_t s_debug = pmt_intern("debug");
 
+// ----------------------------------------------------------------
+
 class dp_1 : public mb_mblock
 {
 public:
@@ -44,6 +46,8 @@
 
 dp_1::~dp_1(){}
 
+// ----------------------------------------------------------------
+
 class dp_2 : public mb_mblock
 {
 public:
@@ -54,11 +58,31 @@
 dp_2::dp_2(mb_runtime_sptr runtime)
   : mb_mblock(runtime)
 {
-  define_port(s_cs, "cs_protocol", false, mb_port_class::EXTERNAL);
+  define_port(s_cs, "cs-protocol", false, mb_port_class::EXTERNAL);
 }
 
 dp_2::~dp_2(){}
 
+// ----------------------------------------------------------------
+
+class dp_3 : public mb_mblock
+{
+public:
+  dp_3(mb_runtime_sptr runtime);
+  ~dp_3();
+};
+
+dp_3::dp_3(mb_runtime_sptr runtime)
+  : mb_mblock(runtime)
+{
+  define_port(s_cs, "cs-protocol", false, mb_port_class::EXTERNAL);
+  define_port(s_cs, "cs-protocol", false, mb_port_class::EXTERNAL);    // 
duplicate def
+}
+
+dp_3::~dp_3(){}
+
+// ----------------------------------------------------------------
+
 void
 qa_mblock_prims::test_define_ports()
 {
@@ -66,27 +90,38 @@
   std::vector<mb_port_class_sptr>      intf;
 
   mb_mblock_sptr       mb1 = mb_mblock_sptr(new dp_1(rt));
-
   intf = mb1->peer_interface();
   CPPUNIT_ASSERT_EQUAL(size_t(0), intf.size());
 
-  // raises runtime_error because of unknown protocol "cs_protocol"
+  // raises runtime_error because of unknown protocol "cs-protocol"
   CPPUNIT_ASSERT_THROW(mb_mblock_sptr(new dp_2(rt)), std::runtime_error);
 
   // define the protocol class
-  pmt_t pc = mb_make_protocol_class(pmt_intern("cs_protocol"),
+  pmt_t pc = mb_make_protocol_class(pmt_intern("cs-protocol"),
                                    pmt_cons(pmt_intern("start"),
                                             pmt_cons(pmt_intern("stop"),
                                                      PMT_NIL)),
                                    PMT_NIL);
 
-  std::cout << "pc = " << pc;
+  // std::cout << "pc = " << pc << '\n';
 
+  mb_mblock_sptr mb2 = mb_mblock_sptr(new dp_2(rt));
+
+  intf = mb2->peer_interface();
+  CPPUNIT_ASSERT_EQUAL(size_t(1), intf.size());
+  CPPUNIT_ASSERT(pmt_eq(s_cs, intf[0]->port_name()));
+
+
+  // raises pmt_exception because of duplicate port definition of "cs"
+  CPPUNIT_ASSERT_THROW(mb_mblock_sptr(new dp_3(rt)), pmt_exception);
+
+#if 0
   try {
     mb_mblock_sptr mb2 = mb_mblock_sptr(new dp_2(rt));
   }
   catch (pmt_exception &e){
-    std::cerr << e.msg() << '\n';
+    std::cerr << e.msg() << ' ' << e.obj() << '\n';
   }
+#endif
 
 }





reply via email to

[Prev in Thread] Current Thread [Next in Thread]