⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 loadertest.cpp

📁 机器人足球比赛仿真程序 服务器端车工内需
💻 CPP
字号:
// -*-c++-*-/***************************************************************************                  loadertest.cpp  - A rcss::lib::Loader testing program                             -------------------    begin                : 28-AUG-2003    copyright            : (C) 2003 by The RoboCup Soccer Server                            Maintenance Group.    email                : sserver-admin@lists.sourceforge.net ***************************************************************************//*************************************************************************** *                                                                         * *   This program is free software; you can redistribute it and/or modify  * *   it under the terms of the GNU GPL as published by the Free Software   * *   Foundation; either version 2 of the License, or (at your option) any  * *   later version.                                                        * *                                                                         * ***************************************************************************/#include <cppunit/extensions/HelperMacros.h>class TestLoader : public CPPUNIT_NS::TestFixture{    CPPUNIT_TEST_SUITE(TestLoader);    CPPUNIT_TEST(Path);    CPPUNIT_TEST(LoadingDynamic);    CPPUNIT_TEST(DoubleLoadDynamic);     CPPUNIT_TEST(LoaderStaysOpen);    CPPUNIT_TEST(LoadingDynamicWithExt);    CPPUNIT_TEST(LoadingDynamicWithExtAndDir);    CPPUNIT_TEST(LoadPreloadedStatic);    CPPUNIT_TEST(LoadPreloadedDynamic);    CPPUNIT_TEST(LoadError);    CPPUNIT_TEST_SUITE_END();protected:    //--------------------------------------------------------------------------    /// XXX: Document what the test is for here.    //--------------------------------------------------------------------------    void Path();    void LoadingDynamic();    void DoubleLoadDynamic();     void LoaderStaysOpen();    void LoadingDynamicWithExt();    void LoadingDynamicWithExtAndDir();    void LoadPreloadedStatic();    void LoadPreloadedDynamic();    void LoadError();public:    TestLoader()	{}	    ~TestLoader()	{}};CPPUNIT_TEST_SUITE_REGISTRATION( TestLoader );#include "base.hpp"using namespace rcss;using namespace rcss::lib;void TestLoader::Path(){    CPPUNIT_ASSERT( Loader::getPath().empty() );    Loader::setPath( "rcssbase/lib/loadertest" );    CPPUNIT_ASSERT_EQUAL( size_t( 1u ), Loader::getPath().size() );    CPPUNIT_ASSERT_EQUAL( std::string("rcssbase/lib/loadertest"),						  Loader::getPath().front().string() );    CPPUNIT_ASSERT_EQUAL( size_t( 0u ), Base::factory().size() );    const std::vector< boost::filesystem::path >& available = Loader::listAvailableModules();    for( std::vector< boost::filesystem::path >::const_iterator i = available.begin();		 i != available.end(); ++i )    {		std::cout << "module: " << i->native_file_string() << std::endl;    }	CPPUNIT_ASSERT( 3u <= Loader::listAvailableModules().size() );}void TestLoader::LoadingDynamic() {  CPPUNIT_ASSERT_EQUAL( size_t( 0u ), Base::factory().size() );  CPPUNIT_ASSERT_EQUAL( size_t( 0u ), Loader::libsLoaded() );    {        rcss::lib::Loader loader;        bool result = loader.open( "libderived1" );        if( !result )			std::cout << "loader error: " <<loader.errorStr() << std::endl;        CPPUNIT_ASSERT( result );        CPPUNIT_ASSERT_EQUAL( size_t( 1u ), Loader::libsLoaded() );        CPPUNIT_ASSERT_EQUAL( size_t( 1u ), Base::factory().size() );        Base::Creator c;        CPPUNIT_ASSERT( Base::factory().getCreator( c, "derived1" ) );        CPPUNIT_ASSERT_EQUAL( 12345, c()->method() );    }    CPPUNIT_ASSERT_EQUAL( size_t( 0u ), Loader::libsLoaded() );    CPPUNIT_ASSERT_EQUAL( size_t( 0u ), Base::factory().size() );}void TestLoader::DoubleLoadDynamic() {  CPPUNIT_ASSERT_EQUAL( size_t( 0u ), Base::factory().size() );  CPPUNIT_ASSERT_EQUAL( size_t( 0u ), Loader::libsLoaded() );    {        rcss::lib::Loader loader;        CPPUNIT_ASSERT( loader.open( "libderived1" ) );        CPPUNIT_ASSERT_EQUAL( size_t( 1u ), Loader::libsLoaded() );        CPPUNIT_ASSERT_EQUAL( size_t( 1u ), Base::factory().size() );        rcss::lib::Loader lib2;        CPPUNIT_ASSERT( lib2.open( "libderived1" ) );        CPPUNIT_ASSERT_EQUAL( size_t( 1u ), Loader::libsLoaded() );        CPPUNIT_ASSERT_EQUAL( size_t( 1u ), Base::factory().size() );        Base::Creator c;        CPPUNIT_ASSERT( Base::factory().getCreator( c, "derived1" ) );        CPPUNIT_ASSERT_EQUAL( 12345, c()->method() );    }    CPPUNIT_ASSERT_EQUAL( size_t( 0u ), Loader::libsLoaded() );    CPPUNIT_ASSERT_EQUAL( size_t( 0u ), Base::factory().size() );}void TestLoader::LoaderStaysOpen() {  CPPUNIT_ASSERT_EQUAL( size_t( 0u ), Base::factory().size() );  CPPUNIT_ASSERT_EQUAL( size_t( 0u ), Loader::libsLoaded() );    Base::Ptr ptr;    {        rcss::lib::Loader loader;        CPPUNIT_ASSERT( loader.open( "libderived1" ) );        CPPUNIT_ASSERT_EQUAL( size_t( 1u ), Loader::libsLoaded() );        CPPUNIT_ASSERT_EQUAL( size_t( 1u ), Base::factory().size() );        Base::Creator c;        CPPUNIT_ASSERT( Base::factory().getCreator( c, "derived1" ) );        ptr = c();        CPPUNIT_ASSERT_EQUAL( 12345, ptr->method() );    }    CPPUNIT_ASSERT_EQUAL( size_t( 1u ), Base::factory().size() );    CPPUNIT_ASSERT_EQUAL( size_t( 1u ), Loader::libsLoaded() );    CPPUNIT_ASSERT_EQUAL( 12345, ptr->method() );    ptr.reset();    CPPUNIT_ASSERT_EQUAL( size_t( 0u ), Loader::libsLoaded() );    CPPUNIT_ASSERT_EQUAL( size_t( 0u ), Base::factory().size() );}void TestLoader::LoadingDynamicWithExt() {  CPPUNIT_ASSERT_EQUAL( size_t( 0u ), Base::factory().size() );  CPPUNIT_ASSERT_EQUAL( size_t( 0u ), Loader::libsLoaded() );    {        rcss::lib::Loader loader;#if defined(_WIN32) || defined(__WIN32__) || defined (WIN32)        CPPUNIT_ASSERT( loader.open( "libderived1.dll" ) );#else        CPPUNIT_ASSERT( loader.open( "libderived1.so" ) );#endif               CPPUNIT_ASSERT_EQUAL( size_t( 1u ), Loader::libsLoaded() );        CPPUNIT_ASSERT_EQUAL( size_t( 1u ), Base::factory().size() );        Base::Creator c;        CPPUNIT_ASSERT( Base::factory().getCreator( c, "derived1" ) );        CPPUNIT_ASSERT_EQUAL( 12345, c()->method() );    }    CPPUNIT_ASSERT_EQUAL( size_t( 0u ), Loader::libsLoaded() );    CPPUNIT_ASSERT_EQUAL( size_t( 0u ), Base::factory().size() );}void TestLoader::LoadingDynamicWithExtAndDir() {  CPPUNIT_ASSERT_EQUAL( size_t( 0u ), Base::factory().size() );  CPPUNIT_ASSERT_EQUAL( size_t( 0u ), Loader::libsLoaded() );    {        rcss::lib::Loader loader;#if defined(_WIN32) || defined(__WIN32__) || defined (WIN32)        bool result = loader.open( "rcssbase/lib/loadertest/libderived1.dll" );#else        bool result = loader.open( "rcssbase/lib/loadertest/libderived1.so" );#endif               if( !result )			std::cout << "loader error: " <<loader.errorStr() << std::endl;        CPPUNIT_ASSERT( result );        CPPUNIT_ASSERT_EQUAL( size_t( 1u ), Loader::libsLoaded() );        CPPUNIT_ASSERT_EQUAL( size_t( 1u ), Base::factory().size() );        Base::Creator c;        CPPUNIT_ASSERT( Base::factory().getCreator( c, "derived1" ) );        CPPUNIT_ASSERT_EQUAL( 12345, c()->method() );    }    CPPUNIT_ASSERT_EQUAL( size_t( 0u ), Loader::libsLoaded() );    CPPUNIT_ASSERT_EQUAL( size_t( 0u ), Base::factory().size() );}void TestLoader::LoadPreloadedStatic() {  CPPUNIT_ASSERT_EQUAL( size_t( 0u ), Base::factory().size() );  CPPUNIT_ASSERT_EQUAL( size_t( 0u ), Loader::libsLoaded() );    {        rcss::lib::Loader loader;		bool result = loader.open( "libderived2" );		if( !result )			std::cout << "loader error: " <<loader.errorStr() << std::endl;        CPPUNIT_ASSERT( result );        CPPUNIT_ASSERT_EQUAL( size_t( 1u ), Loader::libsLoaded() );        CPPUNIT_ASSERT_EQUAL( size_t( 1u ), Base::factory().size() );        Base::Creator c;        CPPUNIT_ASSERT( Base::factory().getCreator( c, "derived2" ) );        CPPUNIT_ASSERT_EQUAL( 2, c()->method() );    }    CPPUNIT_ASSERT_EQUAL( size_t( 0u ), Loader::libsLoaded() );    CPPUNIT_ASSERT_EQUAL( size_t( 0u ), Base::factory().size() );}void TestLoader::LoadPreloadedDynamic() {	CPPUNIT_ASSERT_EQUAL( size_t( 0u ), Base::factory().size() );	CPPUNIT_ASSERT_EQUAL( size_t( 0u ), Loader::libsLoaded() );    {        rcss::lib::Loader loader;        CPPUNIT_ASSERT( loader.open( "libderived3" ) );        CPPUNIT_ASSERT_EQUAL( size_t( 1u ), Loader::libsLoaded() );        CPPUNIT_ASSERT_EQUAL( size_t( 1u ), Base::factory().size() );        Base::Creator c;        CPPUNIT_ASSERT( Base::factory().getCreator( c, "derived3" ) );        CPPUNIT_ASSERT_EQUAL( 1, c()->method() );    }    CPPUNIT_ASSERT_EQUAL( size_t( 0u ), Loader::libsLoaded() );    CPPUNIT_ASSERT_EQUAL( size_t( 0u ), Base::factory().size() );}void TestLoader::LoadError() {  CPPUNIT_ASSERT_EQUAL( size_t( 0u ), Base::factory().size() );  CPPUNIT_ASSERT_EQUAL( size_t( 0u ), Loader::libsLoaded() );    {        rcss::lib::Loader loader;        CPPUNIT_ASSERT( !loader.open( "libderived3xxx" ) );    }    CPPUNIT_ASSERT_EQUAL( size_t( 0u ), Loader::libsLoaded() );    CPPUNIT_ASSERT_EQUAL( size_t( 0u ), Base::factory().size() );}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -