summaryrefslogtreecommitdiff
path: root/TAO/orbsvcs/tests/Property/main.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'TAO/orbsvcs/tests/Property/main.cpp')
-rw-r--r--TAO/orbsvcs/tests/Property/main.cpp530
1 files changed, 530 insertions, 0 deletions
diff --git a/TAO/orbsvcs/tests/Property/main.cpp b/TAO/orbsvcs/tests/Property/main.cpp
new file mode 100644
index 00000000000..11880dad81d
--- /dev/null
+++ b/TAO/orbsvcs/tests/Property/main.cpp
@@ -0,0 +1,530 @@
+// $Id$
+
+// ========================================================================
+//
+// = FILE
+// Program to test the property services.
+//
+// = DESCRIPTION
+// Here all the objects are at one address space. See the
+// client.cpp and server.cpp to see property calls on remote
+// objects.
+//
+// = AUTHOR
+// Alexander Babu Arulanthu <alex@cs.wustl.edu>
+//
+// ========================================================================
+
+#include "orbsvcs/CosPropertyS.h"
+#include "orbsvcs/Property/CosPropertyService_i.h"
+
+ACE_RCSID(CosPropertyService, main, "$Id$")
+
+class TAO_PropertySet_Tester
+{
+ // = TITLE
+ // The testing code for the PropertySet interface are grouped
+ // under the functions of this class.
+ //
+ // = DESCRIPTION
+ // Go thru the functions to understand the usage of the various
+ // methods of the PropertySet interaface.
+public:
+ friend class TAO_PropertyNamesIterator_Tester;
+ // He has to instantiate TAO_NamesIterator class using the instance
+ // of TAO_PropertySet.
+
+ TAO_PropertySet_Tester (void);
+ // Constructor.
+
+ ~TAO_PropertySet_Tester (void);
+ // Destructor.
+
+ int test_define_property (void);
+ // Defines a char,a short, a long, a float and a string property.
+
+ int test_get_number_of_properties (void);
+ // Gets the number of properties currently defined in the PropertySet.
+
+ int test_delete_property (const char *property_name);
+ // Delete a given property.
+
+ int test_is_property_defined (void);
+ // Check the following properties are defined or
+ // no. "char_property", "short_property" and a "string_property".
+
+ int test_get_property_value (void);
+ // Get the "float_property" and "string_property" and print them
+ // out.
+
+ int test_delete_properties (void);
+ // Delete char, short,long, and string properties.
+
+ int test_delete_all_properties (void);
+ // Delete all the properties.
+
+ int test_define_properties (void);
+ // Define a sequence of properties. a char, a short, a long, a float
+ // and a string.
+
+private:
+ TAO_PropertySet property_set_;
+ // The PropertySet.
+};
+
+class TAO_PropertyNamesIterator_Tester
+{
+ // = TITLE
+ // The testing code for the PropertyNamesIterator interface are grouped
+ // under the functions of this class.
+ //
+ // = DESCRIPTION
+ // Go thru the functions to understand the usage of the various
+ // methods of the PropertyNamesIterator interaface.
+public:
+ TAO_PropertyNamesIterator_Tester (TAO_PropertySet_Tester &propertyset_tester);
+ // Constructor. To make names iterator from the property set object.
+
+ ~TAO_PropertyNamesIterator_Tester (void);
+ // Destructor.
+
+ int test_next_one (void);
+ // Test next one method. Iterate thru all the names in the
+ // PropertySet and print them out.
+
+ int test_reset (void);
+ // Test the reset method.
+
+ int test_next_n (size_t n);
+ // Test the next_n method.
+private:
+ TAO_PropertyNamesIterator iterator_;
+ // Our names iterator.
+};
+
+
+// Constructor.
+TAO_PropertySet_Tester::TAO_PropertySet_Tester (void)
+{
+}
+
+// Destructor.
+TAO_PropertySet_Tester::~TAO_PropertySet_Tester (void)
+{
+}
+
+// Defines a char, a short, a long, a float and a string.
+int
+TAO_PropertySet_Tester::test_define_property (void)
+{
+ ACE_DEBUG ((LM_DEBUG,
+ "\nChecking define_property\n"));
+
+ CORBA::Any anyval;
+
+ // Prepare a char and "define" that in the PropertySet.
+ CORBA::Char ch = '#';
+ anyval <<= from_char (ch);
+ ch = '*';
+ anyval >>= to_char (ch);
+ ACE_DEBUG ((LM_DEBUG,
+ "Main : Char ch = %c\n",
+ ch));
+ property_set_.define_property ("char_property",
+ anyval);
+
+ // Prepare a Short and "define" that in the PropertySet.
+ CORBA::Short s = 3;
+ anyval <<= s;
+ s = 7;
+ anyval >>= s;
+ ACE_DEBUG ((LM_DEBUG,
+ "Main : Short s = %d\n",
+ s));
+ property_set_.define_property ("short_property",
+ anyval);
+
+
+ // Prepare a Long and "define" that in the PropertySet.
+ CORBA::Long l = 931232;
+ anyval <<= l;
+ l = 931233;
+ anyval >>= l;
+ ACE_DEBUG ((LM_DEBUG,
+ "Main : Long l = %d\n",
+ l));
+ CORBA::Any newany(anyval);
+
+ property_set_.define_property ("long_property",
+ anyval);
+
+ // Prepare a Float and "define" that in the PropertySet.
+ CORBA::Float f = 3.14;
+ anyval <<= f;
+ f = 4.14;
+ anyval >>= f;
+ ACE_DEBUG ((LM_DEBUG,
+ "Main : Float f = %f\n",
+ f));
+ property_set_.define_property ("float_property",
+ anyval);
+
+ // Prepare a String and "define" that in the PropertySet.
+ ACE_DEBUG ((LM_DEBUG,
+ "Main: Any holding String\n"));
+ CORBA::String_var strvar (CORBA::string_dup ("Test_String"));
+ anyval <<= strvar.in ();
+ CORBA::String newstr;
+ anyval >>= newstr;
+ ACE_DEBUG ((LM_DEBUG,
+ "Main: String : %s, From any : %s\n",
+ strvar.in (),
+ newstr));
+ property_set_.define_property ("string_property",
+ anyval);
+
+ return 0;
+}
+
+// Testing, get_number_of_properties.
+int
+TAO_PropertySet_Tester::test_get_number_of_properties (void)
+{
+ ACE_DEBUG ((LM_DEBUG,
+ "Main : Number of props : %d\n",
+ property_set_.get_number_of_properties ()));
+
+ return 0;
+}
+
+// Testing the delete_property. Delets property, with the given name,
+// if that exsists.
+int
+TAO_PropertySet_Tester::test_delete_property (const char *property_name)
+{
+ ACE_DEBUG ((LM_DEBUG, "\nChecking delete_property\n"));
+ property_set_.delete_property (property_name);
+
+ return 0;
+}
+
+// Gets the value of "short_property" and "string_property".
+
+int
+TAO_PropertySet_Tester::test_get_property_value (void)
+{
+ ACE_DEBUG ((LM_DEBUG,
+ "\nChecking get_property_value\n"));
+
+ CORBA::Any_ptr anyptr = property_set_.get_property_value ("short_property");
+
+ // Get the short value.
+ if (anyptr != 0)
+ {
+ CORBA::Short s;
+ *anyptr >>= s;
+ ACE_DEBUG ((LM_DEBUG,
+ "Short %d\n",
+ s));
+ }
+ else
+ ACE_DEBUG ((LM_DEBUG,
+ "Short property not found\n"));
+ // Get the string.
+ anyptr = property_set_.get_property_value ("string_property");
+ if (anyptr != 0)
+ {
+ CORBA::String str;
+ *anyptr >>= str;
+ ACE_DEBUG ((LM_DEBUG,
+ "Str %s\n", str));
+ }
+ else
+ ACE_DEBUG ((LM_DEBUG,
+ "string_property not found\n"));
+ return 0;
+}
+
+// Check the following properties are defined or no. "short_property",
+// "string_property" and "char_property".
+
+int
+TAO_PropertySet_Tester::test_is_property_defined (void)
+{
+ ACE_DEBUG ((LM_DEBUG,
+ "\nChecking is_property_defined ()\n"));
+ if (property_set_.is_property_defined ("short_property") == 0)
+ ACE_DEBUG ((LM_DEBUG,
+ "short_property not defined\n"));
+ else
+ ACE_DEBUG ((LM_DEBUG,
+ "short_property defined\n"));
+ if (property_set_.is_property_defined ("string_property") == 0)
+ ACE_DEBUG ((LM_DEBUG,
+ "string_property not defined\n"));
+ else
+ ACE_DEBUG ((LM_DEBUG,
+ "string_property defined\n"));
+ if (property_set_.is_property_defined ("char_property") == 0)
+ ACE_DEBUG ((LM_DEBUG,
+ "char_property not defined\n"));
+ else
+ ACE_DEBUG ((LM_DEBUG,
+ "char_property defined\n"));
+
+ return 0;
+}
+
+// Make a sequence of property names and delete them from the
+// PropertySet. Deleting char, short, long, float and string
+// properties.
+int
+TAO_PropertySet_Tester::test_delete_properties (void)
+{
+ ACE_DEBUG ((LM_DEBUG,
+ "\nChecking delete_properties == Deleting a sequence of Properties\n"));
+ CosPropertyService::PropertyNames prop_names;
+ prop_names.length (4);
+ prop_names [0] = CORBA::string_dup ("char_property");
+ prop_names [1] = CORBA::string_dup ("short_property");
+ prop_names [2] = CORBA::string_dup ("long_property");
+ prop_names [3] = CORBA::string_dup ("float_property");
+ ACE_DEBUG ((LM_DEBUG,
+ "Length of sequence %d, Maxlength : %d\n",
+ prop_names.length (),
+ prop_names.maximum ()));
+ property_set_.delete_properties (prop_names);
+
+ return 0;
+}
+
+// Defines a sequnce of properties containing, char, short, long,
+// float and string property in the property set.
+int
+TAO_PropertySet_Tester::test_define_properties (void)
+{
+ ACE_DEBUG ((LM_DEBUG,
+ "\nChecking define_properties == Defining sequence of properties\n"));
+ // TAO_TRY
+ // {
+ CosPropertyService::Properties nproperties;
+ nproperties.length (5);
+ CORBA::Any anyval;
+ // Prepare a char and "define" that in the PropertySet.
+ CORBA::Char ch = '#';
+ anyval <<= from_char (ch);
+ ch = '*';
+ anyval >>= to_char (ch);
+ nproperties[0].property_name = CORBA::string_dup ("char_property");
+ nproperties[0].property_value <<= from_char (ch);
+
+ // Prepare a Short and "define" that in the PropertySet.
+ CORBA::Short s = 3;
+ anyval <<= s;
+ s = 7;
+ anyval >>= s;
+ nproperties[1].property_name = CORBA::string_dup ("short_property");
+ nproperties[1].property_value <<= s;
+
+ // Prepare a Long and "define" that in the PropertySet.
+ CORBA::Long l = 931232;
+ anyval <<= l;
+ l = 931233;
+ anyval >>= l;
+ nproperties[2].property_name = CORBA::string_dup ("long_property");
+ nproperties[2].property_value <<= l;
+
+ // Prepare a Float and "define" that in the PropertySet.
+ CORBA::Float f = 3.14;
+ anyval <<= f;
+ f = 4.14;
+ anyval >>= f;
+ nproperties[3].property_name = CORBA::string_dup ("float_property");
+ nproperties[3].property_value <<= f;
+
+ // Prepare a String and "define" that in the PropertySet.
+ CORBA::String_var strvar (CORBA::string_dup ("Test_String"));
+ anyval <<= strvar.in ();
+ nproperties[4].property_name = CORBA::string_dup ("string_property");
+ nproperties[4].property_value <<= strvar.in ();
+
+ // Define this sequence of properties now.
+ property_set_.define_properties (nproperties);
+
+ return 0;
+}
+
+// Delete all the properties.
+int
+TAO_PropertySet_Tester::test_delete_all_properties (void)
+{
+ // Deleting all the properties
+ ACE_DEBUG ((LM_DEBUG,
+ "\nChecking delete_all_properties\n"));
+ int ret = property_set_.delete_all_properties ();
+ if (ret == 1)
+ ACE_DEBUG ((LM_DEBUG,
+ "All properties deleted, I guess\n"));
+ else
+ ACE_DEBUG ((LM_DEBUG,
+ "delete_all_properties failed\n"));
+ return 0;
+}
+
+// Constructor. To make names iterator from the property set object.
+TAO_PropertyNamesIterator_Tester::TAO_PropertyNamesIterator_Tester (TAO_PropertySet_Tester &propertyset_tester)
+ : iterator_ (propertyset_tester.property_set_)
+{
+}
+
+// Destructor.
+TAO_PropertyNamesIterator_Tester::~TAO_PropertyNamesIterator_Tester (void)
+{
+}
+
+// Test next one method. Iterate thru all the names in the
+// PropertySet and print them out.
+int
+TAO_PropertyNamesIterator_Tester::test_next_one (void)
+{
+ CORBA::String_var strvar;
+ ACE_DEBUG ((LM_DEBUG,
+ "\nTesting next_one of NamesIterator, Iterating thru names.\n"));
+ // Let us iterate, now.
+ int ret = iterator_.next_one (strvar.out ());
+ while (ret != 0)
+ {
+ ACE_DEBUG ((LM_DEBUG, "Str : %s\n", strvar.in ()));
+ ret = iterator_.next_one (strvar.out ());
+ }
+ return 0;
+}
+
+// Reset the names iterator.
+int
+TAO_PropertyNamesIterator_Tester::test_reset (void)
+{
+ ACE_DEBUG ((LM_DEBUG,
+ "Resetting (reset ()) the NamesIterator."));
+ iterator_.reset ();
+ return 0;
+}
+
+// Test the next_n method. Get the next n names and print them all.
+int
+TAO_PropertyNamesIterator_Tester::test_next_n (size_t n)
+{
+ CosPropertyService::PropertyNames_var pnames_var;
+ ACE_DEBUG ((LM_DEBUG,
+ "Checking next_n (), next %d\n",
+ n));
+ int ret = iterator_.next_n (n, pnames_var.out ());
+ if (ret == 0)
+ {
+ // Return if no more items in the iterator.
+ ACE_DEBUG ((LM_DEBUG,
+ "Iterator has no more items\n"));
+ return 0;
+ }
+ for (size_t i = 0; i < pnames_var.in ().length (); i++)
+ ACE_DEBUG ((LM_DEBUG,
+ "str %s \n",
+ (const char *) pnames_var[i]));
+ return 0;
+}
+
+int
+main (int argc, char *argv [])
+{
+ try
+ {
+ CORBA::ORB_var orb_var = CORBA::ORB_init (argc,
+ argv,
+ "internet");
+
+ // = Checking PropertySet interface.
+
+ ACE_DEBUG ((LM_DEBUG,
+ "\nTAO_PropertySet Testing\n"));
+ TAO_PropertySet_Tester propertyset_tester;
+
+ // Checking define_property. define a char, a short,a long, a float
+ // and a string.
+ propertyset_tester.test_define_property ();
+
+ // Test the number of properties and print it out.
+ propertyset_tester.test_get_number_of_properties ();
+
+ // Test delete property. Delete "string_property"
+ propertyset_tester.test_delete_property ("string_property");
+
+ // Test the number of properties and print it out.
+ propertyset_tester.test_get_number_of_properties ();
+
+ // Test delete_properties. Delete char, short, long and float.
+ propertyset_tester.test_delete_properties ();
+
+ // Test the number of properties and print it out.
+ propertyset_tester.test_get_number_of_properties ();
+
+ // Define a sequence of properties. char, short, long, float and
+ // string.
+ propertyset_tester.test_define_properties ();
+
+ // Test the number of properties and print it out.
+ propertyset_tester.test_get_number_of_properties ();
+
+ // Checking get_property_value. get the value of short and string.
+ propertyset_tester.test_get_property_value ();
+
+ // Checking delete_all_properties.
+ propertyset_tester.test_delete_all_properties ();
+
+ // Test the number of properties and print it out.
+ propertyset_tester.test_get_number_of_properties ();
+
+ // Define a sequence of properties. char, short, long, float and
+ // string.
+ propertyset_tester.test_define_properties ();
+
+ // Test the number of properties and print it out.
+ propertyset_tester.test_get_number_of_properties ();
+
+ // = Checking the PropertyNamesIterator interface.
+
+ ACE_DEBUG ((LM_DEBUG,
+ "\nTAO_PropertyNamesIterator Testing\n"));
+
+ // Construct the names iterator from the PropertySet object.
+ TAO_PropertyNamesIterator_Tester names_iterator_tester (propertyset_tester);
+
+ // Checking next_one. Iterate thru the property names.
+ names_iterator_tester.test_next_one ();
+
+ // Checking the reset () method.
+ names_iterator_tester.test_reset ();
+
+ // Iterating again thru the property names.
+ names_iterator_tester.test_next_one ();
+
+ // Reset again.
+ names_iterator_tester.test_reset ();
+
+ // Checking next_n. Prints out all the names it has got.
+ names_iterator_tester.test_next_n (6);
+
+ // Try next_n without resetting.
+ names_iterator_tester.test_next_n (6);
+ }
+ catch (const CORBA::SystemException& sysex)
+ {
+.print_exception ("System Exception");
+ return -1;
+ }
+ catch (const CORBA::UserException& userex)
+ {
+.print_exception ("User Exception");
+ return -1;
+ }
+ return 0;
+}