commit-gnuradio
[Top][All Lists]
Advanced

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

[Commit-gnuradio] r4006 - in gnuradio/branches/developers/jcorgan/hier/g


From: jcorgan
Subject: [Commit-gnuradio] r4006 - in gnuradio/branches/developers/jcorgan/hier/gnuradio-core/src: lib/runtime python/gnuradio/gr
Date: Sun, 19 Nov 2006 21:37:01 -0700 (MST)

Author: jcorgan
Date: 2006-11-19 21:37:01 -0700 (Sun, 19 Nov 2006)
New Revision: 4006

Modified:
   
gnuradio/branches/developers/jcorgan/hier/gnuradio-core/src/lib/runtime/gr_simple_flowgraph.cc
   
gnuradio/branches/developers/jcorgan/hier/gnuradio-core/src/lib/runtime/gr_simple_flowgraph.h
   
gnuradio/branches/developers/jcorgan/hier/gnuradio-core/src/lib/runtime/gr_simple_flowgraph.i
   
gnuradio/branches/developers/jcorgan/hier/gnuradio-core/src/lib/runtime/gr_simple_flowgraph_detail.cc
   
gnuradio/branches/developers/jcorgan/hier/gnuradio-core/src/lib/runtime/gr_simple_flowgraph_detail.h
   
gnuradio/branches/developers/jcorgan/hier/gnuradio-core/src/python/gnuradio/gr/qa_simple_flowgraph.py
Log:
Work in progress, incomplete.

Modified: 
gnuradio/branches/developers/jcorgan/hier/gnuradio-core/src/lib/runtime/gr_simple_flowgraph.cc
===================================================================
--- 
gnuradio/branches/developers/jcorgan/hier/gnuradio-core/src/lib/runtime/gr_simple_flowgraph.cc
      2006-11-20 03:38:57 UTC (rev 4005)
+++ 
gnuradio/branches/developers/jcorgan/hier/gnuradio-core/src/lib/runtime/gr_simple_flowgraph.cc
      2006-11-20 04:37:01 UTC (rev 4006)
@@ -54,3 +54,9 @@
 {
     d_detail->connect(src_name, src_port, dst_name, dst_port);
 }
+
+void
+gr_simple_flowgraph::validate()
+{
+    d_detail->validate();
+}

Modified: 
gnuradio/branches/developers/jcorgan/hier/gnuradio-core/src/lib/runtime/gr_simple_flowgraph.h
===================================================================
--- 
gnuradio/branches/developers/jcorgan/hier/gnuradio-core/src/lib/runtime/gr_simple_flowgraph.h
       2006-11-20 03:38:57 UTC (rev 4005)
+++ 
gnuradio/branches/developers/jcorgan/hier/gnuradio-core/src/lib/runtime/gr_simple_flowgraph.h
       2006-11-20 04:37:01 UTC (rev 4006)
@@ -47,6 +47,7 @@
     void define_component(const std::string &name, gr_block_sptr block);    
     void connect(const std::string &src, int src_port, 
                 const std::string &dst, int dst_port);
+    void validate();
 };
 
 #endif /* INCLUDED_GR_SIMPLE_FLOWGRAPH_H */

Modified: 
gnuradio/branches/developers/jcorgan/hier/gnuradio-core/src/lib/runtime/gr_simple_flowgraph.i
===================================================================
--- 
gnuradio/branches/developers/jcorgan/hier/gnuradio-core/src/lib/runtime/gr_simple_flowgraph.i
       2006-11-20 03:38:57 UTC (rev 4005)
+++ 
gnuradio/branches/developers/jcorgan/hier/gnuradio-core/src/lib/runtime/gr_simple_flowgraph.i
       2006-11-20 04:37:01 UTC (rev 4006)
@@ -40,4 +40,6 @@
     void connect(const std::string &src, int src_port,
                 const std::string &dst, int dst_port)
        throw (std::invalid_argument);
+    void validate()
+       throw (std::runtime_error);
 };

Modified: 
gnuradio/branches/developers/jcorgan/hier/gnuradio-core/src/lib/runtime/gr_simple_flowgraph_detail.cc
===================================================================
--- 
gnuradio/branches/developers/jcorgan/hier/gnuradio-core/src/lib/runtime/gr_simple_flowgraph_detail.cc
       2006-11-20 03:38:57 UTC (rev 4005)
+++ 
gnuradio/branches/developers/jcorgan/hier/gnuradio-core/src/lib/runtime/gr_simple_flowgraph_detail.cc
       2006-11-20 04:37:01 UTC (rev 4006)
@@ -27,8 +27,11 @@
 #include <gr_simple_flowgraph.h>
 #include <gr_simple_flowgraph_detail.h>
 #include <gr_io_signature.h>
+#include <iostream>
 #include <stdexcept>
 
