diff options
Diffstat (limited to 'TAO/tests/OBV/Factory/client.cpp')
-rw-r--r-- | TAO/tests/OBV/Factory/client.cpp | 78 |
1 files changed, 55 insertions, 23 deletions
diff --git a/TAO/tests/OBV/Factory/client.cpp b/TAO/tests/OBV/Factory/client.cpp index 187913bb64f..6e512583d7d 100644 --- a/TAO/tests/OBV/Factory/client.cpp +++ b/TAO/tests/OBV/Factory/client.cpp @@ -35,6 +35,39 @@ parse_args (int argc, char *argv[]) return 0; } +bool +no_factory (OBV_FactoryTest::Test_ptr test) +{ + bool succeed = false; + ACE_TRY_NEW_ENV + { + // Calling this without a factory registred should give a marshal + // exception with minor code 1 + OBV_FactoryTest::BaseValue_var base_value = + test->get_base_value (ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_TRY_CHECK; + } + ACE_CATCH (CORBA::MARSHAL, ex) + { + if ((ex.minor() & 0xFFFU) == 1) + { + succeed = true; + } + } + ACE_CATCHANY + { + } + ACE_ENDTRY; + + if (!succeed) + { + ACE_ERROR ((LM_ERROR, + "(%t) ERROR, no_factory failed\n")); + } + + return succeed; +} + int ACE_TMAIN (int argc, ACE_TCHAR *argv[]) { @@ -49,8 +82,29 @@ ACE_TMAIN (int argc, ACE_TCHAR *argv[]) if (parse_args (convert.get_argc(), convert.get_ASCII_argv()) != 0) return 1; - // Create factories. + // Obtain reference to the object + CORBA::Object_var tmp = + orb->string_to_object(ior ACE_ENV_ARG_PARAMETER); + ACE_TRY_CHECK; + OBV_FactoryTest::Test_var test = + OBV_FactoryTest::Test::_narrow(tmp.in () ACE_ENV_ARG_PARAMETER); + ACE_TRY_CHECK; + + if (CORBA::is_nil (test.in ())) + { + ACE_ERROR_RETURN ((LM_DEBUG, + "Nil OBV_FactoryTest::Test reference <%s>\n", + ior), + 1); + } + + // Check if we get the correct exception with minor code because no + // factory has been set. + if (!no_factory (test.in ())) + return 1; + + // Create factories. OBV_FactoryTest::BaseValue_init *base_factory = 0; ACE_NEW_RETURN (base_factory, OBV_FactoryTest::BaseValue_init, @@ -62,8 +116,6 @@ ACE_TMAIN (int argc, ACE_TCHAR *argv[]) ACE_TRY_CHECK; base_factory->_remove_ref (); // release ownership - - OBV_FactoryTest::Value1_init *value1_factory = 0; ACE_NEW_RETURN (value1_factory, OBV_FactoryTest::Value1_init, @@ -75,8 +127,6 @@ ACE_TMAIN (int argc, ACE_TCHAR *argv[]) ACE_TRY_CHECK; value1_factory->_remove_ref (); - - OBV_FactoryTest::Value2_init *value2_factory = 0; ACE_NEW_RETURN (value2_factory, Value2_init_impl, @@ -88,24 +138,6 @@ ACE_TMAIN (int argc, ACE_TCHAR *argv[]) ACE_TRY_CHECK; value2_factory->_remove_ref (); - - // Obtain reference to the object - CORBA::Object_var tmp = - orb->string_to_object(ior ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - - OBV_FactoryTest::Test_var test = - OBV_FactoryTest::Test::_narrow(tmp.in () ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - - if (CORBA::is_nil (test.in ())) - { - ACE_ERROR_RETURN ((LM_DEBUG, - "Nil OBV_FactoryTest::Test reference <%s>\n", - ior), - 1); - } - // Now perform the test. I don't check return values. // I just hope to get MARSHAL. OBV_FactoryTest::BaseValue_var base_value = |