summaryrefslogtreecommitdiff
path: root/TAO/tests/OBV/Supports/Supports_Test_impl.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'TAO/tests/OBV/Supports/Supports_Test_impl.cpp')
-rw-r--r--TAO/tests/OBV/Supports/Supports_Test_impl.cpp239
1 files changed, 239 insertions, 0 deletions
diff --git a/TAO/tests/OBV/Supports/Supports_Test_impl.cpp b/TAO/tests/OBV/Supports/Supports_Test_impl.cpp
new file mode 100644
index 00000000000..af9ec632601
--- /dev/null
+++ b/TAO/tests/OBV/Supports/Supports_Test_impl.cpp
@@ -0,0 +1,239 @@
+// $Id$
+// FUZZ: disable check_for_streams_include
+
+#include "Supports_Test_impl.h"
+
+#include "ace/streams.h"
+
+/* vt_graph_impl */
+
+vt_graph_impl::vt_graph_impl (void)
+{
+}
+
+// Creates a vt_graph_impl with the given number of nodes. There will be one
+// root node and the rest will be children of it.
+vt_graph_impl::vt_graph_impl (int num_nodes)
+{
+ nodes_ ().length (0);
+ add_node ("ROOT");
+ for (int i = 1; i < num_nodes; i++)
+ {
+ add_node ("CHILD");
+ nodes_ ()[0]->add_edge (nodes_ ()[i]);
+ }
+}
+
+// Get the number of nodes in the vt_graph.
+CORBA::Long vt_graph_impl::size (void)
+{
+ return nodes_ ().length ();
+}
+
+// Add a node to the graph with no edges.
+void
+vt_graph_impl::add_node (const char * name)
+{
+ Supports_Test::Node * new_node = 0;
+ ACE_NEW (new_node, node_impl (name));
+ nodes_ ().length (nodes_ ().length () + 1);
+ nodes_ ()[nodes_ ().length () - 1] = new_node;
+}
+
+// Print out information about each node.
+void
+vt_graph_impl::print (void)
+{
+ ACE_DEBUG ((LM_DEBUG,
+ "Printing graph data... \n"));
+
+ ACE_DEBUG ((LM_DEBUG,
+ "Number of nodes: [%d] \n", nodes_ ().length ()));
+
+ for (size_t i = 0; i < nodes_ ().length (); i++)
+ nodes_ ()[i]->print ();
+}
+
+
+/* vt_graph_init_impl - factory operations */
+
+Supports_Test::vt_graph *
+vt_graph_init_impl::create (void)
+{
+ vt_graph_impl * ret_val = 0;
+ ACE_NEW_RETURN (ret_val, vt_graph_impl, 0);
+ return ret_val;
+}
+
+CORBA::ValueBase *
+vt_graph_init_impl::create_for_unmarshal (void)
+{
+ vt_graph_impl * ret_val = 0;
+ ACE_NEW_RETURN (ret_val, vt_graph_impl, 0);
+ return ret_val;
+}
+
+
+/* test_impl */
+
+test_impl::test_impl (CORBA::ORB_ptr orb) : orb_ (CORBA::ORB::_duplicate (orb))
+{
+}
+
+test_impl::~test_impl (void)
+{
+ this->orb_->shutdown (0);
+}
+
+void
+test_impl::pass_obj_graph_in (
+ Supports_Test::graph * graph_param)
+{
+ ACE_ASSERT (graph_param->size () == 3);
+ graph_param->add_node ("NEW1");
+ ACE_ASSERT (graph_param->size () == 4);
+}
+
+void
+test_impl::pass_vt_graph_in (
+ Supports_Test::vt_graph * vt_graph_param)
+{
+ ACE_ASSERT (vt_graph_param->size () == 3);
+ vt_graph_param->add_node ("NEW1");
+ ACE_ASSERT (vt_graph_param->size () == 4);
+}
+
+void
+test_impl::pass_obj_graph_out (
+ Supports_Test::graph_out graph_param)
+{
+ vt_graph_impl * the_vt_graph = 0;
+ ACE_NEW (the_vt_graph, vt_graph_impl (4));
+ graph_param = the_vt_graph->_this ();
+
+ ACE_ASSERT (graph_param->size () == 4);
+ graph_param->add_node ("NEW1");
+ ACE_ASSERT (graph_param->size () == 5);
+}
+
+void
+test_impl::pass_vt_graph_out (
+ Supports_Test::vt_graph_out vt_graph_param)
+{
+
+ vt_graph_impl * the_vt_graph = 0;
+ ACE_NEW (the_vt_graph, vt_graph_impl (4));
+ vt_graph_param = the_vt_graph;
+
+ ACE_ASSERT (vt_graph_param->size () == 4);
+ vt_graph_param->add_node ("NEW1");
+ ACE_ASSERT (vt_graph_param->size () == 5);
+
+}
+
+void
+test_impl::pass_obj_graph_inout (
+ Supports_Test::graph * &graph_param)
+{
+
+ ACE_ASSERT (graph_param->size () == 6);
+ graph_param->add_node ("NEW3");
+ ACE_ASSERT (graph_param->size () == 7);
+}
+
+void
+test_impl::pass_vt_graph_inout (
+ Supports_Test::vt_graph * &vt_graph_param)
+{
+
+ ACE_ASSERT (vt_graph_param->size () == 6);
+ vt_graph_param->add_node ("NEW3");
+ ACE_ASSERT (vt_graph_param->size () == 7);
+
+}
+
+void
+test_impl::start (void)
+{
+}
+
+void
+test_impl::finish (void)
+{
+ this->_remove_ref ();
+}
+
+
+/* node_impl */
+
+node_impl::node_impl (void)
+{
+}
+
+// Initialize state.
+node_impl::node_impl (const char * name)
+{
+ name_ (name);
+ weight_ (0);
+ degree_ (0);
+ neighbors_ ().length (0);
+}
+
+// Add an edge from this node to neighbor.
+void
+node_impl::add_edge (Supports_Test::Node * neighbor)
+{
+ degree_ (degree_ () + 1);
+ neighbors_ ().length (neighbors_ ().length () + 1);
+ neighbors_ ()[neighbors_ ().length () - 1] = neighbor;
+ neighbor->_add_ref ();
+ return;
+}
+
+// Remove the edge from this node to neighbor.
+void
+node_impl::remove_edge (Supports_Test::Node * neighbor)
+{
+ for (unsigned int i = 0; i < neighbors_ ().length (); i++)
+ if (neighbors_ ()[i] == neighbor)
+ {
+ neighbors_ ()[i] = neighbors_ ()[neighbors_ ().length () - 1];
+ neighbors_ ().length (neighbors_ ().length () - 1);
+ neighbor->_remove_ref ();
+ }
+}
+
+void
+node_impl::change_weight (CORBA::Long new_weight)
+{
+ weight_ (new_weight);
+}
+
+void
+node_impl::print (void)
+{
+ cout << " Name: " << name_ () << endl;
+ cout << " Weight: " << weight_ () << endl;
+ cout << " Degree: " << degree_ () << endl;
+ cout << " Neighbors: " << endl;
+ for (size_t i = 0; i < neighbors_ ().length (); i++)
+ cout << " " << neighbors_ ()[i]->name_ () << endl;
+}
+
+/* node_init_impl - factory operations */
+
+Supports_Test::Node *
+node_init_impl::create (void)
+{
+ node_impl * ret_val = 0;
+ ACE_NEW_RETURN (ret_val, node_impl, 0);
+ return ret_val;
+}
+
+CORBA::ValueBase *
+node_init_impl::create_for_unmarshal (void)
+{
+ node_impl * ret_val = 0;
+ ACE_NEW_RETURN (ret_val, node_impl, 0);
+ return ret_val;
+}