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 }