Add pmt type that wraps a gruel::msg_accepter.
[debian/gnuradio] / gruel / src / lib / pmt / qa_pmt_prims.cc
index 899674bbb18b4d2deaaff8cb60902c927b7a2f33..2c66b8fdb14a6ba6bdb53c02a964c2f678af170d 100644 (file)
@@ -23,6 +23,7 @@
 #include <qa_pmt_prims.h>
 #include <cppunit/TestAssert.h>
 #include <gruel/pmt.h>
+#include <gruel/msg_accepter.h>
 #include <stdio.h>
 #include <sstream>
 
@@ -453,6 +454,36 @@ qa_pmt_prims::test_any()
 
 // ------------------------------------------------------------------------
 
+class qa_pmt_msg_accepter_nop : public gruel::msg_accepter {
+public:
+  qa_pmt_msg_accepter_nop();
+  ~qa_pmt_msg_accepter_nop();
+  void post(pmt_t) { };
+};
+
+qa_pmt_msg_accepter_nop::~qa_pmt_msg_accepter_nop(){}
+
+void
+qa_pmt_prims::test_msg_accepter()
+{
+  pmt_t sym = pmt_intern("my-symbol");
+
+  boost::any a0;
+  a0 = std::string("Hello!");
+  pmt_t p0 = pmt_make_any(a0);
+
+  gruel::msg_accepter_sptr ma0 = gruel::msg_accepter_sptr(new qa_pmt_msg_accepter_nop());
+  pmt_t p1 = pmt_make_msg_accepter(ma0);
+
+  CPPUNIT_ASSERT_EQUAL(ma0.get(), pmt_msg_accepter_ref(p1).get());
+
+  CPPUNIT_ASSERT_THROW(pmt_msg_accepter_ref(sym), pmt_wrong_type);
+  CPPUNIT_ASSERT_THROW(pmt_msg_accepter_ref(p0),  pmt_wrong_type); // FIXME
+
+}
+
+// ------------------------------------------------------------------------
+
 void
 qa_pmt_prims::test_serialize()
 {