diff options
author | gokhale <gokhale@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 1998-06-26 19:47:47 +0000 |
---|---|---|
committer | gokhale <gokhale@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 1998-06-26 19:47:47 +0000 |
commit | 920215812ddd60c9338abfec6f570beaab5f88ac (patch) | |
tree | b800f4e596ffb0b2241b53983f5d3d8a7235df77 /TAO/tests/Param_Test/fixed_array.cpp | |
parent | f5cfa7057f53a675c01f12f4a82b366a3bc8e86e (diff) | |
download | ATCD-920215812ddd60c9338abfec6f570beaab5f88ac.tar.gz |
*** empty log message ***
Diffstat (limited to 'TAO/tests/Param_Test/fixed_array.cpp')
-rw-r--r-- | TAO/tests/Param_Test/fixed_array.cpp | 166 |
1 files changed, 166 insertions, 0 deletions
diff --git a/TAO/tests/Param_Test/fixed_array.cpp b/TAO/tests/Param_Test/fixed_array.cpp new file mode 100644 index 00000000000..0cb137e635c --- /dev/null +++ b/TAO/tests/Param_Test/fixed_array.cpp @@ -0,0 +1,166 @@ +// $Id$ + +// ============================================================================ +// +// = LIBRARY +// TAO/tests/Param_Test +// +// = FILENAME +// fixed_array.cpp +// +// = DESCRIPTION +// tests fixed size arrays +// +// = AUTHORS +// Aniruddha Gokhale +// +// ============================================================================ + +#include "helper.h" + +#include "fixed_array.h" + +// ************************************************************************ +// Test_Fixed_Array +// ************************************************************************ + +Test_Fixed_Array::Test_Fixed_Array (void) + : opname_ (CORBA::string_dup ("test_fixed_array")) +{ +} + +Test_Fixed_Array::~Test_Fixed_Array (void) +{ + CORBA::string_free (this->opname_); + this->opname_ = 0; +} + +const char * +Test_Fixed_Array::opname (void) const +{ + return this->opname_; +} + +int +Test_Fixed_Array::init_parameters (Param_Test_ptr objref, + CORBA::Environment &env) +{ + Generator *gen = GENERATOR::instance (); // value generator + + ACE_UNUSED_ARG (objref); + ACE_UNUSED_ARG (env); + + for (CORBA::ULong i=0; i < Param_Test::DIM1; i++) + { + this->in_ [i] = gen->gen_long (); + } + + return 0; +} + +int +Test_Fixed_Array::reset_parameters (void) +{ + + for (CORBA::ULong i=0; i < Param_Test::DIM1; i++) + { + this->inout_ [i] = 0; + this->out_ [i] = 0; + } + // free the return value array + Param_Test::Fixed_Array_free (this->ret_._retn ()); + return 0; +} + +int +Test_Fixed_Array::run_sii_test (Param_Test_ptr objref, + CORBA::Environment &env) +{ + this->ret_ = objref->test_fixed_array (this->in_, + this->inout_, + this->out_, + env); + return (env.exception () ? -1:0); +} + +int +Test_Fixed_Array::add_args (CORBA::NVList_ptr ¶m_list, + CORBA::NVList_ptr &retval, + CORBA::Environment &env) +{ + // We provide the top level memory + // the Any does not own any of these + CORBA::Any in_arg (Param_Test::_tc_Fixed_Array, this->in_, 0); + CORBA::Any inout_arg (Param_Test::_tc_Fixed_Array, this->inout_, 0); + CORBA::Any out_arg (Param_Test::_tc_Fixed_Array, this->out_, 0); + + // add parameters + (void)param_list->add_value ("l1", in_arg, CORBA::ARG_IN, env); + (void)param_list->add_value ("l2", inout_arg, CORBA::ARG_INOUT, env); + (void)param_list->add_value ("l3", out_arg, CORBA::ARG_OUT, env); + + // add return value type + (void)retval->item (0, env)->value ()->replace (Param_Test::_tc_Fixed_Array, + 0, // let the ORB allocate + 0, // does not own + env); + return 0; +} + +CORBA::Boolean +Test_Fixed_Array::check_validity (void) +{ + if (this->compare (this->in_, this->inout_) && + this->compare (this->in_, this->out_) && + this->compare (this->in_, this->ret_.in ())) + return 1; + else + return 0; +} + +CORBA::Boolean +Test_Fixed_Array::check_validity (CORBA::Request_ptr req) +{ + CORBA::Environment env; + + // we have forced the ORB to allocate memory for the return value so that we + // can test the >>= operator + Param_Test::Fixed_Array *ret; + Param_Test::Fixed_Array_forany forany (this->ret_.out ()); + *req->result ()->value () >>= forany; + return this->check_validity (); +} + +CORBA::Boolean +Test_Fixed_Array::compare (const Param_Test::Fixed_Array_slice *a1, + const Param_Test::Fixed_Array_slice *a2) +{ + for (CORBA::ULong i=0; i < Param_Test::DIM1; i++) + { + if (a1[i] != a2[i]) + return 0; + } + return 1; // success +} + +void +Test_Fixed_Array::print_values (void) +{ + ACE_DEBUG ((LM_DEBUG, "IN array\n")); + this->print (this->in_); + ACE_DEBUG ((LM_DEBUG, "INOUT array\n")); + this->print (this->inout_); + ACE_DEBUG ((LM_DEBUG, "OUT array\n")); + this->print (this->out_); + ACE_DEBUG ((LM_DEBUG, "RET array\n")); + this->print (this->ret_.in ()); +} + +void +Test_Fixed_Array::print (const Param_Test::Fixed_Array_slice *a) +{ + for (CORBA::ULong i = 0; i < Param_Test::DIM1; i++) + { + ACE_DEBUG ((LM_DEBUG, "\t\tElement #%d = %d\n",i, a[i])); + } +} |