TestDynLoad.cpp

Go to the documentation of this file.
00001 
00002 //
00003 // This source file is a part of ParCompMark
00004 // Parallel Compositing Benchmark Framework
00005 //
00006 // for latest info see http://parcompmark.sourceforge.net
00007 
00008 //
00009 // Copyright (C) 2006 IT2 ParCompMark Dev. Team
00010 // 
00011 // This program is free software; you can redistribute it and/or
00012 // modify it under the terms of the GNU General Public License
00013 // as published by the Free Software Foundation; either version 2
00014 // of the License, or (at your option) any later version.
00015 // 
00016 // This program is distributed in the hope that it will be useful,
00017 // but WITHOUT ANY WARRANTY; without even the implied warranty of
00018 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
00019 // GNU General Public License for more details.
00020 // 
00021 // You should have received a copy of the GNU General Public License
00022 // along with this program; if not, write to the Free Software
00023 // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
00024 
00027 
00028 #include "../include/TestDynLoad.h"
00029 #include "../../include/PCMFileSystemManager.h"
00030 
00031 namespace ParCompMarkTest
00032 {
00033 
00034   void TestDynLoad::setUp()
00035   {
00036         std::string currentLogFile = "logs/TestDynLoad.log";
00037 
00038         if(Logger::getInstance() && Logger::getInstance()->getLogFileName() != currentLogFile)
00039          Logger::destroyInstance();
00040 
00041         if(!FileSystemManager::getInstance())
00042         {
00043          FileSystemManager::createInstance();
00044          FileSystemManager::getInstance()->setAppDirectory("./");
00045          FileSystemManager::getInstance()->initialize();
00046         }
00047 
00048         if(!Logger::getInstance())
00049         {
00050          Logger::createInstance();
00051          Logger::getInstance()->setLogFileName(currentLogFile);
00052          Logger::getInstance()->initialize();
00053         }
00054   }
00055 
00056  /*----------------------------------------------------------------------*/
00057 
00058   void TestDynLoad::tearDown()
00059   {
00060   }
00061 
00062  /*----------------------------------------------------------------------*/
00063 
00064   //
00065   // Constructor & destructor tests
00066   //
00067 
00068   void TestDynLoad::test_constructor_cstd__string()
00069   {
00070         //tested in destructor
00071   }
00072 
00073  /*----------------------------------------------------------------------*/
00074 
00075   void TestDynLoad::test_destructor()
00076   {
00077         DynLoad *d = 0;
00078 
00079         CPPUNIT_ASSERT_THROW(d = new DynLoad("cc"), ParCompMark::Exception);
00080 
00081         CPPUNIT_ASSERT_NO_THROW(d = new DynLoad("libm.so.6"));
00082         CPPUNIT_ASSERT_NO_THROW(delete d);
00083   }
00084 
00085  /*----------------------------------------------------------------------*/
00086 
00087   //
00088   // Method tests
00089   //
00090 
00091   void TestDynLoad::test_hasFunction_cstd__string()
00092   {
00093 
00094         /*
00095          * You have to verify the following:
00096          * 
00097          * Return true when the dynamic library has a callable function with the specified name.
00098          */
00099 
00100         CPPUNIT_FAIL("Implement this test!");
00101   }
00102 
00103  /*----------------------------------------------------------------------*/
00104 
00105   void TestDynLoad::test_getFunction_cstd__string()
00106   {
00107 
00108         /*
00109          * You have to verify the following:
00110          * 
00111          * Get a function pointer from dynamic library by name (symbol).
00112          */
00113 
00114         DynLoad *d = 0;
00115 
00116         CPPUNIT_ASSERT_NO_THROW(d = new DynLoad("libm.so.6"));
00117 
00118         CPPUNIT_ASSERT_THROW(d->getFunction("cc"), ParCompMark::Exception);
00119 
00120         CPPUNIT_ASSERT_NO_THROW(d->getFunction("sin"));
00121 
00122         CPPUNIT_ASSERT_NO_THROW(delete d);
00123   }
00124 
00125  /*----------------------------------------------------------------------*/
00126 
00127   void TestDynLoad::test_load()
00128   {
00129 
00130         /*
00131          * You have to verify the following:
00132          * 
00133          * Load a library. Called by constructor.
00134          */
00135 
00136         //tested in destructor
00137   }
00138 
00139  /*----------------------------------------------------------------------*/
00140 
00141   void TestDynLoad::test_unload()
00142   {
00143 
00144         /*
00145          * You have to verify the following:
00146          * 
00147          * Load a library. Called by constructor.
00148          */
00149 
00150         //tested in destructor
00151   }
00152 
00153  /*----------------------------------------------------------------------*/
00154 
00155   // To register the suite we add:
00157   CPPUNIT_TEST_SUITE_REGISTRATION(TestDynLoad);
00158 }