TestMutex.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/TestMutex.h"
00029 
00030 namespace ParCompMarkTest
00031 {
00032 
00033   void TestMutex::setUp()
00034   {
00035         // DummyLock cannot log, beacuse Lock cannot
00036   }
00037 
00038  /*----------------------------------------------------------------------*/
00039 
00040   void TestMutex::tearDown()
00041   {
00042   }
00043 
00044  /*----------------------------------------------------------------------*/
00045 
00046   //
00047   // Constructor & destructor tests
00048   //
00049 
00050   void TestMutex::test_constructor()
00051   {
00052         Mutex *m = 0;
00053 
00054         CPPUNIT_ASSERT_NO_THROW(m = new Mutex());
00055         CPPUNIT_ASSERT_MESSAGE("Mutex is locked by default", !m->getLocked());
00056         CPPUNIT_ASSERT_NO_THROW(delete m);
00057   }
00058 
00059  /*----------------------------------------------------------------------*/
00060 
00061   void TestMutex::test_destructor()
00062   {
00063         // Upper tested
00064   }
00065 
00066  /*----------------------------------------------------------------------*/
00067 
00068   //
00069   // Method tests
00070   //
00071 
00072   void TestMutex::test_lock()
00073   {
00074 
00075         /*
00076          * You have to verify the following:
00077          * 
00078          * Lock the mutex.
00079          */
00080 
00081         Mutex m;
00082 
00083         CPPUNIT_ASSERT_NO_THROW(m.lock());
00084         CPPUNIT_ASSERT_MESSAGE("Mutex cannot be locked", m.getLocked());
00085   }
00086 
00087  /*----------------------------------------------------------------------*/
00088 
00089   void TestMutex::test_trylock()
00090   {
00091 
00092         /*
00093          * You have to verify the following:
00094          * 
00095          * Try locking the mutex.
00096          */
00097 
00098         Mutex m;
00099 
00100         while(!m.getLocked())
00101          CPPUNIT_ASSERT_NO_THROW(m.lock());
00102         CPPUNIT_ASSERT_MESSAGE("Mutex cannot be locked", m.getLocked());
00103   }
00104 
00105  /*----------------------------------------------------------------------*/
00106 
00107   void TestMutex::test_unlock()
00108   {
00109 
00110         /*
00111          * You have to verify the following:
00112          * 
00113          * Unlock the mutex.
00114          */
00115 
00116         Mutex m;
00117 
00118         CPPUNIT_ASSERT_NO_THROW(m.lock());
00119         CPPUNIT_ASSERT_NO_THROW(m.unlock());
00120         CPPUNIT_ASSERT_MESSAGE("Mutex cannot be unlocked", !m.getLocked());
00121   }
00122 
00123  /*----------------------------------------------------------------------*/
00124 
00125   // To register the suite we add:
00127   CPPUNIT_TEST_SUITE_REGISTRATION(TestMutex);
00128 }