+#define GR_SIMPLE_FLOWGRAPH_DETAIL_DEBUG 1
+
 gr_edge_sptr 
 gr_make_edge(const std::string &src_name, int src_port, 
             const std::string &dst_name, int dst_port)
@@ -128,3 +131,15 @@
        throw std::invalid_argument("type size mismatch");
 }
 
+void
+gr_simple_flowgraph_detail::validate()
+{
+    if (GR_SIMPLE_FLOWGRAPH_DETAIL_DEBUG)
+       std::cout << "gr_simple_flowgraph_detail::validate()" << std::endl;
+
+    for (gr_component_miter_t p = d_components.begin(); p != 
d_components.end(); p++) {
+        if (GR_SIMPLE_FLOWGRAPH_DETAIL_DEBUG)
+           std::cout << "Validating block named " << p->first << ", which is "
+                     << p->second << std::endl;
+    }
+}

Modified: 
gnuradio/branches/developers/jcorgan/hier/gnuradio-core/src/lib/runtime/gr_simple_flowgraph_detail.h
===================================================================
--- 
gnuradio/branches/developers/jcorgan/hier/gnuradio-core/src/lib/runtime/gr_simple_flowgraph_detail.h
        2006-11-20 03:38:57 UTC (rev 4005)
+++ 
gnuradio/branches/developers/jcorgan/hier/gnuradio-core/src/lib/runtime/gr_simple_flowgraph_detail.h
        2006-11-20 04:37:01 UTC (rev 4006)
@@ -67,18 +67,25 @@
     gr_component_map_t d_components;
     gr_edge_vector_t   d_edges;
     
+    void define_component(const std::string &name, gr_block_sptr block);    
+    void connect(const std::string &src, int src_port, 
+                const std::string &dst, int dst_port);
     gr_block_sptr lookup_block(const std::string &name);
     void check_valid_port(gr_io_signature_sptr sig, int port);
     void check_dst_not_used(const std::string &name, int port);
     void check_type_match(gr_block_sptr src_block, int src_port,
                          gr_block_sptr dst_block, int dst_port);
+    void validate();
                          
 public:
     ~gr_simple_flowgraph_detail();
-
-    void define_component(const std::string &name, gr_block_sptr block);    
-    void connect(const std::string &src, int src_port, 
-                const std::string &dst, int dst_port);
 };
 
+inline std::ostream&
+operator <<(std::ostream& os, const gr_block_sptr p)
+{
+    os << "<gr_block " << p->name() << " (" << p->unique_id() << ")>";
+    return os;
+}
+
 #endif /* INCLUDED_GR_SIMPLE_FLOWGRAPH_H */

Modified: 
gnuradio/branches/developers/jcorgan/hier/gnuradio-core/src/python/gnuradio/gr/qa_simple_flowgraph.py
===================================================================
--- 
gnuradio/branches/developers/jcorgan/hier/gnuradio-core/src/python/gnuradio/gr/qa_simple_flowgraph.py
       2006-11-20 03:38:57 UTC (rev 4005)
+++ 
gnuradio/branches/developers/jcorgan/hier/gnuradio-core/src/python/gnuradio/gr/qa_simple_flowgraph.py
       2006-11-20 04:37:01 UTC (rev 4006)
@@ -5,79 +5,156 @@
 class test_simple_flowgraph(gr_unittest.TestCase):
 
     def setUp(self):
-       self.sfg = gr.simple_flowgraph()
+       pass
        
     def tearDown(self):
-       self.sfg = None
-               
+       pass
+                       
     def test_001_define_component(self):
-       self.sfg.define_component("src", gr.null_source(gr.sizeof_int))
-       self.sfg.define_component("dst", gr.null_sink(gr.sizeof_int))
+       sfg = gr.simple_flowgraph()
+       sfg.define_component("src", gr.null_source(gr.sizeof_int))
+       sfg.define_component("dst", gr.null_sink(gr.sizeof_int))
 
     def test_002_define_component_name_in_use(self):
-       self.sfg.define_component("src", gr.null_source(gr.sizeof_int))
+       sfg = gr.simple_flowgraph()
+       sfg.define_component("src", gr.null_source(gr.sizeof_int))
        self.assertRaises(ValueError, 
-           lambda: self.sfg.define_component("src", 
gr.null_sink(gr.sizeof_int)))
+           lambda: sfg.define_component("src", gr.null_sink(gr.sizeof_int)))
     
     def test_003_connect(self):
-       self.sfg.define_component("src", gr.null_source(gr.sizeof_int))
-       self.sfg.define_component("dst", gr.null_sink(gr.sizeof_int))
-       self.sfg.connect("src", 0, "dst", 0)
+       sfg = gr.simple_flowgraph()
+       sfg.define_component("src", gr.null_source(gr.sizeof_int))
+       sfg.define_component("dst", gr.null_sink(gr.sizeof_int))
+       sfg.connect("src", 0, "dst", 0)
 
     def test_004connect_unknown_src(self):
