1
//---------------------------------------------------------------------------
3
// Project: OpenWalnut ( http://www.openwalnut.org )
5
// Copyright 2009 OpenWalnut Community, BSV@Uni-Leipzig and CNCF@MPI-CBS
6
// For more information see http://www.openwalnut.org/copying
8
// This file is part of OpenWalnut.
10
// OpenWalnut is free software: you can redistribute it and/or modify
11
// it under the terms of the GNU Lesser General Public License as published by
12
// the Free Software Foundation, either version 3 of the License, or
13
// (at your option) any later version.
15
// OpenWalnut is distributed in the hope that it will be useful,
16
// but WITHOUT ANY WARRANTY; without even the implied warranty of
17
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18
// GNU Lesser General Public License for more details.
20
// You should have received a copy of the GNU Lesser General Public License
21
// along with OpenWalnut. If not, see <http://www.gnu.org/licenses/>.
23
//---------------------------------------------------------------------------
25
#ifndef WCONDITIONONESHOT_TEST_H
26
#define WCONDITIONONESHOT_TEST_H
30
#include <boost/thread.hpp>
31
#include <cxxtest/TestSuite.h>
33
#include "../WConditionOneShot.h"
43
* Flag set true when the thread starts.
48
* The condition to use.
59
// let the test's thread reach its "wait" call first
60
boost::this_thread::sleep( boost::posix_time::seconds( 1 ) );
66
* Test WConditionOneShot
68
class WConditionOneShotTest : public CxxTest::TestSuite
73
* An instantiation should never throw an exception, as well as tear down.
75
void testInstantiation( void )
77
WConditionOneShot* c = 0;
79
TS_ASSERT_THROWS_NOTHING( c = new WConditionOneShot() );
80
TS_ASSERT_THROWS_NOTHING( delete c );
84
* Test whether notification is working.
94
boost::thread thread = boost::thread( boost::bind( &Callable::threadMain, &t ) );
99
// since it is a one shot condition -> another wait will not cause a freeze
104
// notifying twice should not cause exceptions (boost::lock_error)
105
TS_ASSERT_THROWS_NOTHING( c.notify() );
109
#endif // WCONDITIONONESHOT_TEST_H