[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Commit-gnuradio] r6168 - in gnuradio/branches/developers/jcorgan/fg/gnu
From: |
jcorgan |
Subject: |
[Commit-gnuradio] r6168 - in gnuradio/branches/developers/jcorgan/fg/gnuradio-core/src: lib/runtime python/gnuradio/gr |
Date: |
Thu, 23 Aug 2007 11:25:53 -0600 (MDT) |
Author: jcorgan
Date: 2007-08-23 11:25:53 -0600 (Thu, 23 Aug 2007)
New Revision: 6168
Modified:
gnuradio/branches/developers/jcorgan/fg/gnuradio-core/src/lib/runtime/gr_flowgraph.cc
gnuradio/branches/developers/jcorgan/fg/gnuradio-core/src/lib/runtime/qa_gr_flowgraph.cc
gnuradio/branches/developers/jcorgan/fg/gnuradio-core/src/lib/runtime/qa_gr_flowgraph.h
gnuradio/branches/developers/jcorgan/fg/gnuradio-core/src/python/gnuradio/gr/qa_hier_block2.py
Log:
Refactor topology related QA code into cppunit-based QA in runtime directory.
Modified:
gnuradio/branches/developers/jcorgan/fg/gnuradio-core/src/lib/runtime/gr_flowgraph.cc
===================================================================
---
gnuradio/branches/developers/jcorgan/fg/gnuradio-core/src/lib/runtime/gr_flowgraph.cc
2007-08-23 01:14:32 UTC (rev 6167)
+++
gnuradio/branches/developers/jcorgan/fg/gnuradio-core/src/lib/runtime/gr_flowgraph.cc
2007-08-23 17:25:53 UTC (rev 6168)
@@ -118,7 +118,7 @@
void
gr_flowgraph::check_dst_not_used(const gr_endpoint &dst)
{
- // An destination is in use if it is already on the edge list
+ // A destination is in use if it is already on the edge list
for (gr_edge_viter_t p = d_edges.begin(); p != d_edges.end(); p++)
if (p->dst() == dst)
throw std::invalid_argument("dst already in use");
Modified:
gnuradio/branches/developers/jcorgan/fg/gnuradio-core/src/lib/runtime/qa_gr_flowgraph.cc
===================================================================
---
gnuradio/branches/developers/jcorgan/fg/gnuradio-core/src/lib/runtime/qa_gr_flowgraph.cc
2007-08-23 01:14:32 UTC (rev 6167)
+++
gnuradio/branches/developers/jcorgan/fg/gnuradio-core/src/lib/runtime/qa_gr_flowgraph.cc
2007-08-23 17:25:53 UTC (rev 6168)
@@ -26,6 +26,9 @@
#include <qa_gr_flowgraph.h>
#include <gr_flowgraph.h>
+#include <gr_nop.h>
+#include <gr_null_source.h>
+#include <gr_null_sink.h>
void qa_gr_flowgraph::t0()
{
@@ -33,3 +36,210 @@
CPPUNIT_ASSERT(fg);
}
+
+void qa_gr_flowgraph::t1_connect()
+{
+ gr_flowgraph_sptr fg = gr_make_flowgraph();
+
+ gr_block_sptr nop1 = gr_make_nop(sizeof(int));
+ gr_block_sptr nop2 = gr_make_nop(sizeof(int));
+
+ fg->connect(nop1, 0, nop2, 0);
+}
+
+void qa_gr_flowgraph::t2_connect_invalid_src_port_neg()
+{
+ gr_flowgraph_sptr fg = gr_make_flowgraph();
+
+ gr_block_sptr nop1 = gr_make_nop(sizeof(int));
+ gr_block_sptr nop2 = gr_make_nop(sizeof(int));
+
+ CPPUNIT_ASSERT_THROW(fg->connect(nop1, -1, nop2, 0), std::invalid_argument);
+}
+
+void qa_gr_flowgraph::t3_connect_src_port_exceeds()
+{
+ gr_flowgraph_sptr fg = gr_make_flowgraph();
+
+ gr_block_sptr src = gr_make_null_source(sizeof(int));
+ gr_block_sptr dst = gr_make_null_sink(sizeof(int));
+
+ CPPUNIT_ASSERT_THROW(fg->connect(src, 1, dst, 0), std::invalid_argument);
+}
+
+void qa_gr_flowgraph::t4_connect_invalid_dst_port_neg()
+{
+ gr_flowgraph_sptr fg = gr_make_flowgraph();
+
+ gr_block_sptr nop1 = gr_make_nop(sizeof(int));
+ gr_block_sptr nop2 = gr_make_nop(sizeof(int));
+
+ CPPUNIT_ASSERT_THROW(fg->connect(nop1, 0, nop2, -1), std::invalid_argument);
+}
+
+void qa_gr_flowgraph::t5_connect_dst_port_exceeds()
+{
+ gr_flowgraph_sptr fg = gr_make_flowgraph();
+
+ gr_block_sptr src = gr_make_null_source(sizeof(int));
+ gr_block_sptr dst = gr_make_null_sink(sizeof(int));
+
+ CPPUNIT_ASSERT_THROW(fg->connect(src, 0, dst, 1), std::invalid_argument);
+}
+
+void qa_gr_flowgraph::t6_connect_dst_in_use()
+{
+ gr_flowgraph_sptr fg = gr_make_flowgraph();
+
+ gr_block_sptr src1 = gr_make_null_source(sizeof(int));
+ gr_block_sptr src2 = gr_make_null_source(sizeof(int));
+ gr_block_sptr dst = gr_make_null_sink(sizeof(int));
+
+ fg->connect(src1, 0, dst, 0);
+ CPPUNIT_ASSERT_THROW(fg->connect(src2, 0, dst, 0), std::invalid_argument);
+}
+
+void qa_gr_flowgraph::t7_connect_one_src_two_dst()
+{
+ gr_flowgraph_sptr fg = gr_make_flowgraph();
+
+ gr_block_sptr src = gr_make_null_source(sizeof(int));
+ gr_block_sptr dst1 = gr_make_null_sink(sizeof(int));
+ gr_block_sptr dst2 = gr_make_null_sink(sizeof(int));
+
+ fg->connect(src, 0, dst1, 0);
+ fg->connect(src, 0, dst2, 0);
+}
+
+void qa_gr_flowgraph::t8_connect_type_mismatch()
+{
+ gr_flowgraph_sptr fg = gr_make_flowgraph();
+
+ gr_block_sptr nop1 = gr_make_nop(sizeof(char));
+ gr_block_sptr nop2 = gr_make_nop(sizeof(int));
+
+ CPPUNIT_ASSERT_THROW(fg->connect(nop1, 0, nop2, 0), std::invalid_argument);
+}
+
+void qa_gr_flowgraph::t9_disconnect()
+{
+ gr_flowgraph_sptr fg = gr_make_flowgraph();
+
+ gr_block_sptr nop1 = gr_make_nop(sizeof(int));
+ gr_block_sptr nop2 = gr_make_nop(sizeof(int));
+
+ fg->connect(nop1, 0, nop2, 0);
+ fg->disconnect(nop1, 0, nop2, 0);
+}
+
+void qa_gr_flowgraph::t10_disconnect_unconnected_block()
+{
+ gr_flowgraph_sptr fg = gr_make_flowgraph();
+
+ gr_block_sptr nop1 = gr_make_nop(sizeof(int));
+ gr_block_sptr nop2 = gr_make_nop(sizeof(int));
+ gr_block_sptr nop3 = gr_make_nop(sizeof(int));
+
+ fg->connect(nop1, 0, nop2, 0);
+ CPPUNIT_ASSERT_THROW(fg->disconnect(nop1, 0, nop3, 0),
std::invalid_argument);
+}
+
+void qa_gr_flowgraph::t11_disconnect_unconnected_port()
+{
+ gr_flowgraph_sptr fg = gr_make_flowgraph();
+
+ gr_block_sptr nop1 = gr_make_nop(sizeof(int));
+ gr_block_sptr nop2 = gr_make_nop(sizeof(int));
+
+ fg->connect(nop1, 0, nop2, 0);
+ CPPUNIT_ASSERT_THROW(fg->disconnect(nop1, 0, nop2, 1),
std::invalid_argument);
+}
+
+void qa_gr_flowgraph::t12_validate()
+{
+ gr_flowgraph_sptr fg = gr_make_flowgraph();
+
+ gr_block_sptr nop1 = gr_make_nop(sizeof(int));
+ gr_block_sptr nop2 = gr_make_nop(sizeof(int));
+
+ fg->connect(nop1, 0, nop2, 0);
+ fg->validate();
+}
+
+void qa_gr_flowgraph::t13_validate_missing_input_assignment()
+{
+ gr_flowgraph_sptr fg = gr_make_flowgraph();
+
+ gr_block_sptr nop1 = gr_make_nop(sizeof(int));
+ gr_block_sptr nop2 = gr_make_nop(sizeof(int));
+
+ fg->connect(nop1, 0, nop2, 0);
+ fg->connect(nop1, 0, nop2, 2);
+ CPPUNIT_ASSERT_THROW(fg->validate(), std::runtime_error);
+}
+
+void qa_gr_flowgraph::t14_validate_missing_output_assignment()
+{
+ gr_flowgraph_sptr fg = gr_make_flowgraph();
+
+ gr_block_sptr nop1 = gr_make_nop(sizeof(int));
+ gr_block_sptr nop2 = gr_make_nop(sizeof(int));
+
+ fg->connect(nop1, 0, nop2, 0);
+ fg->connect(nop1, 2, nop2, 1);
+ CPPUNIT_ASSERT_THROW(fg->validate(), std::runtime_error);
+}
+
+void qa_gr_flowgraph::t15_clear()
+{
+ gr_flowgraph_sptr fg = gr_make_flowgraph();
+
+ gr_block_sptr nop1 = gr_make_nop(sizeof(int));
+ gr_block_sptr nop2 = gr_make_nop(sizeof(int));
+
+ fg->connect(nop1, 0, nop2, 0);
+
+ CPPUNIT_ASSERT(fg->edges().size() == 1);
+ CPPUNIT_ASSERT(fg->calc_used_blocks().size() == 2);
+
+ fg->clear();
+
+ CPPUNIT_ASSERT(fg->edges().size() == 0);
+ CPPUNIT_ASSERT(fg->calc_used_blocks().size() == 0);
+}
+
+void qa_gr_flowgraph::t16_partition()
+{
+ gr_flowgraph_sptr fg = gr_make_flowgraph();
+
+ gr_block_sptr nop11 = gr_make_nop(sizeof(int));
+ gr_block_sptr nop12 = gr_make_nop(sizeof(int));
+ gr_block_sptr nop13 = gr_make_nop(sizeof(int));
+ gr_block_sptr nop14 = gr_make_nop(sizeof(int));
+
+ gr_block_sptr nop21 = gr_make_nop(sizeof(int));
+ gr_block_sptr nop22 = gr_make_nop(sizeof(int));
+ gr_block_sptr nop23 = gr_make_nop(sizeof(int));
+
+ gr_block_sptr nop31 = gr_make_nop(sizeof(int));
+ gr_block_sptr nop32 = gr_make_nop(sizeof(int));
+
+ // Build disjoint graph #1
+ fg->connect(nop11, 0, nop12, 0);
+ fg->connect(nop12, 0, nop13, 0);
+ fg->connect(nop13, 0, nop14, 0);
+
+ // Build disjoint graph #2
+ fg->connect(nop21, 0, nop22, 0);
+ fg->connect(nop22, 0, nop23, 0);
+
+ // Build disjoint graph #3
+ fg->connect(nop31, 0, nop32, 0);
+
+ std::vector<gr_basic_block_vector_t> graphs = fg->partition();
+
+ CPPUNIT_ASSERT(graphs.size() == 3);
+ CPPUNIT_ASSERT(graphs[0].size() == 4);
+ CPPUNIT_ASSERT(graphs[1].size() == 3);
+ CPPUNIT_ASSERT(graphs[2].size() == 2);
+}
Modified:
gnuradio/branches/developers/jcorgan/fg/gnuradio-core/src/lib/runtime/qa_gr_flowgraph.h
===================================================================
---
gnuradio/branches/developers/jcorgan/fg/gnuradio-core/src/lib/runtime/qa_gr_flowgraph.h
2007-08-23 01:14:32 UTC (rev 6167)
+++
gnuradio/branches/developers/jcorgan/fg/gnuradio-core/src/lib/runtime/qa_gr_flowgraph.h
2007-08-23 17:25:53 UTC (rev 6168)
@@ -29,14 +29,47 @@
class qa_gr_flowgraph : public CppUnit::TestCase
{
- CPPUNIT_TEST_SUITE(qa_gr_flowgraph);
+ CPPUNIT_TEST_SUITE(qa_gr_flowgraph);
+
+ CPPUNIT_TEST(t0);
+ CPPUNIT_TEST(t1_connect);
+ CPPUNIT_TEST(t2_connect_invalid_src_port_neg);
+ CPPUNIT_TEST(t3_connect_src_port_exceeds);
+ CPPUNIT_TEST(t4_connect_invalid_dst_port_neg);
+ CPPUNIT_TEST(t5_connect_dst_port_exceeds);
+ CPPUNIT_TEST(t6_connect_dst_in_use);
+ CPPUNIT_TEST(t7_connect_one_src_two_dst);
+ CPPUNIT_TEST(t8_connect_type_mismatch);
+ CPPUNIT_TEST(t9_disconnect);
+ CPPUNIT_TEST(t10_disconnect_unconnected_block);
+ CPPUNIT_TEST(t11_disconnect_unconnected_port);
+ CPPUNIT_TEST(t12_validate);
+ CPPUNIT_TEST(t13_validate_missing_input_assignment);
+ CPPUNIT_TEST(t14_validate_missing_output_assignment);
+ CPPUNIT_TEST(t15_clear);
+ CPPUNIT_TEST(t16_partition);
- CPPUNIT_TEST(t0);
-
- CPPUNIT_TEST_SUITE_END();
+ CPPUNIT_TEST_SUITE_END();
private:
- void t0();
+
+ void t0();
+ void t1_connect();
+ void t2_connect_invalid_src_port_neg();
+ void t3_connect_src_port_exceeds();
+ void t4_connect_invalid_dst_port_neg();
+ void t5_connect_dst_port_exceeds();
+ void t6_connect_dst_in_use();
+ void t7_connect_one_src_two_dst();
+ void t8_connect_type_mismatch();
+ void t9_disconnect();
+ void t10_disconnect_unconnected_block();
+ void t11_disconnect_unconnected_port();
+ void t12_validate();
+ void t13_validate_missing_input_assignment();
+ void t14_validate_missing_output_assignment();
+ void t15_clear();
+ void t16_partition();
};
#endif /* INCLUDED_QA_GR_FLOWGRAPH_H */
Modified:
gnuradio/branches/developers/jcorgan/fg/gnuradio-core/src/python/gnuradio/gr/qa_hier_block2.py
===================================================================
---
gnuradio/branches/developers/jcorgan/fg/gnuradio-core/src/python/gnuradio/gr/qa_hier_block2.py
2007-08-23 01:14:32 UTC (rev 6167)
+++
gnuradio/branches/developers/jcorgan/fg/gnuradio-core/src/python/gnuradio/gr/qa_hier_block2.py
2007-08-23 17:25:53 UTC (rev 6168)
@@ -20,14 +20,6 @@
self.assertEqual(1, hblock.output_signature().max_streams())
self.assertEqual(gr.sizeof_int,
hblock.output_signature().sizeof_stream_item(0))
- def test_001_connect_internal(self):
- hblock = gr.hier_block2("test_block",
- gr.io_signature(1,1,gr.sizeof_int),
- gr.io_signature(1,1,gr.sizeof_int))
- nop1 = gr.nop(gr.sizeof_int)
- nop2 = gr.nop(gr.sizeof_int)
- hblock.connect(nop1, nop2)
-
def test_002_connect_input(self):
hblock = gr.hier_block2("test_block",
gr.io_signature(1,1,gr.sizeof_int),
@@ -35,7 +27,7 @@
nop1 = gr.nop(gr.sizeof_int)
hblock.connect(hblock, nop1)
- def test_002a_connect_input_in_use(self):
+ def test_003_connect_input_in_use(self):
hblock = gr.hier_block2("test_block",
gr.io_signature(1,1,gr.sizeof_int),
gr.io_signature(1,1,gr.sizeof_int))
@@ -45,14 +37,14 @@
self.assertRaises(ValueError,
lambda: hblock.connect(hblock, nop2))
- def test_003_connect_output(self):
+ def test_004_connect_output(self):
hblock = gr.hier_block2("test_block",
gr.io_signature(1,1,gr.sizeof_int),
gr.io_signature(1,1,gr.sizeof_int))
nop1 = gr.nop(gr.sizeof_int)
hblock.connect(nop1, hblock)
- def test_003a_connect_output_in_use(self):
+ def test_005_connect_output_in_use(self):
hblock = gr.hier_block2("test_block",
gr.io_signature(1,1,gr.sizeof_int),
gr.io_signature(1,1,gr.sizeof_int))
@@ -62,7 +54,7 @@
self.assertRaises(ValueError,
lambda: hblock.connect(nop2, hblock))
- def test_004_connect_invalid_src_port_neg(self):
+ def test_006_connect_invalid_src_port_neg(self):
hblock = gr.hier_block2("test_block",
gr.io_signature(1,1,gr.sizeof_int),
gr.io_signature(1,1,gr.sizeof_int))
@@ -78,7 +70,7 @@
self.assertRaises(ValueError,
lambda: hblock.connect((hblock, 1), nop1))
- def test_006_connect_invalid_dst_port_neg(self):
+ def test_007_connect_invalid_dst_port_neg(self):
hblock = gr.hier_block2("test_block",
gr.io_signature(1,1,gr.sizeof_int),
gr.io_signature(1,1,gr.sizeof_int))
@@ -87,7 +79,7 @@
self.assertRaises(ValueError,
lambda: hblock.connect(nop1, (nop2, -1)))
- def test_007_connect_invalid_dst_port_exceeds(self):
+ def test_008_connect_invalid_dst_port_exceeds(self):
hblock = gr.hier_block2("test_block",
gr.io_signature(1,1,gr.sizeof_int),
gr.io_signature(1,1,gr.sizeof_int))
@@ -96,54 +88,11 @@
self.assertRaises(ValueError,
lambda: hblock.connect(nop1, (nop2, 1)))
- def test_008_connect_dst_port_in_use(self):
- hblock = gr.hier_block2("test_block",
- gr.io_signature(1,1,gr.sizeof_int),
- gr.io_signature(1,1,gr.sizeof_int))
- nop1 = gr.nop(gr.sizeof_int)
- nop2 = gr.nop(gr.sizeof_int)
- hblock.connect(nop1, nop2);
- self.assertRaises(ValueError,
- lambda: hblock.connect(nop1, nop2))
-
- def test_009_connect_one_src_two_dst(self):
+ def test_009_check_topology(self):
hblock = gr.top_block("test_block")
- src = gr.null_source(gr.sizeof_int)
- dst1 = gr.null_sink(gr.sizeof_int)
- dst2 = gr.null_sink(gr.sizeof_int)
- hblock.connect(src, dst1)
- hblock.connect(src, dst2)
-
- def test_010_connect_type_mismatch(self):
- hblock = gr.top_block("test_block")
- nop1 = gr.nop(gr.sizeof_char)
- nop2 = gr.nop(gr.sizeof_int)
- self.assertRaises(ValueError,
- lambda: hblock.connect(nop1, nop2))
-
- def test_011_check_topology(self):
- hblock = gr.top_block("test_block")
hblock.check_topology(0, 0)
- def test_012_disconnect(self):
- hblock = gr.top_block("test_block")
- nop1 = gr.nop(gr.sizeof_int)
- nop2 = gr.nop(gr.sizeof_int)
- hblock.connect(nop1, nop2)
- hblock.disconnect(nop1, nop2)
-
- def test_013_disconnect_not_connected(self):
- hblock = gr.hier_block2("test_block",
- gr.io_signature(1,1,gr.sizeof_int),
- gr.io_signature(1,1,gr.sizeof_int))
- nop1 = gr.nop(gr.sizeof_int)
- nop2 = gr.nop(gr.sizeof_int)
- nop3 = gr.nop(gr.sizeof_int)
- hblock.connect(nop1, nop2)
- self.assertRaises(ValueError,
- lambda: hblock.disconnect(nop1, nop3))
-
- def test_014_run(self):
+ def test_010_run(self):
expected = (1.0, 2.0, 3.0, 4.0)
hblock = gr.top_block("test_block")
src = gr.vector_source_f(expected, False)
@@ -158,7 +107,7 @@
self.assertEquals(expected, actual1)
self.assertEquals(expected, actual2)
- def test_015_disconnect_input(self):
+ def test_012_disconnect_input(self):
hblock = gr.hier_block2("test_block",
gr.io_signature(1,1,gr.sizeof_int),
gr.io_signature(1,1,gr.sizeof_int))
@@ -166,7 +115,7 @@
hblock.connect(hblock, nop1)
hblock.disconnect(hblock, nop1)
- def test_016_disconnect_input_not_connected(self):
+ def test_013_disconnect_input_not_connected(self):
hblock = gr.hier_block2("test_block",
gr.io_signature(1,1,gr.sizeof_int),
gr.io_signature(1,1,gr.sizeof_int))
@@ -176,7 +125,7 @@
self.assertRaises(ValueError,
lambda: hblock.disconnect(hblock, nop2))
- def test_017_disconnect_input_neg(self):
+ def test_014_disconnect_input_neg(self):
hblock = gr.hier_block2("test_block",
gr.io_signature(1,1,gr.sizeof_int),
gr.io_signature(1,1,gr.sizeof_int))
@@ -185,7 +134,7 @@
self.assertRaises(ValueError,
lambda: hblock.disconnect((hblock, -1), nop1))
- def test_018_disconnect_input_exceeds(self):
+ def test_015_disconnect_input_exceeds(self):
hblock = gr.hier_block2("test_block",
gr.io_signature(1,1,gr.sizeof_int),
gr.io_signature(1,1,gr.sizeof_int))
@@ -194,7 +143,7 @@
self.assertRaises(ValueError,
lambda: hblock.disconnect((hblock, 1), nop1))
- def test_019_disconnect_output(self):
+ def test_016_disconnect_output(self):
hblock = gr.hier_block2("test_block",
gr.io_signature(1,1,gr.sizeof_int),
gr.io_signature(1,1,gr.sizeof_int))
@@ -202,7 +151,7 @@
hblock.connect(nop1, hblock)
hblock.disconnect(nop1, hblock)
- def test_020_disconnect_output_not_connected(self):
+ def test_017_disconnect_output_not_connected(self):
hblock = gr.hier_block2("test_block",
gr.io_signature(1,1,gr.sizeof_int),
gr.io_signature(1,1,gr.sizeof_int))
@@ -212,7 +161,7 @@
self.assertRaises(ValueError,
lambda: hblock.disconnect(nop2, hblock))
- def test_021_disconnect_output_neg(self):
+ def test_018_disconnect_output_neg(self):
hblock = gr.hier_block2("test_block",
gr.io_signature(1,1,gr.sizeof_int),
gr.io_signature(1,1,gr.sizeof_int))
@@ -221,7 +170,7 @@
self.assertRaises(ValueError,
lambda: hblock.disconnect(nop1, (hblock, -1)))
- def test_022_disconnect_output_exceeds(self):
+ def test_019_disconnect_output_exceeds(self):
hblock = gr.hier_block2("test_block",
gr.io_signature(1,1,gr.sizeof_int),
gr.io_signature(1,1,gr.sizeof_int))
@@ -230,7 +179,7 @@
self.assertRaises(ValueError,
lambda: hblock.disconnect(nop1, (hblock, 1)))
- def test_023_run(self):
+ def test_020_run(self):
hblock = gr.top_block("test_block")
data = (1.0, 2.0, 3.0, 4.0)
src = gr.vector_source_f(data, False)
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Commit-gnuradio] r6168 - in gnuradio/branches/developers/jcorgan/fg/gnuradio-core/src: lib/runtime python/gnuradio/gr,
jcorgan <=