-       self.sfg.define_component("dst", gr.null_sink(gr.sizeof_int))
+       sfg = gr.simple_flowgraph()
+       sfg.define_component("dst", gr.null_sink(gr.sizeof_int))
        self.assertRaises(ValueError, 
-           lambda: self.sfg.connect("src", 0, "dst", 0))
+           lambda: sfg.connect("src", 0, "dst", 0))
     
     def test_005_connect_unknown_dst(self):
-       self.sfg.define_component("src", gr.null_source(gr.sizeof_int))
+       sfg = gr.simple_flowgraph()
+       sfg.define_component("src", gr.null_source(gr.sizeof_int))
        self.assertRaises(ValueError, 
-           lambda: self.sfg.connect("src", 0, "dst", 0))
+           lambda: sfg.connect("src", 0, "dst", 0))
 
     def test_006_connect_invalid_src_port_neg(self):
-       self.sfg.define_component("src", gr.null_source(gr.sizeof_int))
-       self.sfg.define_component("dst", gr.null_sink(gr.sizeof_int))
+       sfg = gr.simple_flowgraph()
+       sfg.define_component("src", gr.null_source(gr.sizeof_int))
+       sfg.define_component("dst", gr.null_sink(gr.sizeof_int))
        self.assertRaises(ValueError, 
-           lambda: self.sfg.connect("src", -1, "dst", 0))
+           lambda: sfg.connect("src", -1, "dst", 0))
 
     def test_007_connect_invalid_src_port_exceeds(self):
-       self.sfg.define_component("src", gr.null_source(gr.sizeof_int))
-       self.sfg.define_component("dst", gr.null_sink(gr.sizeof_int))
+       sfg = gr.simple_flowgraph()
+       sfg.define_component("src", gr.null_source(gr.sizeof_int))
+       sfg.define_component("dst", gr.null_sink(gr.sizeof_int))
        self.assertRaises(ValueError, 
-           lambda: self.sfg.connect("src", 1, "dst", 0))
+           lambda: sfg.connect("src", 1, "dst", 0))
 
     def test_008_connect_invalid_dst_port_neg(self):
-       self.sfg.define_component("src", gr.null_source(gr.sizeof_int))
-       self.sfg.define_component("dst", gr.null_sink(gr.sizeof_int))
+       sfg = gr.simple_flowgraph()
+       sfg.define_component("src", gr.null_source(gr.sizeof_int))
+       sfg.define_component("dst", gr.null_sink(gr.sizeof_int))
        self.assertRaises(ValueError, 
-           lambda: self.sfg.connect("src", 0, "dst", -1))
+           lambda: sfg.connect("src", 0, "dst", -1))
 
     def test_009_connect_invalid_dst_port_exceeds(self):
-       self.sfg.define_component("src", gr.null_source(gr.sizeof_int))
-       self.sfg.define_component("dst", gr.null_sink(gr.sizeof_int))
+       sfg = gr.simple_flowgraph()
+       sfg.define_component("src", gr.null_source(gr.sizeof_int))
+       sfg.define_component("dst", gr.null_sink(gr.sizeof_int))
        self.assertRaises(ValueError, 
-           lambda: self.sfg.connect("src", 0, "dst", 1))
+           lambda: sfg.connect("src", 0, "dst", 1))
 
     def test_010_connect_invalid_dst_port_in_use(self):
-       self.sfg.define_component("src1", gr.null_source(gr.sizeof_int))
-       self.sfg.define_component("src2", gr.null_source(gr.sizeof_int))
-       self.sfg.define_component("dst", gr.null_sink(gr.sizeof_int))
-       self.sfg.connect("src1", 0, "dst", 0)
+       sfg = gr.simple_flowgraph()
+       sfg.define_component("src1", gr.null_source(gr.sizeof_int))
+       sfg.define_component("src2", gr.null_source(gr.sizeof_int))
+       sfg.define_component("dst", gr.null_sink(gr.sizeof_int))
+       sfg.connect("src1", 0, "dst", 0)
        self.assertRaises(ValueError, 
-           lambda: self.sfg.connect("src2", 0, "dst", 0))
+           lambda: sfg.connect("src2", 0, "dst", 0))
     
     def test_011_connect_one_src_two_dst(self):
