preCICE v3.2.0
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
MultiLockTest.cpp
Go to the documentation of this file.
1#include <map>
2#include <string>
3#include "math/constants.hpp"
5#include "testing/Testing.hpp"
6#include "utils/MultiLock.hpp"
7#include "utils/String.hpp"
8
9using namespace precice;
10using namespace precice::utils;
11
12BOOST_AUTO_TEST_SUITE(UtilsTests)
13BOOST_AUTO_TEST_SUITE(MultiLockTests)
14
17{
20
21 BOOST_TEST(mlock.checkAll());
22 BOOST_TEST(!mlock.contains("A"));
23 BOOST_CHECK_THROW(mlock.check("A"), LockNotFoundException);
24 BOOST_CHECK_THROW(mlock.lock("A"), LockNotFoundException);
25 BOOST_CHECK_THROW(mlock.unlock("A"), LockNotFoundException);
26 BOOST_TEST(mlock.size() == 0);
27 BOOST_TEST(mlock.countUnlocked() == 0);
28 BOOST_TEST(mlock.countLocked() == 0);
29
30 mlock.add("A", true);
31 BOOST_TEST(mlock.contains("A"));
32 BOOST_TEST(!mlock.contains("B"));
33 BOOST_TEST(mlock.check("A"));
34 BOOST_TEST(mlock.checkAll());
35 BOOST_TEST(mlock.size() == 1);
36 BOOST_TEST(mlock.countUnlocked() == 0);
37 BOOST_TEST(mlock.countLocked() == 1);
38
39 mlock.add("B", false);
40 BOOST_TEST(mlock.check("A"));
41 BOOST_TEST(mlock.contains("B"));
42 BOOST_TEST(!mlock.check("B"));
43 BOOST_TEST(!mlock.checkAll());
44 BOOST_TEST(mlock.size() == 2);
45 BOOST_TEST(mlock.countUnlocked() == 1);
46 BOOST_TEST(mlock.countLocked() == 1);
47
48 mlock.lock("B");
49 BOOST_TEST(mlock.check("A"));
50 BOOST_TEST(mlock.check("B"));
51 BOOST_TEST(mlock.checkAll());
52 BOOST_TEST(mlock.size() == 2);
53 BOOST_TEST(mlock.countUnlocked() == 0);
54 BOOST_TEST(mlock.countLocked() == 2);
55
56 mlock.unlockAll();
57 BOOST_TEST(!mlock.check("A"));
58 BOOST_TEST(!mlock.check("B"));
59 BOOST_TEST(!mlock.checkAll());
60 BOOST_TEST(mlock.countUnlocked() == 2);
61 BOOST_TEST(mlock.countLocked() == 0);
62
63 mlock.lockAll();
64 BOOST_TEST(mlock.check("A"));
65 BOOST_TEST(mlock.check("B"));
66 BOOST_TEST(mlock.checkAll());
67 BOOST_TEST(mlock.countUnlocked() == 0);
68 BOOST_TEST(mlock.countLocked() == 2);
69}
70
BOOST_AUTO_TEST_SUITE(PreProcess)
BOOST_AUTO_TEST_SUITE_END()
BOOST_AUTO_TEST_CASE(MultiLockTest)
#define PRECICE_TEST()
Definition Testing.hpp:39
#define PRECICE_TEST_SETUP(...)
Creates and attaches a TestSetup to a Boost test case.
Definition Testing.hpp:29
Class handling multiple locks allowing global lock and unlock operations.
Definition MultiLock.hpp:26
size_t countLocked() const
Returns the count of locked locks.
bool check(const K &name) const
Checks the status of a lock.
size_t countUnlocked() const
Returns the count of unlocked locks.
void add(Key name, bool state)
Adds a lock with a given state.
Definition MultiLock.hpp:41
void lock(const K &name)
Locks a given lock.
Definition MultiLock.hpp:51
void lockAll() noexcept
Locks all known locks.
Definition MultiLock.hpp:62
void unlockAll() noexcept
Unlocks all known locks.
Definition MultiLock.hpp:85
bool checkAll() const noexcept
Checks whether all locks are locked.
size_type size() const noexcept
Returns the total count of locks.
bool contains(const K &name) const noexcept
Checks whether a lock is known.
void unlock(const K &name)
Unlocks a given lock.
Definition MultiLock.hpp:74
contains precice-related utilities.
Main namespace of the precice library.