48 lines
1.1 KiB
C++
48 lines
1.1 KiB
C++
|
#include "gmock/gmock.h"
|
||
|
#include "gtest/gtest.h"
|
||
|
|
||
|
#include <vector>
|
||
|
|
||
|
#include "data_structures/concurrent/concurrent_map.hpp"
|
||
|
|
||
|
TEST(ConcurrentMap, Access) {
|
||
|
ConcurrentMap<int, int> input;
|
||
|
{
|
||
|
auto accessor = input.access();
|
||
|
accessor.insert(1, 1);
|
||
|
accessor.insert(2, 2);
|
||
|
accessor.insert(3, 3);
|
||
|
}
|
||
|
|
||
|
auto accessor = input.access();
|
||
|
std::vector<int> results;
|
||
|
for (auto it = accessor.begin(); it != accessor.end(); ++it)
|
||
|
results.push_back(it->first);
|
||
|
|
||
|
EXPECT_THAT(results, testing::ElementsAre(1, 2, 3));
|
||
|
}
|
||
|
|
||
|
TEST(ConcurrentMap, ConstAccess) {
|
||
|
ConcurrentMap<int, int> input;
|
||
|
{
|
||
|
auto accessor = input.access();
|
||
|
accessor.insert(1, 1);
|
||
|
accessor.insert(2, 2);
|
||
|
accessor.insert(3, 3);
|
||
|
}
|
||
|
|
||
|
const ConcurrentMap<int, int> &map = input;
|
||
|
auto accessor = map.access();
|
||
|
|
||
|
std::vector<int> results;
|
||
|
for (auto it = accessor.begin(); it != accessor.end(); ++it)
|
||
|
results.push_back(it->first);
|
||
|
|
||
|
EXPECT_THAT(results, testing::ElementsAre(1, 2, 3));
|
||
|
}
|
||
|
|
||
|
int main(int argc, char **argv) {
|
||
|
::testing::InitGoogleTest(&argc, argv);
|
||
|
return RUN_ALL_TESTS();
|
||
|
}
|