-       self.sfg.define_component("src", gr.null_source(gr.sizeof_int))
-       self.sfg.define_component("dst1", gr.null_sink(gr.sizeof_int))
-       self.sfg.define_component("dst2", gr.null_sink(gr.sizeof_int))
-       self.sfg.connect("src", 0, "dst1", 0)
-       self.sfg.connect("src", 0, "dst2", 0)
+       sfg = gr.simple_flowgraph()
+       sfg.define_component("src", gr.null_source(gr.sizeof_int))
+       sfg.define_component("dst1", gr.null_sink(gr.sizeof_int))
+       sfg.define_component("dst2", gr.null_sink(gr.sizeof_int))
+       sfg.connect("src", 0, "dst1", 0)
+       sfg.connect("src", 0, "dst2", 0)
 
     def test_012_connect_type_mismatch(self):
-       self.sfg.define_component("src", gr.null_source(gr.sizeof_int))
-       self.sfg.define_component("dst", gr.null_sink(gr.sizeof_char))
+       sfg = gr.simple_flowgraph()
+       sfg.define_component("src", gr.null_source(gr.sizeof_int))
+       sfg.define_component("dst", gr.null_sink(gr.sizeof_char))
        self.assertRaises(ValueError,
-           lambda: self.sfg.connect("src", 0, "dst", 0))
-               
+           lambda: sfg.connect("src", 0, "dst", 0))
+
+    def test_013_validate(self):
+       sfg = gr.simple_flowgraph()
+       sfg.define_component("src", gr.null_source(gr.sizeof_int))
+       sfg.define_component("dst1", gr.null_sink(gr.sizeof_int))
+       sfg.define_component("dst2", gr.null_sink(gr.sizeof_int))
+       sfg.connect("src", 0, "dst1", 0)
+       sfg.connect("src", 0, "dst2", 0)
+       sfg.validate()
+       
+    def test_014_validate(self):
+       sfg = gr.simple_flowgraph()
+       sfg.define_component("src1", gr.null_source (gr.sizeof_int))
+       sfg.define_component("nop1", gr.nop (gr.sizeof_int))
+       sfg.define_component("dst1", gr.null_sink (gr.sizeof_int))
+       sfg.define_component("dst2", gr.null_sink (gr.sizeof_int))
+       sfg.connect("src1", 0, "nop1", 0)
+       sfg.connect("src1", 0, "nop1", 1)
+       sfg.connect("nop1", 0, "dst1", 0)
+       sfg.connect("nop1", 1, "dst2", 0)
+       sfg.validate ()
+                                                                               
       
+    def test_015_validate(self):
+       sfg = gr.simple_flowgraph()
+       sfg.define_component("src1", gr.null_source (gr.sizeof_int))
+       sfg.define_component("nop1", gr.nop (gr.sizeof_int))
+       sfg.define_component("dst1", gr.null_sink (gr.sizeof_int))
+       sfg.define_component("dst2", gr.null_sink (gr.sizeof_int))
+       sfg.connect("src1", 0, "nop1", 0)
+       sfg.connect("src1", 0, "nop1", 2)
+       sfg.connect("nop1", 0, "dst1", 0)
+       sfg.connect("nop1", 1, "dst2", 0)
+       self.assertRaises(RuntimeError,
+           lambda: sfg.validate ())
+                                                                               
       
+    def test_016_validate(self):
+       sfg = gr.simple_flowgraph()
+       sfg.define_component("src1", gr.null_source (gr.sizeof_int))
+       sfg.define_component("nop1", gr.nop (gr.sizeof_int))
+       sfg.define_component("dst1", gr.null_sink (gr.sizeof_int))
+       sfg.define_component("dst2", gr.null_sink (gr.sizeof_int))
+       sfg.connect("src1", 0, "nop1", 0)
+       sfg.connect("src1", 0, "nop1", 1)
+       sfg.connect("nop1", 0, "dst1", 0)
+       sfg.connect("nop1", 2, "dst2", 0)
+       self.assertRaises(RuntimeError,
+           lambda: sfg.validate ())
+                                                                               
       
+    def test_017_validate(self):
+       sfg = gr.simple_flowgraph()
+       sfg.define_component("src1", gr.null_source (gr.sizeof_int))
+       sfg.define_component("nop1", gr.nop (gr.sizeof_int))
+       sfg.define_component("dst1", gr.null_sink (gr.sizeof_int))
+       sfg.define_component("dst2", gr.null_sink (gr.sizeof_int))
+       sfg.connect("src1", 0, "nop1", 0)
+       sfg.connect("src1", 0, "nop1", 1)
+       sfg.connect("nop1", 0, "dst1", 0)
+       sfg.connect("nop1", 1, "dst2", 0)
+       sfg.validate()
+       # pending implementation of disconnect
+       #sfg.disconnect("src1", 0, "nop1", 1)
+       #sfg.validate
+       #self.assertRaises(RuntimeError,
+       #    lambda: sfg.disconnect("src1", 0, "nop1", 1))
+                                                                               
       
+    
 if __name__ == "__main__":
     gr_unittest.main()





reply via email to

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