CorbaConsumerTests.cpp
Go to the documentation of this file.
1 // -*- C++ -*-
12 /*
13  * $Log: CorbaConsumerTests.cpp,v $
14  * Revision 1.2 2008/02/24 09:05:52 arafune
15  * Added some new tests.
16  *
17  * Revision 1.1 2007/12/20 07:50:17 arafune
18  * *** empty log message ***
19  *
20  * Revision 1.2 2007/01/12 14:48:30 n-ando
21  * The name of class to be tested was changed from Consumer to CorbaConsumer.
22  *
23  * Revision 1.1 2006/11/27 08:30:48 n-ando
24  * TestSuites are devided into each directory.
25  *
26  *
27  */
28 
29 #ifndef CorbaConsumer_cpp
30 #define CorbaConsumer_cpp
31 
32 #include <cppunit/ui/text/TestRunner.h>
33 #include <cppunit/TextOutputter.h>
34 #include <cppunit/extensions/TestFactoryRegistry.h>
35 #include <cppunit/extensions/HelperMacros.h>
36 #include <cppunit/TestAssert.h>
37 
38 #include <rtm/config_rtc.h>
39 #include "HelloSkel.h"
40 #include <rtm/CorbaConsumer.h>
41 
46 namespace CorbaConsumer
47 {
48  class hello_impl
49  : virtual public POA_hello,
50  virtual public PortableServer::RefCountServantBase
51  {
52  public:
54  virtual ~hello_impl() {};
55 
56  void hello_world()
57  {
59  }
60 
61  public:
63  };
64 
66  : public CppUnit::TestFixture
67  {
68  CPPUNIT_TEST_SUITE(CorbaConsumerTests);
69  CPPUNIT_TEST(test_setObject_and__ptr);
70  CPPUNIT_TEST(test_copy_constructor);
71  CPPUNIT_TEST(test_pointer_operator);
72  CPPUNIT_TEST(test_substitute_operator);
73  CPPUNIT_TEST(test_releaseObject);
74  CPPUNIT_TEST_SUITE_END();
75 
76  private:
77  CORBA::ORB_ptr m_pORB;
78  PortableServer::POA_ptr m_pPOA;
79 
80  public:
81 
86  {
87  int argc = 0;
88  char** argv = 0;
89 
90  m_pORB = CORBA::ORB_init(argc, argv);
91  m_pPOA = PortableServer::POA::_narrow(
92  m_pORB->resolve_initial_references("RootPOA"));
93  m_pPOA->the_POAManager()->activate();
94  }
95 
100  {
101  }
102 
106  virtual void setUp()
107  {
108  }
109 
113  virtual void tearDown()
114  {
115  }
116 
123  {
124  // Consumerに割り当てるオブジェクトを生成する hello_impl* helloImpl = new hello_impl(); PortableServer::ObjectId_var objId = m_pPOA->activate_object(helloImpl); // 生成したオブジェクトをConsumerにセットする RTC::CorbaConsumer<hello> consumer; consumer.setObject(m_pPOA->id_to_reference(objId)); // Consumerに割り当てたオブジェクトのメソッドを正しく呼び出せるか? CPPUNIT_ASSERT_EQUAL(0, helloImpl->m_invokedCount); consumer._ptr()->hello_world(); CPPUNIT_ASSERT_EQUAL(1, helloImpl->m_invokedCount); m_pPOA->deactivate_object(*m_pPOA->servant_to_id(helloImpl)); delete helloImpl; } /*! * @brief コピーコンストラクタのテスト * * - 既存のConsumerオブジェクトを元に、別の新たなConsumerをコピーコンストラクトし、 * その新たなConsumerオブジェクトに対してメソッドを正しく呼び出せるか? */ void test_copy_constructor() { // Consumerに割り当てるオブジェクトを生成する hello_impl* helloImpl = new hello_impl(); PortableServer::ObjectId_var objId = m_pPOA->activate_object(helloImpl); // 生成したオブジェクトをConsumerにセットする RTC::CorbaConsumer<hello> consumer; consumer.setObject(m_pPOA->id_to_reference(objId)); // 作成したConsumerオブジェクトを元に、別の新たなConsumerをコピーコンストラクトする RTC::CorbaConsumer<hello> consumerNew(consumer); // 新たに作成したConsumerに対して、メソッドを正しく呼び出せるか? CPPUNIT_ASSERT_EQUAL(0, helloImpl->m_invokedCount); consumerNew._ptr()->hello_world(); CPPUNIT_ASSERT_EQUAL(1, helloImpl->m_invokedCount); m_pPOA->deactivate_object(*m_pPOA->servant_to_id(helloImpl)); delete helloImpl; } /*! * @brief ポインタ演算子(operator->())のテスト * * - 生成したサーバントをConsumerにセットした後、 * Consumerのポインタ演算子を通してサーバントのメソッドを正しく呼び出せるか? */ void test_pointer_operator() { // Consumerに割り当てるオブジェクトを生成する hello_impl* helloImpl = new hello_impl(); PortableServer::ObjectId_var objId = m_pPOA->activate_object(helloImpl); // 生成したオブジェクトをConsumerにセットする RTC::CorbaConsumer<hello> consumer; consumer.setObject(m_pPOA->id_to_reference(objId)); // ポインタ演算子(->)を用いて、Consumerに割り当てたオブジェクトのメソッドを正しく呼び出せるか? CPPUNIT_ASSERT_EQUAL(0, helloImpl->m_invokedCount); consumer->hello_world(); CPPUNIT_ASSERT_EQUAL(1, helloImpl->m_invokedCount); m_pPOA->deactivate_object(*m_pPOA->servant_to_id(helloImpl)); delete helloImpl; } void test_substitute_operator() { // Consumerに割り当てるオブジェクトを生成する hello_impl* helloImpl = new hello_impl(); PortableServer::ObjectId_var objId = m_pPOA->activate_object(helloImpl); // 生成したオブジェクトをConsumerにセットする RTC::CorbaConsumer<hello> consumer; consumer.setObject(m_pPOA->id_to_reference(objId)); // 作成したConsumerオブジェクトを元に、別の新たなConsumerをコピーコンストラクトする RTC::CorbaConsumer<hello> consumerNew = consumer; // 新たに作成したConsumerに対して、メソッドを正しく呼び出せるか? CPPUNIT_ASSERT_EQUAL(0, helloImpl->m_invokedCount); consumerNew._ptr()->hello_world(); CPPUNIT_ASSERT_EQUAL(1, helloImpl->m_invokedCount); m_pPOA->deactivate_object(*m_pPOA->servant_to_id(helloImpl)); delete helloImpl; } /*! * @brief releaseObject()メソッドのテスト * * - releaseObject()呼出によって、保持されているオブジェクト参照が正しくクリアされるか? */ void test_releaseObject() { // Consumerに割り当てるオブジェクトを生成する hello_impl* helloImpl = new hello_impl(); PortableServer::ObjectId_var objId = m_pPOA->activate_object(helloImpl); // 生成したオブジェクトをConsumerにセットする RTC::CorbaConsumer<hello> consumer; consumer.setObject(m_pPOA->id_to_reference(objId)); // この時点では、オブジェクト参照は保持されているはず CPPUNIT_ASSERT(! CORBA::is_nil(consumer._ptr())); // releaseObject()呼出によって、保持されているオブジェクト参照が正しくクリアされるか? consumer.releaseObject(); CPPUNIT_ASSERT(CORBA::is_nil(consumer._ptr())); m_pPOA->deactivate_object(*m_pPOA->servant_to_id(helloImpl)); delete helloImpl; } }; }; // namespace CorbaConsumer /* * Register test suite */ CPPUNIT_TEST_SUITE_REGISTRATION(CorbaConsumer::CorbaConsumerTests); #ifdef LOCAL_MAIN int main(int argc, char* argv[]) { FORMAT format = TEXT_OUT; int target = 0; std::string xsl; std::string ns; std::string fname; std::ofstream ofs; int i(1); while (i < argc) { std::string arg(argv[i]); std::string next_arg; if (i + 1 < argc) next_arg = argv[i + 1]; else next_arg = ""; if (arg == "--text") { format = TEXT_OUT; break; } if (arg == "--xml") { if (next_arg == "") { fname = argv[0]; fname += ".xml"; } else { fname = next_arg; } format = XML_OUT; ofs.open(fname.c_str()); } if ( arg == "--compiler" ) { format = COMPILER_OUT; break; } if ( arg == "--cerr" ) { target = 1; break; } if ( arg == "--xsl" ) { if (next_arg == "") xsl = "default.xsl"; else xsl = next_arg; } if ( arg == "--namespace" ) { if (next_arg == "") { std::cerr << "no namespace specified" << std::endl; exit(1); } else { xsl = next_arg; } } ++i; } CppUnit::TextUi::TestRunner runner; if ( ns.empty() ) runner.addTest(CppUnit::TestFactoryRegistry::getRegistry().makeTest()); else runner.addTest(CppUnit::TestFactoryRegistry::getRegistry(ns).makeTest()); CppUnit::Outputter* outputter = 0; std::ostream* stream = target ? &std::cerr : &std::cout; switch ( format ) { case TEXT_OUT : outputter = new CppUnit::TextOutputter(&runner.result(),*stream); break; case XML_OUT : std::cout << "XML_OUT" << std::endl; outputter = new CppUnit::XmlOutputter(&runner.result(), ofs, "shift_jis"); static_cast<CppUnit::XmlOutputter*>(outputter)->setStyleSheet(xsl); break; case COMPILER_OUT : outputter = new CppUnit::CompilerOutputter(&runner.result(),*stream); break; } runner.setOutputter(outputter); runner.run(); return 0; // runner.run() ? 0 : 1; } #endif // MAIN #endif // CorbaConsumer_cpp
125  hello_impl* helloImpl = new hello_impl();
126  PortableServer::ObjectId_var objId = m_pPOA->activate_object(helloImpl);
127 
128  // 生成したオブジェクトをConsumerにセットする RTC::CorbaConsumer<hello> consumer; consumer.setObject(m_pPOA->id_to_reference(objId)); // Consumerに割り当てたオブジェクトのメソッドを正しく呼び出せるか? CPPUNIT_ASSERT_EQUAL(0, helloImpl->m_invokedCount); consumer._ptr()->hello_world(); CPPUNIT_ASSERT_EQUAL(1, helloImpl->m_invokedCount); m_pPOA->deactivate_object(*m_pPOA->servant_to_id(helloImpl)); delete helloImpl; } /*! * @brief コピーコンストラクタのテスト * * - 既存のConsumerオブジェクトを元に、別の新たなConsumerをコピーコンストラクトし、 * その新たなConsumerオブジェクトに対してメソッドを正しく呼び出せるか? */ void test_copy_constructor() { // Consumerに割り当てるオブジェクトを生成する hello_impl* helloImpl = new hello_impl(); PortableServer::ObjectId_var objId = m_pPOA->activate_object(helloImpl); // 生成したオブジェクトをConsumerにセットする RTC::CorbaConsumer<hello> consumer; consumer.setObject(m_pPOA->id_to_reference(objId)); // 作成したConsumerオブジェクトを元に、別の新たなConsumerをコピーコンストラクトする RTC::CorbaConsumer<hello> consumerNew(consumer); // 新たに作成したConsumerに対して、メソッドを正しく呼び出せるか? CPPUNIT_ASSERT_EQUAL(0, helloImpl->m_invokedCount); consumerNew._ptr()->hello_world(); CPPUNIT_ASSERT_EQUAL(1, helloImpl->m_invokedCount); m_pPOA->deactivate_object(*m_pPOA->servant_to_id(helloImpl)); delete helloImpl; } /*! * @brief ポインタ演算子(operator->())のテスト * * - 生成したサーバントをConsumerにセットした後、 * Consumerのポインタ演算子を通してサーバントのメソッドを正しく呼び出せるか? */ void test_pointer_operator() { // Consumerに割り当てるオブジェクトを生成する hello_impl* helloImpl = new hello_impl(); PortableServer::ObjectId_var objId = m_pPOA->activate_object(helloImpl); // 生成したオブジェクトをConsumerにセットする RTC::CorbaConsumer<hello> consumer; consumer.setObject(m_pPOA->id_to_reference(objId)); // ポインタ演算子(->)を用いて、Consumerに割り当てたオブジェクトのメソッドを正しく呼び出せるか? CPPUNIT_ASSERT_EQUAL(0, helloImpl->m_invokedCount); consumer->hello_world(); CPPUNIT_ASSERT_EQUAL(1, helloImpl->m_invokedCount); m_pPOA->deactivate_object(*m_pPOA->servant_to_id(helloImpl)); delete helloImpl; } void test_substitute_operator() { // Consumerに割り当てるオブジェクトを生成する hello_impl* helloImpl = new hello_impl(); PortableServer::ObjectId_var objId = m_pPOA->activate_object(helloImpl); // 生成したオブジェクトをConsumerにセットする RTC::CorbaConsumer<hello> consumer; consumer.setObject(m_pPOA->id_to_reference(objId)); // 作成したConsumerオブジェクトを元に、別の新たなConsumerをコピーコンストラクトする RTC::CorbaConsumer<hello> consumerNew = consumer; // 新たに作成したConsumerに対して、メソッドを正しく呼び出せるか? CPPUNIT_ASSERT_EQUAL(0, helloImpl->m_invokedCount); consumerNew._ptr()->hello_world(); CPPUNIT_ASSERT_EQUAL(1, helloImpl->m_invokedCount); m_pPOA->deactivate_object(*m_pPOA->servant_to_id(helloImpl)); delete helloImpl; } /*! * @brief releaseObject()メソッドのテスト * * - releaseObject()呼出によって、保持されているオブジェクト参照が正しくクリアされるか? */ void test_releaseObject() { // Consumerに割り当てるオブジェクトを生成する hello_impl* helloImpl = new hello_impl(); PortableServer::ObjectId_var objId = m_pPOA->activate_object(helloImpl); // 生成したオブジェクトをConsumerにセットする RTC::CorbaConsumer<hello> consumer; consumer.setObject(m_pPOA->id_to_reference(objId)); // この時点では、オブジェクト参照は保持されているはず CPPUNIT_ASSERT(! CORBA::is_nil(consumer._ptr())); // releaseObject()呼出によって、保持されているオブジェクト参照が正しくクリアされるか? consumer.releaseObject(); CPPUNIT_ASSERT(CORBA::is_nil(consumer._ptr())); m_pPOA->deactivate_object(*m_pPOA->servant_to_id(helloImpl)); delete helloImpl; } }; }; // namespace CorbaConsumer /* * Register test suite */ CPPUNIT_TEST_SUITE_REGISTRATION(CorbaConsumer::CorbaConsumerTests); #ifdef LOCAL_MAIN int main(int argc, char* argv[]) { FORMAT format = TEXT_OUT; int target = 0; std::string xsl; std::string ns; std::string fname; std::ofstream ofs; int i(1); while (i < argc) { std::string arg(argv[i]); std::string next_arg; if (i + 1 < argc) next_arg = argv[i + 1]; else next_arg = ""; if (arg == "--text") { format = TEXT_OUT; break; } if (arg == "--xml") { if (next_arg == "") { fname = argv[0]; fname += ".xml"; } else { fname = next_arg; } format = XML_OUT; ofs.open(fname.c_str()); } if ( arg == "--compiler" ) { format = COMPILER_OUT; break; } if ( arg == "--cerr" ) { target = 1; break; } if ( arg == "--xsl" ) { if (next_arg == "") xsl = "default.xsl"; else xsl = next_arg; } if ( arg == "--namespace" ) { if (next_arg == "") { std::cerr << "no namespace specified" << std::endl; exit(1); } else { xsl = next_arg; } } ++i; } CppUnit::TextUi::TestRunner runner; if ( ns.empty() ) runner.addTest(CppUnit::TestFactoryRegistry::getRegistry().makeTest()); else runner.addTest(CppUnit::TestFactoryRegistry::getRegistry(ns).makeTest()); CppUnit::Outputter* outputter = 0; std::ostream* stream = target ? &std::cerr : &std::cout; switch ( format ) { case TEXT_OUT : outputter = new CppUnit::TextOutputter(&runner.result(),*stream); break; case XML_OUT : std::cout << "XML_OUT" << std::endl; outputter = new CppUnit::XmlOutputter(&runner.result(), ofs, "shift_jis"); static_cast<CppUnit::XmlOutputter*>(outputter)->setStyleSheet(xsl); break; case COMPILER_OUT : outputter = new CppUnit::CompilerOutputter(&runner.result(),*stream); break; } runner.setOutputter(outputter); runner.run(); return 0; // runner.run() ? 0 : 1; } #endif // MAIN #endif // CorbaConsumer_cpp
129  RTC::CorbaConsumer<hello> consumer;
130  consumer.setObject(m_pPOA->id_to_reference(objId));
131 
132  // Consumerに割り当てたオブジェクトのメソッドを正しく呼び出せるか?
133  CPPUNIT_ASSERT_EQUAL(0, helloImpl->m_invokedCount);
134  consumer._ptr()->hello_world();
135  CPPUNIT_ASSERT_EQUAL(1, helloImpl->m_invokedCount);
136 
137  m_pPOA->deactivate_object(*m_pPOA->servant_to_id(helloImpl));
138  delete helloImpl;
139  }
140 
148  {
149  // Consumerに割り当てるオブジェクトを生成する hello_impl* helloImpl = new hello_impl(); PortableServer::ObjectId_var objId = m_pPOA->activate_object(helloImpl); // 生成したオブジェクトをConsumerにセットする RTC::CorbaConsumer<hello> consumer; consumer.setObject(m_pPOA->id_to_reference(objId)); // 作成したConsumerオブジェクトを元に、別の新たなConsumerをコピーコンストラクトする RTC::CorbaConsumer<hello> consumerNew(consumer); // 新たに作成したConsumerに対して、メソッドを正しく呼び出せるか? CPPUNIT_ASSERT_EQUAL(0, helloImpl->m_invokedCount); consumerNew._ptr()->hello_world(); CPPUNIT_ASSERT_EQUAL(1, helloImpl->m_invokedCount); m_pPOA->deactivate_object(*m_pPOA->servant_to_id(helloImpl)); delete helloImpl; } /*! * @brief ポインタ演算子(operator->())のテスト * * - 生成したサーバントをConsumerにセットした後、 * Consumerのポインタ演算子を通してサーバントのメソッドを正しく呼び出せるか? */ void test_pointer_operator() { // Consumerに割り当てるオブジェクトを生成する hello_impl* helloImpl = new hello_impl(); PortableServer::ObjectId_var objId = m_pPOA->activate_object(helloImpl); // 生成したオブジェクトをConsumerにセットする RTC::CorbaConsumer<hello> consumer; consumer.setObject(m_pPOA->id_to_reference(objId)); // ポインタ演算子(->)を用いて、Consumerに割り当てたオブジェクトのメソッドを正しく呼び出せるか? CPPUNIT_ASSERT_EQUAL(0, helloImpl->m_invokedCount); consumer->hello_world(); CPPUNIT_ASSERT_EQUAL(1, helloImpl->m_invokedCount); m_pPOA->deactivate_object(*m_pPOA->servant_to_id(helloImpl)); delete helloImpl; } void test_substitute_operator() { // Consumerに割り当てるオブジェクトを生成する hello_impl* helloImpl = new hello_impl(); PortableServer::ObjectId_var objId = m_pPOA->activate_object(helloImpl); // 生成したオブジェクトをConsumerにセットする RTC::CorbaConsumer<hello> consumer; consumer.setObject(m_pPOA->id_to_reference(objId)); // 作成したConsumerオブジェクトを元に、別の新たなConsumerをコピーコンストラクトする RTC::CorbaConsumer<hello> consumerNew = consumer; // 新たに作成したConsumerに対して、メソッドを正しく呼び出せるか? CPPUNIT_ASSERT_EQUAL(0, helloImpl->m_invokedCount); consumerNew._ptr()->hello_world(); CPPUNIT_ASSERT_EQUAL(1, helloImpl->m_invokedCount); m_pPOA->deactivate_object(*m_pPOA->servant_to_id(helloImpl)); delete helloImpl; } /*! * @brief releaseObject()メソッドのテスト * * - releaseObject()呼出によって、保持されているオブジェクト参照が正しくクリアされるか? */ void test_releaseObject() { // Consumerに割り当てるオブジェクトを生成する hello_impl* helloImpl = new hello_impl(); PortableServer::ObjectId_var objId = m_pPOA->activate_object(helloImpl); // 生成したオブジェクトをConsumerにセットする RTC::CorbaConsumer<hello> consumer; consumer.setObject(m_pPOA->id_to_reference(objId)); // この時点では、オブジェクト参照は保持されているはず CPPUNIT_ASSERT(! CORBA::is_nil(consumer._ptr())); // releaseObject()呼出によって、保持されているオブジェクト参照が正しくクリアされるか? consumer.releaseObject(); CPPUNIT_ASSERT(CORBA::is_nil(consumer._ptr())); m_pPOA->deactivate_object(*m_pPOA->servant_to_id(helloImpl)); delete helloImpl; } }; }; // namespace CorbaConsumer /* * Register test suite */ CPPUNIT_TEST_SUITE_REGISTRATION(CorbaConsumer::CorbaConsumerTests); #ifdef LOCAL_MAIN int main(int argc, char* argv[]) { FORMAT format = TEXT_OUT; int target = 0; std::string xsl; std::string ns; std::string fname; std::ofstream ofs; int i(1); while (i < argc) { std::string arg(argv[i]); std::string next_arg; if (i + 1 < argc) next_arg = argv[i + 1]; else next_arg = ""; if (arg == "--text") { format = TEXT_OUT; break; } if (arg == "--xml") { if (next_arg == "") { fname = argv[0]; fname += ".xml"; } else { fname = next_arg; } format = XML_OUT; ofs.open(fname.c_str()); } if ( arg == "--compiler" ) { format = COMPILER_OUT; break; } if ( arg == "--cerr" ) { target = 1; break; } if ( arg == "--xsl" ) { if (next_arg == "") xsl = "default.xsl"; else xsl = next_arg; } if ( arg == "--namespace" ) { if (next_arg == "") { std::cerr << "no namespace specified" << std::endl; exit(1); } else { xsl = next_arg; } } ++i; } CppUnit::TextUi::TestRunner runner; if ( ns.empty() ) runner.addTest(CppUnit::TestFactoryRegistry::getRegistry().makeTest()); else runner.addTest(CppUnit::TestFactoryRegistry::getRegistry(ns).makeTest()); CppUnit::Outputter* outputter = 0; std::ostream* stream = target ? &std::cerr : &std::cout; switch ( format ) { case TEXT_OUT : outputter = new CppUnit::TextOutputter(&runner.result(),*stream); break; case XML_OUT : std::cout << "XML_OUT" << std::endl; outputter = new CppUnit::XmlOutputter(&runner.result(), ofs, "shift_jis"); static_cast<CppUnit::XmlOutputter*>(outputter)->setStyleSheet(xsl); break; case COMPILER_OUT : outputter = new CppUnit::CompilerOutputter(&runner.result(),*stream); break; } runner.setOutputter(outputter); runner.run(); return 0; // runner.run() ? 0 : 1; } #endif // MAIN #endif // CorbaConsumer_cpp
150  hello_impl* helloImpl = new hello_impl();
151  PortableServer::ObjectId_var objId = m_pPOA->activate_object(helloImpl);
152 
153  // 生成したオブジェクトをConsumerにセットする RTC::CorbaConsumer<hello> consumer; consumer.setObject(m_pPOA->id_to_reference(objId)); // 作成したConsumerオブジェクトを元に、別の新たなConsumerをコピーコンストラクトする RTC::CorbaConsumer<hello> consumerNew(consumer); // 新たに作成したConsumerに対して、メソッドを正しく呼び出せるか? CPPUNIT_ASSERT_EQUAL(0, helloImpl->m_invokedCount); consumerNew._ptr()->hello_world(); CPPUNIT_ASSERT_EQUAL(1, helloImpl->m_invokedCount); m_pPOA->deactivate_object(*m_pPOA->servant_to_id(helloImpl)); delete helloImpl; } /*! * @brief ポインタ演算子(operator->())のテスト * * - 生成したサーバントをConsumerにセットした後、 * Consumerのポインタ演算子を通してサーバントのメソッドを正しく呼び出せるか? */ void test_pointer_operator() { // Consumerに割り当てるオブジェクトを生成する hello_impl* helloImpl = new hello_impl(); PortableServer::ObjectId_var objId = m_pPOA->activate_object(helloImpl); // 生成したオブジェクトをConsumerにセットする RTC::CorbaConsumer<hello> consumer; consumer.setObject(m_pPOA->id_to_reference(objId)); // ポインタ演算子(->)を用いて、Consumerに割り当てたオブジェクトのメソッドを正しく呼び出せるか? CPPUNIT_ASSERT_EQUAL(0, helloImpl->m_invokedCount); consumer->hello_world(); CPPUNIT_ASSERT_EQUAL(1, helloImpl->m_invokedCount); m_pPOA->deactivate_object(*m_pPOA->servant_to_id(helloImpl)); delete helloImpl; } void test_substitute_operator() { // Consumerに割り当てるオブジェクトを生成する hello_impl* helloImpl = new hello_impl(); PortableServer::ObjectId_var objId = m_pPOA->activate_object(helloImpl); // 生成したオブジェクトをConsumerにセットする RTC::CorbaConsumer<hello> consumer; consumer.setObject(m_pPOA->id_to_reference(objId)); // 作成したConsumerオブジェクトを元に、別の新たなConsumerをコピーコンストラクトする RTC::CorbaConsumer<hello> consumerNew = consumer; // 新たに作成したConsumerに対して、メソッドを正しく呼び出せるか? CPPUNIT_ASSERT_EQUAL(0, helloImpl->m_invokedCount); consumerNew._ptr()->hello_world(); CPPUNIT_ASSERT_EQUAL(1, helloImpl->m_invokedCount); m_pPOA->deactivate_object(*m_pPOA->servant_to_id(helloImpl)); delete helloImpl; } /*! * @brief releaseObject()メソッドのテスト * * - releaseObject()呼出によって、保持されているオブジェクト参照が正しくクリアされるか? */ void test_releaseObject() { // Consumerに割り当てるオブジェクトを生成する hello_impl* helloImpl = new hello_impl(); PortableServer::ObjectId_var objId = m_pPOA->activate_object(helloImpl); // 生成したオブジェクトをConsumerにセットする RTC::CorbaConsumer<hello> consumer; consumer.setObject(m_pPOA->id_to_reference(objId)); // この時点では、オブジェクト参照は保持されているはず CPPUNIT_ASSERT(! CORBA::is_nil(consumer._ptr())); // releaseObject()呼出によって、保持されているオブジェクト参照が正しくクリアされるか? consumer.releaseObject(); CPPUNIT_ASSERT(CORBA::is_nil(consumer._ptr())); m_pPOA->deactivate_object(*m_pPOA->servant_to_id(helloImpl)); delete helloImpl; } }; }; // namespace CorbaConsumer /* * Register test suite */ CPPUNIT_TEST_SUITE_REGISTRATION(CorbaConsumer::CorbaConsumerTests); #ifdef LOCAL_MAIN int main(int argc, char* argv[]) { FORMAT format = TEXT_OUT; int target = 0; std::string xsl; std::string ns; std::string fname; std::ofstream ofs; int i(1); while (i < argc) { std::string arg(argv[i]); std::string next_arg; if (i + 1 < argc) next_arg = argv[i + 1]; else next_arg = ""; if (arg == "--text") { format = TEXT_OUT; break; } if (arg == "--xml") { if (next_arg == "") { fname = argv[0]; fname += ".xml"; } else { fname = next_arg; } format = XML_OUT; ofs.open(fname.c_str()); } if ( arg == "--compiler" ) { format = COMPILER_OUT; break; } if ( arg == "--cerr" ) { target = 1; break; } if ( arg == "--xsl" ) { if (next_arg == "") xsl = "default.xsl"; else xsl = next_arg; } if ( arg == "--namespace" ) { if (next_arg == "") { std::cerr << "no namespace specified" << std::endl; exit(1); } else { xsl = next_arg; } } ++i; } CppUnit::TextUi::TestRunner runner; if ( ns.empty() ) runner.addTest(CppUnit::TestFactoryRegistry::getRegistry().makeTest()); else runner.addTest(CppUnit::TestFactoryRegistry::getRegistry(ns).makeTest()); CppUnit::Outputter* outputter = 0; std::ostream* stream = target ? &std::cerr : &std::cout; switch ( format ) { case TEXT_OUT : outputter = new CppUnit::TextOutputter(&runner.result(),*stream); break; case XML_OUT : std::cout << "XML_OUT" << std::endl; outputter = new CppUnit::XmlOutputter(&runner.result(), ofs, "shift_jis"); static_cast<CppUnit::XmlOutputter*>(outputter)->setStyleSheet(xsl); break; case COMPILER_OUT : outputter = new CppUnit::CompilerOutputter(&runner.result(),*stream); break; } runner.setOutputter(outputter); runner.run(); return 0; // runner.run() ? 0 : 1; } #endif // MAIN #endif // CorbaConsumer_cpp
154  RTC::CorbaConsumer<hello> consumer;
155  consumer.setObject(m_pPOA->id_to_reference(objId));
156 
157  // 作成したConsumerオブジェクトを元に、別の新たなConsumerをコピーコンストラクトする RTC::CorbaConsumer<hello> consumerNew(consumer); // 新たに作成したConsumerに対して、メソッドを正しく呼び出せるか? CPPUNIT_ASSERT_EQUAL(0, helloImpl->m_invokedCount); consumerNew._ptr()->hello_world(); CPPUNIT_ASSERT_EQUAL(1, helloImpl->m_invokedCount); m_pPOA->deactivate_object(*m_pPOA->servant_to_id(helloImpl)); delete helloImpl; } /*! * @brief ポインタ演算子(operator->())のテスト * * - 生成したサーバントをConsumerにセットした後、 * Consumerのポインタ演算子を通してサーバントのメソッドを正しく呼び出せるか? */ void test_pointer_operator() { // Consumerに割り当てるオブジェクトを生成する hello_impl* helloImpl = new hello_impl(); PortableServer::ObjectId_var objId = m_pPOA->activate_object(helloImpl); // 生成したオブジェクトをConsumerにセットする RTC::CorbaConsumer<hello> consumer; consumer.setObject(m_pPOA->id_to_reference(objId)); // ポインタ演算子(->)を用いて、Consumerに割り当てたオブジェクトのメソッドを正しく呼び出せるか? CPPUNIT_ASSERT_EQUAL(0, helloImpl->m_invokedCount); consumer->hello_world(); CPPUNIT_ASSERT_EQUAL(1, helloImpl->m_invokedCount); m_pPOA->deactivate_object(*m_pPOA->servant_to_id(helloImpl)); delete helloImpl; } void test_substitute_operator() { // Consumerに割り当てるオブジェクトを生成する hello_impl* helloImpl = new hello_impl(); PortableServer::ObjectId_var objId = m_pPOA->activate_object(helloImpl); // 生成したオブジェクトをConsumerにセットする RTC::CorbaConsumer<hello> consumer; consumer.setObject(m_pPOA->id_to_reference(objId)); // 作成したConsumerオブジェクトを元に、別の新たなConsumerをコピーコンストラクトする RTC::CorbaConsumer<hello> consumerNew = consumer; // 新たに作成したConsumerに対して、メソッドを正しく呼び出せるか? CPPUNIT_ASSERT_EQUAL(0, helloImpl->m_invokedCount); consumerNew._ptr()->hello_world(); CPPUNIT_ASSERT_EQUAL(1, helloImpl->m_invokedCount); m_pPOA->deactivate_object(*m_pPOA->servant_to_id(helloImpl)); delete helloImpl; } /*! * @brief releaseObject()メソッドのテスト * * - releaseObject()呼出によって、保持されているオブジェクト参照が正しくクリアされるか? */ void test_releaseObject() { // Consumerに割り当てるオブジェクトを生成する hello_impl* helloImpl = new hello_impl(); PortableServer::ObjectId_var objId = m_pPOA->activate_object(helloImpl); // 生成したオブジェクトをConsumerにセットする RTC::CorbaConsumer<hello> consumer; consumer.setObject(m_pPOA->id_to_reference(objId)); // この時点では、オブジェクト参照は保持されているはず CPPUNIT_ASSERT(! CORBA::is_nil(consumer._ptr())); // releaseObject()呼出によって、保持されているオブジェクト参照が正しくクリアされるか? consumer.releaseObject(); CPPUNIT_ASSERT(CORBA::is_nil(consumer._ptr())); m_pPOA->deactivate_object(*m_pPOA->servant_to_id(helloImpl)); delete helloImpl; } }; }; // namespace CorbaConsumer /* * Register test suite */ CPPUNIT_TEST_SUITE_REGISTRATION(CorbaConsumer::CorbaConsumerTests); #ifdef LOCAL_MAIN int main(int argc, char* argv[]) { FORMAT format = TEXT_OUT; int target = 0; std::string xsl; std::string ns; std::string fname; std::ofstream ofs; int i(1); while (i < argc) { std::string arg(argv[i]); std::string next_arg; if (i + 1 < argc) next_arg = argv[i + 1]; else next_arg = ""; if (arg == "--text") { format = TEXT_OUT; break; } if (arg == "--xml") { if (next_arg == "") { fname = argv[0]; fname += ".xml"; } else { fname = next_arg; } format = XML_OUT; ofs.open(fname.c_str()); } if ( arg == "--compiler" ) { format = COMPILER_OUT; break; } if ( arg == "--cerr" ) { target = 1; break; } if ( arg == "--xsl" ) { if (next_arg == "") xsl = "default.xsl"; else xsl = next_arg; } if ( arg == "--namespace" ) { if (next_arg == "") { std::cerr << "no namespace specified" << std::endl; exit(1); } else { xsl = next_arg; } } ++i; } CppUnit::TextUi::TestRunner runner; if ( ns.empty() ) runner.addTest(CppUnit::TestFactoryRegistry::getRegistry().makeTest()); else runner.addTest(CppUnit::TestFactoryRegistry::getRegistry(ns).makeTest()); CppUnit::Outputter* outputter = 0; std::ostream* stream = target ? &std::cerr : &std::cout; switch ( format ) { case TEXT_OUT : outputter = new CppUnit::TextOutputter(&runner.result(),*stream); break; case XML_OUT : std::cout << "XML_OUT" << std::endl; outputter = new CppUnit::XmlOutputter(&runner.result(), ofs, "shift_jis"); static_cast<CppUnit::XmlOutputter*>(outputter)->setStyleSheet(xsl); break; case COMPILER_OUT : outputter = new CppUnit::CompilerOutputter(&runner.result(),*stream); break; } runner.setOutputter(outputter); runner.run(); return 0; // runner.run() ? 0 : 1; } #endif // MAIN #endif // CorbaConsumer_cpp
158  RTC::CorbaConsumer<hello> consumerNew(consumer);
159 
160  // 新たに作成したConsumerに対して、メソッドを正しく呼び出せるか?
161  CPPUNIT_ASSERT_EQUAL(0, helloImpl->m_invokedCount);
162  consumerNew._ptr()->hello_world();
163  CPPUNIT_ASSERT_EQUAL(1, helloImpl->m_invokedCount);
164 
165  m_pPOA->deactivate_object(*m_pPOA->servant_to_id(helloImpl));
166  delete helloImpl;
167  }
168 
176  {
177  // Consumerに割り当てるオブジェクトを生成する hello_impl* helloImpl = new hello_impl(); PortableServer::ObjectId_var objId = m_pPOA->activate_object(helloImpl); // 生成したオブジェクトをConsumerにセットする RTC::CorbaConsumer<hello> consumer; consumer.setObject(m_pPOA->id_to_reference(objId)); // ポインタ演算子(->)を用いて、Consumerに割り当てたオブジェクトのメソッドを正しく呼び出せるか? CPPUNIT_ASSERT_EQUAL(0, helloImpl->m_invokedCount); consumer->hello_world(); CPPUNIT_ASSERT_EQUAL(1, helloImpl->m_invokedCount); m_pPOA->deactivate_object(*m_pPOA->servant_to_id(helloImpl)); delete helloImpl; } void test_substitute_operator() { // Consumerに割り当てるオブジェクトを生成する hello_impl* helloImpl = new hello_impl(); PortableServer::ObjectId_var objId = m_pPOA->activate_object(helloImpl); // 生成したオブジェクトをConsumerにセットする RTC::CorbaConsumer<hello> consumer; consumer.setObject(m_pPOA->id_to_reference(objId)); // 作成したConsumerオブジェクトを元に、別の新たなConsumerをコピーコンストラクトする RTC::CorbaConsumer<hello> consumerNew = consumer; // 新たに作成したConsumerに対して、メソッドを正しく呼び出せるか? CPPUNIT_ASSERT_EQUAL(0, helloImpl->m_invokedCount); consumerNew._ptr()->hello_world(); CPPUNIT_ASSERT_EQUAL(1, helloImpl->m_invokedCount); m_pPOA->deactivate_object(*m_pPOA->servant_to_id(helloImpl)); delete helloImpl; } /*! * @brief releaseObject()メソッドのテスト * * - releaseObject()呼出によって、保持されているオブジェクト参照が正しくクリアされるか? */ void test_releaseObject() { // Consumerに割り当てるオブジェクトを生成する hello_impl* helloImpl = new hello_impl(); PortableServer::ObjectId_var objId = m_pPOA->activate_object(helloImpl); // 生成したオブジェクトをConsumerにセットする RTC::CorbaConsumer<hello> consumer; consumer.setObject(m_pPOA->id_to_reference(objId)); // この時点では、オブジェクト参照は保持されているはず CPPUNIT_ASSERT(! CORBA::is_nil(consumer._ptr())); // releaseObject()呼出によって、保持されているオブジェクト参照が正しくクリアされるか? consumer.releaseObject(); CPPUNIT_ASSERT(CORBA::is_nil(consumer._ptr())); m_pPOA->deactivate_object(*m_pPOA->servant_to_id(helloImpl)); delete helloImpl; } }; }; // namespace CorbaConsumer /* * Register test suite */ CPPUNIT_TEST_SUITE_REGISTRATION(CorbaConsumer::CorbaConsumerTests); #ifdef LOCAL_MAIN int main(int argc, char* argv[]) { FORMAT format = TEXT_OUT; int target = 0; std::string xsl; std::string ns; std::string fname; std::ofstream ofs; int i(1); while (i < argc) { std::string arg(argv[i]); std::string next_arg; if (i + 1 < argc) next_arg = argv[i + 1]; else next_arg = ""; if (arg == "--text") { format = TEXT_OUT; break; } if (arg == "--xml") { if (next_arg == "") { fname = argv[0]; fname += ".xml"; } else { fname = next_arg; } format = XML_OUT; ofs.open(fname.c_str()); } if ( arg == "--compiler" ) { format = COMPILER_OUT; break; } if ( arg == "--cerr" ) { target = 1; break; } if ( arg == "--xsl" ) { if (next_arg == "") xsl = "default.xsl"; else xsl = next_arg; } if ( arg == "--namespace" ) { if (next_arg == "") { std::cerr << "no namespace specified" << std::endl; exit(1); } else { xsl = next_arg; } } ++i; } CppUnit::TextUi::TestRunner runner; if ( ns.empty() ) runner.addTest(CppUnit::TestFactoryRegistry::getRegistry().makeTest()); else runner.addTest(CppUnit::TestFactoryRegistry::getRegistry(ns).makeTest()); CppUnit::Outputter* outputter = 0; std::ostream* stream = target ? &std::cerr : &std::cout; switch ( format ) { case TEXT_OUT : outputter = new CppUnit::TextOutputter(&runner.result(),*stream); break; case XML_OUT : std::cout << "XML_OUT" << std::endl; outputter = new CppUnit::XmlOutputter(&runner.result(), ofs, "shift_jis"); static_cast<CppUnit::XmlOutputter*>(outputter)->setStyleSheet(xsl); break; case COMPILER_OUT : outputter = new CppUnit::CompilerOutputter(&runner.result(),*stream); break; } runner.setOutputter(outputter); runner.run(); return 0; // runner.run() ? 0 : 1; } #endif // MAIN #endif // CorbaConsumer_cpp
178  hello_impl* helloImpl = new hello_impl();
179  PortableServer::ObjectId_var objId = m_pPOA->activate_object(helloImpl);
180 
181  // 生成したオブジェクトをConsumerにセットする RTC::CorbaConsumer<hello> consumer; consumer.setObject(m_pPOA->id_to_reference(objId)); // ポインタ演算子(->)を用いて、Consumerに割り当てたオブジェクトのメソッドを正しく呼び出せるか? CPPUNIT_ASSERT_EQUAL(0, helloImpl->m_invokedCount); consumer->hello_world(); CPPUNIT_ASSERT_EQUAL(1, helloImpl->m_invokedCount); m_pPOA->deactivate_object(*m_pPOA->servant_to_id(helloImpl)); delete helloImpl; } void test_substitute_operator() { // Consumerに割り当てるオブジェクトを生成する hello_impl* helloImpl = new hello_impl(); PortableServer::ObjectId_var objId = m_pPOA->activate_object(helloImpl); // 生成したオブジェクトをConsumerにセットする RTC::CorbaConsumer<hello> consumer; consumer.setObject(m_pPOA->id_to_reference(objId)); // 作成したConsumerオブジェクトを元に、別の新たなConsumerをコピーコンストラクトする RTC::CorbaConsumer<hello> consumerNew = consumer; // 新たに作成したConsumerに対して、メソッドを正しく呼び出せるか? CPPUNIT_ASSERT_EQUAL(0, helloImpl->m_invokedCount); consumerNew._ptr()->hello_world(); CPPUNIT_ASSERT_EQUAL(1, helloImpl->m_invokedCount); m_pPOA->deactivate_object(*m_pPOA->servant_to_id(helloImpl)); delete helloImpl; } /*! * @brief releaseObject()メソッドのテスト * * - releaseObject()呼出によって、保持されているオブジェクト参照が正しくクリアされるか? */ void test_releaseObject() { // Consumerに割り当てるオブジェクトを生成する hello_impl* helloImpl = new hello_impl(); PortableServer::ObjectId_var objId = m_pPOA->activate_object(helloImpl); // 生成したオブジェクトをConsumerにセットする RTC::CorbaConsumer<hello> consumer; consumer.setObject(m_pPOA->id_to_reference(objId)); // この時点では、オブジェクト参照は保持されているはず CPPUNIT_ASSERT(! CORBA::is_nil(consumer._ptr())); // releaseObject()呼出によって、保持されているオブジェクト参照が正しくクリアされるか? consumer.releaseObject(); CPPUNIT_ASSERT(CORBA::is_nil(consumer._ptr())); m_pPOA->deactivate_object(*m_pPOA->servant_to_id(helloImpl)); delete helloImpl; } }; }; // namespace CorbaConsumer /* * Register test suite */ CPPUNIT_TEST_SUITE_REGISTRATION(CorbaConsumer::CorbaConsumerTests); #ifdef LOCAL_MAIN int main(int argc, char* argv[]) { FORMAT format = TEXT_OUT; int target = 0; std::string xsl; std::string ns; std::string fname; std::ofstream ofs; int i(1); while (i < argc) { std::string arg(argv[i]); std::string next_arg; if (i + 1 < argc) next_arg = argv[i + 1]; else next_arg = ""; if (arg == "--text") { format = TEXT_OUT; break; } if (arg == "--xml") { if (next_arg == "") { fname = argv[0]; fname += ".xml"; } else { fname = next_arg; } format = XML_OUT; ofs.open(fname.c_str()); } if ( arg == "--compiler" ) { format = COMPILER_OUT; break; } if ( arg == "--cerr" ) { target = 1; break; } if ( arg == "--xsl" ) { if (next_arg == "") xsl = "default.xsl"; else xsl = next_arg; } if ( arg == "--namespace" ) { if (next_arg == "") { std::cerr << "no namespace specified" << std::endl; exit(1); } else { xsl = next_arg; } } ++i; } CppUnit::TextUi::TestRunner runner; if ( ns.empty() ) runner.addTest(CppUnit::TestFactoryRegistry::getRegistry().makeTest()); else runner.addTest(CppUnit::TestFactoryRegistry::getRegistry(ns).makeTest()); CppUnit::Outputter* outputter = 0; std::ostream* stream = target ? &std::cerr : &std::cout; switch ( format ) { case TEXT_OUT : outputter = new CppUnit::TextOutputter(&runner.result(),*stream); break; case XML_OUT : std::cout << "XML_OUT" << std::endl; outputter = new CppUnit::XmlOutputter(&runner.result(), ofs, "shift_jis"); static_cast<CppUnit::XmlOutputter*>(outputter)->setStyleSheet(xsl); break; case COMPILER_OUT : outputter = new CppUnit::CompilerOutputter(&runner.result(),*stream); break; } runner.setOutputter(outputter); runner.run(); return 0; // runner.run() ? 0 : 1; } #endif // MAIN #endif // CorbaConsumer_cpp
182  RTC::CorbaConsumer<hello> consumer;
183  consumer.setObject(m_pPOA->id_to_reference(objId));
184 
185  // ポインタ演算子(->)を用いて、Consumerに割り当てたオブジェクトのメソッドを正しく呼び出せるか?
186  CPPUNIT_ASSERT_EQUAL(0, helloImpl->m_invokedCount);
187  consumer->hello_world();
188  CPPUNIT_ASSERT_EQUAL(1, helloImpl->m_invokedCount);
189 
190  m_pPOA->deactivate_object(*m_pPOA->servant_to_id(helloImpl));
191  delete helloImpl;
192  }
193 
195  {
196  // Consumerに割り当てるオブジェクトを生成する hello_impl* helloImpl = new hello_impl(); PortableServer::ObjectId_var objId = m_pPOA->activate_object(helloImpl); // 生成したオブジェクトをConsumerにセットする RTC::CorbaConsumer<hello> consumer; consumer.setObject(m_pPOA->id_to_reference(objId)); // 作成したConsumerオブジェクトを元に、別の新たなConsumerをコピーコンストラクトする RTC::CorbaConsumer<hello> consumerNew = consumer; // 新たに作成したConsumerに対して、メソッドを正しく呼び出せるか? CPPUNIT_ASSERT_EQUAL(0, helloImpl->m_invokedCount); consumerNew._ptr()->hello_world(); CPPUNIT_ASSERT_EQUAL(1, helloImpl->m_invokedCount); m_pPOA->deactivate_object(*m_pPOA->servant_to_id(helloImpl)); delete helloImpl; } /*! * @brief releaseObject()メソッドのテスト * * - releaseObject()呼出によって、保持されているオブジェクト参照が正しくクリアされるか? */ void test_releaseObject() { // Consumerに割り当てるオブジェクトを生成する hello_impl* helloImpl = new hello_impl(); PortableServer::ObjectId_var objId = m_pPOA->activate_object(helloImpl); // 生成したオブジェクトをConsumerにセットする RTC::CorbaConsumer<hello> consumer; consumer.setObject(m_pPOA->id_to_reference(objId)); // この時点では、オブジェクト参照は保持されているはず CPPUNIT_ASSERT(! CORBA::is_nil(consumer._ptr())); // releaseObject()呼出によって、保持されているオブジェクト参照が正しくクリアされるか? consumer.releaseObject(); CPPUNIT_ASSERT(CORBA::is_nil(consumer._ptr())); m_pPOA->deactivate_object(*m_pPOA->servant_to_id(helloImpl)); delete helloImpl; } }; }; // namespace CorbaConsumer /* * Register test suite */ CPPUNIT_TEST_SUITE_REGISTRATION(CorbaConsumer::CorbaConsumerTests); #ifdef LOCAL_MAIN int main(int argc, char* argv[]) { FORMAT format = TEXT_OUT; int target = 0; std::string xsl; std::string ns; std::string fname; std::ofstream ofs; int i(1); while (i < argc) { std::string arg(argv[i]); std::string next_arg; if (i + 1 < argc) next_arg = argv[i + 1]; else next_arg = ""; if (arg == "--text") { format = TEXT_OUT; break; } if (arg == "--xml") { if (next_arg == "") { fname = argv[0]; fname += ".xml"; } else { fname = next_arg; } format = XML_OUT; ofs.open(fname.c_str()); } if ( arg == "--compiler" ) { format = COMPILER_OUT; break; } if ( arg == "--cerr" ) { target = 1; break; } if ( arg == "--xsl" ) { if (next_arg == "") xsl = "default.xsl"; else xsl = next_arg; } if ( arg == "--namespace" ) { if (next_arg == "") { std::cerr << "no namespace specified" << std::endl; exit(1); } else { xsl = next_arg; } } ++i; } CppUnit::TextUi::TestRunner runner; if ( ns.empty() ) runner.addTest(CppUnit::TestFactoryRegistry::getRegistry().makeTest()); else runner.addTest(CppUnit::TestFactoryRegistry::getRegistry(ns).makeTest()); CppUnit::Outputter* outputter = 0; std::ostream* stream = target ? &std::cerr : &std::cout; switch ( format ) { case TEXT_OUT : outputter = new CppUnit::TextOutputter(&runner.result(),*stream); break; case XML_OUT : std::cout << "XML_OUT" << std::endl; outputter = new CppUnit::XmlOutputter(&runner.result(), ofs, "shift_jis"); static_cast<CppUnit::XmlOutputter*>(outputter)->setStyleSheet(xsl); break; case COMPILER_OUT : outputter = new CppUnit::CompilerOutputter(&runner.result(),*stream); break; } runner.setOutputter(outputter); runner.run(); return 0; // runner.run() ? 0 : 1; } #endif // MAIN #endif // CorbaConsumer_cpp
197  hello_impl* helloImpl = new hello_impl();
198  PortableServer::ObjectId_var objId = m_pPOA->activate_object(helloImpl);
199 
200  // 生成したオブジェクトをConsumerにセットする RTC::CorbaConsumer<hello> consumer; consumer.setObject(m_pPOA->id_to_reference(objId)); // 作成したConsumerオブジェクトを元に、別の新たなConsumerをコピーコンストラクトする RTC::CorbaConsumer<hello> consumerNew = consumer; // 新たに作成したConsumerに対して、メソッドを正しく呼び出せるか? CPPUNIT_ASSERT_EQUAL(0, helloImpl->m_invokedCount); consumerNew._ptr()->hello_world(); CPPUNIT_ASSERT_EQUAL(1, helloImpl->m_invokedCount); m_pPOA->deactivate_object(*m_pPOA->servant_to_id(helloImpl)); delete helloImpl; } /*! * @brief releaseObject()メソッドのテスト * * - releaseObject()呼出によって、保持されているオブジェクト参照が正しくクリアされるか? */ void test_releaseObject() { // Consumerに割り当てるオブジェクトを生成する hello_impl* helloImpl = new hello_impl(); PortableServer::ObjectId_var objId = m_pPOA->activate_object(helloImpl); // 生成したオブジェクトをConsumerにセットする RTC::CorbaConsumer<hello> consumer; consumer.setObject(m_pPOA->id_to_reference(objId)); // この時点では、オブジェクト参照は保持されているはず CPPUNIT_ASSERT(! CORBA::is_nil(consumer._ptr())); // releaseObject()呼出によって、保持されているオブジェクト参照が正しくクリアされるか? consumer.releaseObject(); CPPUNIT_ASSERT(CORBA::is_nil(consumer._ptr())); m_pPOA->deactivate_object(*m_pPOA->servant_to_id(helloImpl)); delete helloImpl; } }; }; // namespace CorbaConsumer /* * Register test suite */ CPPUNIT_TEST_SUITE_REGISTRATION(CorbaConsumer::CorbaConsumerTests); #ifdef LOCAL_MAIN int main(int argc, char* argv[]) { FORMAT format = TEXT_OUT; int target = 0; std::string xsl; std::string ns; std::string fname; std::ofstream ofs; int i(1); while (i < argc) { std::string arg(argv[i]); std::string next_arg; if (i + 1 < argc) next_arg = argv[i + 1]; else next_arg = ""; if (arg == "--text") { format = TEXT_OUT; break; } if (arg == "--xml") { if (next_arg == "") { fname = argv[0]; fname += ".xml"; } else { fname = next_arg; } format = XML_OUT; ofs.open(fname.c_str()); } if ( arg == "--compiler" ) { format = COMPILER_OUT; break; } if ( arg == "--cerr" ) { target = 1; break; } if ( arg == "--xsl" ) { if (next_arg == "") xsl = "default.xsl"; else xsl = next_arg; } if ( arg == "--namespace" ) { if (next_arg == "") { std::cerr << "no namespace specified" << std::endl; exit(1); } else { xsl = next_arg; } } ++i; } CppUnit::TextUi::TestRunner runner; if ( ns.empty() ) runner.addTest(CppUnit::TestFactoryRegistry::getRegistry().makeTest()); else runner.addTest(CppUnit::TestFactoryRegistry::getRegistry(ns).makeTest()); CppUnit::Outputter* outputter = 0; std::ostream* stream = target ? &std::cerr : &std::cout; switch ( format ) { case TEXT_OUT : outputter = new CppUnit::TextOutputter(&runner.result(),*stream); break; case XML_OUT : std::cout << "XML_OUT" << std::endl; outputter = new CppUnit::XmlOutputter(&runner.result(), ofs, "shift_jis"); static_cast<CppUnit::XmlOutputter*>(outputter)->setStyleSheet(xsl); break; case COMPILER_OUT : outputter = new CppUnit::CompilerOutputter(&runner.result(),*stream); break; } runner.setOutputter(outputter); runner.run(); return 0; // runner.run() ? 0 : 1; } #endif // MAIN #endif // CorbaConsumer_cpp
201  RTC::CorbaConsumer<hello> consumer;
202  consumer.setObject(m_pPOA->id_to_reference(objId));
203 
204  // 作成したConsumerオブジェクトを元に、別の新たなConsumerをコピーコンストラクトする RTC::CorbaConsumer<hello> consumerNew = consumer; // 新たに作成したConsumerに対して、メソッドを正しく呼び出せるか? CPPUNIT_ASSERT_EQUAL(0, helloImpl->m_invokedCount); consumerNew._ptr()->hello_world(); CPPUNIT_ASSERT_EQUAL(1, helloImpl->m_invokedCount); m_pPOA->deactivate_object(*m_pPOA->servant_to_id(helloImpl)); delete helloImpl; } /*! * @brief releaseObject()メソッドのテスト * * - releaseObject()呼出によって、保持されているオブジェクト参照が正しくクリアされるか? */ void test_releaseObject() { // Consumerに割り当てるオブジェクトを生成する hello_impl* helloImpl = new hello_impl(); PortableServer::ObjectId_var objId = m_pPOA->activate_object(helloImpl); // 生成したオブジェクトをConsumerにセットする RTC::CorbaConsumer<hello> consumer; consumer.setObject(m_pPOA->id_to_reference(objId)); // この時点では、オブジェクト参照は保持されているはず CPPUNIT_ASSERT(! CORBA::is_nil(consumer._ptr())); // releaseObject()呼出によって、保持されているオブジェクト参照が正しくクリアされるか? consumer.releaseObject(); CPPUNIT_ASSERT(CORBA::is_nil(consumer._ptr())); m_pPOA->deactivate_object(*m_pPOA->servant_to_id(helloImpl)); delete helloImpl; } }; }; // namespace CorbaConsumer /* * Register test suite */ CPPUNIT_TEST_SUITE_REGISTRATION(CorbaConsumer::CorbaConsumerTests); #ifdef LOCAL_MAIN int main(int argc, char* argv[]) { FORMAT format = TEXT_OUT; int target = 0; std::string xsl; std::string ns; std::string fname; std::ofstream ofs; int i(1); while (i < argc) { std::string arg(argv[i]); std::string next_arg; if (i + 1 < argc) next_arg = argv[i + 1]; else next_arg = ""; if (arg == "--text") { format = TEXT_OUT; break; } if (arg == "--xml") { if (next_arg == "") { fname = argv[0]; fname += ".xml"; } else { fname = next_arg; } format = XML_OUT; ofs.open(fname.c_str()); } if ( arg == "--compiler" ) { format = COMPILER_OUT; break; } if ( arg == "--cerr" ) { target = 1; break; } if ( arg == "--xsl" ) { if (next_arg == "") xsl = "default.xsl"; else xsl = next_arg; } if ( arg == "--namespace" ) { if (next_arg == "") { std::cerr << "no namespace specified" << std::endl; exit(1); } else { xsl = next_arg; } } ++i; } CppUnit::TextUi::TestRunner runner; if ( ns.empty() ) runner.addTest(CppUnit::TestFactoryRegistry::getRegistry().makeTest()); else runner.addTest(CppUnit::TestFactoryRegistry::getRegistry(ns).makeTest()); CppUnit::Outputter* outputter = 0; std::ostream* stream = target ? &std::cerr : &std::cout; switch ( format ) { case TEXT_OUT : outputter = new CppUnit::TextOutputter(&runner.result(),*stream); break; case XML_OUT : std::cout << "XML_OUT" << std::endl; outputter = new CppUnit::XmlOutputter(&runner.result(), ofs, "shift_jis"); static_cast<CppUnit::XmlOutputter*>(outputter)->setStyleSheet(xsl); break; case COMPILER_OUT : outputter = new CppUnit::CompilerOutputter(&runner.result(),*stream); break; } runner.setOutputter(outputter); runner.run(); return 0; // runner.run() ? 0 : 1; } #endif // MAIN #endif // CorbaConsumer_cpp
205  RTC::CorbaConsumer<hello> consumerNew = consumer;
206 
207  // 新たに作成したConsumerに対して、メソッドを正しく呼び出せるか?
208  CPPUNIT_ASSERT_EQUAL(0, helloImpl->m_invokedCount);
209  consumerNew._ptr()->hello_world();
210  CPPUNIT_ASSERT_EQUAL(1, helloImpl->m_invokedCount);
211 
212  m_pPOA->deactivate_object(*m_pPOA->servant_to_id(helloImpl));
213  delete helloImpl;
214  }
215 
222  {
223  // Consumerに割り当てるオブジェクトを生成する hello_impl* helloImpl = new hello_impl(); PortableServer::ObjectId_var objId = m_pPOA->activate_object(helloImpl); // 生成したオブジェクトをConsumerにセットする RTC::CorbaConsumer<hello> consumer; consumer.setObject(m_pPOA->id_to_reference(objId)); // この時点では、オブジェクト参照は保持されているはず CPPUNIT_ASSERT(! CORBA::is_nil(consumer._ptr())); // releaseObject()呼出によって、保持されているオブジェクト参照が正しくクリアされるか? consumer.releaseObject(); CPPUNIT_ASSERT(CORBA::is_nil(consumer._ptr())); m_pPOA->deactivate_object(*m_pPOA->servant_to_id(helloImpl)); delete helloImpl; } }; }; // namespace CorbaConsumer /* * Register test suite */ CPPUNIT_TEST_SUITE_REGISTRATION(CorbaConsumer::CorbaConsumerTests); #ifdef LOCAL_MAIN int main(int argc, char* argv[]) { FORMAT format = TEXT_OUT; int target = 0; std::string xsl; std::string ns; std::string fname; std::ofstream ofs; int i(1); while (i < argc) { std::string arg(argv[i]); std::string next_arg; if (i + 1 < argc) next_arg = argv[i + 1]; else next_arg = ""; if (arg == "--text") { format = TEXT_OUT; break; } if (arg == "--xml") { if (next_arg == "") { fname = argv[0]; fname += ".xml"; } else { fname = next_arg; } format = XML_OUT; ofs.open(fname.c_str()); } if ( arg == "--compiler" ) { format = COMPILER_OUT; break; } if ( arg == "--cerr" ) { target = 1; break; } if ( arg == "--xsl" ) { if (next_arg == "") xsl = "default.xsl"; else xsl = next_arg; } if ( arg == "--namespace" ) { if (next_arg == "") { std::cerr << "no namespace specified" << std::endl; exit(1); } else { xsl = next_arg; } } ++i; } CppUnit::TextUi::TestRunner runner; if ( ns.empty() ) runner.addTest(CppUnit::TestFactoryRegistry::getRegistry().makeTest()); else runner.addTest(CppUnit::TestFactoryRegistry::getRegistry(ns).makeTest()); CppUnit::Outputter* outputter = 0; std::ostream* stream = target ? &std::cerr : &std::cout; switch ( format ) { case TEXT_OUT : outputter = new CppUnit::TextOutputter(&runner.result(),*stream); break; case XML_OUT : std::cout << "XML_OUT" << std::endl; outputter = new CppUnit::XmlOutputter(&runner.result(), ofs, "shift_jis"); static_cast<CppUnit::XmlOutputter*>(outputter)->setStyleSheet(xsl); break; case COMPILER_OUT : outputter = new CppUnit::CompilerOutputter(&runner.result(),*stream); break; } runner.setOutputter(outputter); runner.run(); return 0; // runner.run() ? 0 : 1; } #endif // MAIN #endif // CorbaConsumer_cpp
224  hello_impl* helloImpl = new hello_impl();
225  PortableServer::ObjectId_var objId = m_pPOA->activate_object(helloImpl);
226 
227  // 生成したオブジェクトをConsumerにセットする RTC::CorbaConsumer<hello> consumer; consumer.setObject(m_pPOA->id_to_reference(objId)); // この時点では、オブジェクト参照は保持されているはず CPPUNIT_ASSERT(! CORBA::is_nil(consumer._ptr())); // releaseObject()呼出によって、保持されているオブジェクト参照が正しくクリアされるか? consumer.releaseObject(); CPPUNIT_ASSERT(CORBA::is_nil(consumer._ptr())); m_pPOA->deactivate_object(*m_pPOA->servant_to_id(helloImpl)); delete helloImpl; } }; }; // namespace CorbaConsumer /* * Register test suite */ CPPUNIT_TEST_SUITE_REGISTRATION(CorbaConsumer::CorbaConsumerTests); #ifdef LOCAL_MAIN int main(int argc, char* argv[]) { FORMAT format = TEXT_OUT; int target = 0; std::string xsl; std::string ns; std::string fname; std::ofstream ofs; int i(1); while (i < argc) { std::string arg(argv[i]); std::string next_arg; if (i + 1 < argc) next_arg = argv[i + 1]; else next_arg = ""; if (arg == "--text") { format = TEXT_OUT; break; } if (arg == "--xml") { if (next_arg == "") { fname = argv[0]; fname += ".xml"; } else { fname = next_arg; } format = XML_OUT; ofs.open(fname.c_str()); } if ( arg == "--compiler" ) { format = COMPILER_OUT; break; } if ( arg == "--cerr" ) { target = 1; break; } if ( arg == "--xsl" ) { if (next_arg == "") xsl = "default.xsl"; else xsl = next_arg; } if ( arg == "--namespace" ) { if (next_arg == "") { std::cerr << "no namespace specified" << std::endl; exit(1); } else { xsl = next_arg; } } ++i; } CppUnit::TextUi::TestRunner runner; if ( ns.empty() ) runner.addTest(CppUnit::TestFactoryRegistry::getRegistry().makeTest()); else runner.addTest(CppUnit::TestFactoryRegistry::getRegistry(ns).makeTest()); CppUnit::Outputter* outputter = 0; std::ostream* stream = target ? &std::cerr : &std::cout; switch ( format ) { case TEXT_OUT : outputter = new CppUnit::TextOutputter(&runner.result(),*stream); break; case XML_OUT : std::cout << "XML_OUT" << std::endl; outputter = new CppUnit::XmlOutputter(&runner.result(), ofs, "shift_jis"); static_cast<CppUnit::XmlOutputter*>(outputter)->setStyleSheet(xsl); break; case COMPILER_OUT : outputter = new CppUnit::CompilerOutputter(&runner.result(),*stream); break; } runner.setOutputter(outputter); runner.run(); return 0; // runner.run() ? 0 : 1; } #endif // MAIN #endif // CorbaConsumer_cpp
228  RTC::CorbaConsumer<hello> consumer;
229  consumer.setObject(m_pPOA->id_to_reference(objId));
230 
231  // この時点では、オブジェクト参照は保持されているはず
232  CPPUNIT_ASSERT(! CORBA::is_nil(consumer._ptr()));
233 
234  // releaseObject()呼出によって、保持されているオブジェクト参照が正しくクリアされるか?
235  consumer.releaseObject();
236  CPPUNIT_ASSERT(CORBA::is_nil(consumer._ptr()));
237 
238  m_pPOA->deactivate_object(*m_pPOA->servant_to_id(helloImpl));
239  delete helloImpl;
240  }
241 
242  };
243 }; // namespace CorbaConsumer
244 
245 /*
246  * Register test suite
247  */
249 
250 #ifdef LOCAL_MAIN
251 int main(int argc, char* argv[])
252 {
253 
254  FORMAT format = TEXT_OUT;
255  int target = 0;
256  std::string xsl;
257  std::string ns;
258  std::string fname;
259  std::ofstream ofs;
260 
261  int i(1);
262  while (i < argc)
263  {
264  std::string arg(argv[i]);
265  std::string next_arg;
266  if (i + 1 < argc) next_arg = argv[i + 1];
267  else next_arg = "";
268 
269  if (arg == "--text") { format = TEXT_OUT; break; }
270  if (arg == "--xml")
271  {
272  if (next_arg == "")
273  {
274  fname = argv[0];
275  fname += ".xml";
276  }
277  else
278  {
279  fname = next_arg;
280  }
281  format = XML_OUT;
282  ofs.open(fname.c_str());
283  }
284  if ( arg == "--compiler" ) { format = COMPILER_OUT; break; }
285  if ( arg == "--cerr" ) { target = 1; break; }
286  if ( arg == "--xsl" )
287  {
288  if (next_arg == "") xsl = "default.xsl";
289  else xsl = next_arg;
290  }
291  if ( arg == "--namespace" )
292  {
293  if (next_arg == "")
294  {
295  std::cerr << "no namespace specified" << std::endl;
296  exit(1);
297  }
298  else
299  {
300  xsl = next_arg;
301  }
302  }
303  ++i;
304  }
305  CppUnit::TextUi::TestRunner runner;
306  if ( ns.empty() )
307  runner.addTest(CppUnit::TestFactoryRegistry::getRegistry().makeTest());
308  else
309  runner.addTest(CppUnit::TestFactoryRegistry::getRegistry(ns).makeTest());
310  CppUnit::Outputter* outputter = 0;
311  std::ostream* stream = target ? &std::cerr : &std::cout;
312  switch ( format )
313  {
314  case TEXT_OUT :
315  outputter = new CppUnit::TextOutputter(&runner.result(),*stream);
316  break;
317  case XML_OUT :
318  std::cout << "XML_OUT" << std::endl;
319  outputter = new CppUnit::XmlOutputter(&runner.result(),
320  ofs, "shift_jis");
321  static_cast<CppUnit::XmlOutputter*>(outputter)->setStyleSheet(xsl);
322  break;
323  case COMPILER_OUT :
324  outputter = new CppUnit::CompilerOutputter(&runner.result(),*stream);
325  break;
326  }
327  runner.setOutputter(outputter);
328  runner.run();
329  return 0; // runner.run() ? 0 : 1;
330 }
331 #endif // MAIN
332 #endif // CorbaConsumer_cpp
int main(int argc, char **argv)
virtual void releaseObject()
Clear CORBA object setting.
CORBA Consumer class.
CPPUNIT_TEST_SUITE_REGISTRATION(CorbaConsumer::CorbaConsumerTests)
void test_copy_constructor()
コピーコンストラクタのテスト
virtual void tearDown()
Test finalization.
void test_pointer_operator()
ポインタ演算子(operator->())のテスト
virtual bool setObject(CORBA::Object_ptr obj)
Set Object.
void test_setObject_and__ptr()
setObject()メソッドと_ptr()メソッドのテスト
ObjectTypePtr _ptr()
Get Object reference narrowed as ObjectType.
void test_releaseObject()
releaseObject()メソッドのテスト
virtual void setUp()
Test initialization.


openrtm_aist
Author(s): Noriaki Ando
autogenerated on Mon Feb 28 2022 23:00:42