forked from boostorg/unordered
Sync from upstream.
This commit is contained in:
+1
-1
@@ -45,7 +45,7 @@ path-constant BOOST_UNORDERED_TEST_DIR : . ;
|
||||
|
||||
run quick.cpp ;
|
||||
|
||||
compile natvis_tests.cpp ;
|
||||
compile debuggability/visualization_tests.cpp ;
|
||||
|
||||
compile unordered/self_include_tests_obj.cpp
|
||||
: <define>BOOST_UNORDERED_HEADER="boost/unordered_map.hpp"
|
||||
|
||||
@@ -2,19 +2,10 @@
|
||||
// Distributed under the Boost Software License, Version 1.0.
|
||||
// https://www.boost.org/LICENSE_1_0.txt
|
||||
|
||||
// This test applies to MSVC only. This is a file for manual testing.
|
||||
// Run this test and break manually at the variable called `break_here`.
|
||||
// Inspect the variables using the Visual Studio debugger to test correctness.
|
||||
|
||||
#include <boost/config.hpp>
|
||||
|
||||
#if !defined(BOOST_MSVC)
|
||||
|
||||
#include <boost/config/pragma_message.hpp>
|
||||
BOOST_PRAGMA_MESSAGE("These tests are for Visual Studio only.")
|
||||
int main() {}
|
||||
|
||||
#else
|
||||
// This is a file for testing of visualizations,
|
||||
// such as Visual Studio Natvis or GDB pretty printers.
|
||||
// Run this test and break at the label called `break_here`.
|
||||
// Inspect the variables to test correctness.
|
||||
|
||||
#if 0 // Change to `#if 1` to test turning off SIMD optimizations
|
||||
#define BOOST_UNORDERED_DISABLE_SSE2
|
||||
@@ -37,6 +28,7 @@ int main() {}
|
||||
#include <boost/unordered/unordered_set.hpp>
|
||||
#include <boost/uuid/random_generator.hpp>
|
||||
#include <boost/uuid/uuid_io.hpp>
|
||||
#include <memory>
|
||||
#include <string>
|
||||
#include <typeinfo>
|
||||
|
||||
@@ -46,59 +38,69 @@ template <class... Args> void use(Args&&...) {}
|
||||
using map_value_type = std::pair<const std::string, int>;
|
||||
using set_value_type = std::string;
|
||||
|
||||
template <class Tester> void natvis_test(Tester& tester)
|
||||
template <class Tester> void visualization_test(Tester& tester)
|
||||
{
|
||||
// clang-format off
|
||||
auto fca_map = tester.template construct_map<boost::unordered_map>();
|
||||
auto fca_multimap = tester.template construct_map<boost::unordered_multimap>();
|
||||
auto fca_set = tester.template construct_set<boost::unordered_set>();
|
||||
auto fca_multiset = tester.template construct_set<boost::unordered_multiset>();
|
||||
auto fca_map_ptr = tester.template construct_map<boost::unordered_map>();
|
||||
auto fca_multimap_ptr = tester.template construct_map<boost::unordered_multimap>();
|
||||
auto fca_set_ptr = tester.template construct_set<boost::unordered_set>();
|
||||
auto fca_multiset_ptr = tester.template construct_set<boost::unordered_multiset>();
|
||||
auto& fca_map = *fca_map_ptr;
|
||||
auto& fca_multimap = *fca_multimap_ptr;
|
||||
auto& fca_set = *fca_set_ptr;
|
||||
auto& fca_multiset = *fca_multiset_ptr;
|
||||
|
||||
auto foa_flat_map = tester.template construct_map<boost::unordered_flat_map>();
|
||||
auto foa_flat_set = tester.template construct_set<boost::unordered_flat_set>();
|
||||
auto foa_node_map = tester.template construct_map<boost::unordered_node_map>();
|
||||
auto foa_node_set = tester.template construct_set<boost::unordered_node_set>();
|
||||
auto foa_flat_map_ptr = tester.template construct_map<boost::unordered_flat_map>();
|
||||
auto foa_flat_set_ptr = tester.template construct_set<boost::unordered_flat_set>();
|
||||
auto foa_node_map_ptr = tester.template construct_map<boost::unordered_node_map>();
|
||||
auto foa_node_set_ptr = tester.template construct_set<boost::unordered_node_set>();
|
||||
auto& foa_flat_map = *foa_flat_map_ptr;
|
||||
auto& foa_flat_set = *foa_flat_set_ptr;
|
||||
auto& foa_node_map = *foa_node_map_ptr;
|
||||
auto& foa_node_set = *foa_node_set_ptr;
|
||||
|
||||
auto cfoa_flat_map = tester.template construct_map<boost::concurrent_flat_map>();
|
||||
auto cfoa_flat_set = tester.template construct_set<boost::concurrent_flat_set>();
|
||||
auto cfoa_flat_map_ptr = tester.template construct_map<boost::concurrent_flat_map>();
|
||||
auto cfoa_flat_set_ptr = tester.template construct_set<boost::concurrent_flat_set>();
|
||||
auto& cfoa_flat_map = *cfoa_flat_map_ptr;
|
||||
auto& cfoa_flat_set = *cfoa_flat_set_ptr;
|
||||
// clang-format on
|
||||
|
||||
for (int i = 0; i < 5; ++i) {
|
||||
const auto str = std::to_string(i * 2);
|
||||
const auto num = i * 11;
|
||||
|
||||
fca_map->emplace(str, num);
|
||||
fca_multimap->emplace(str, num);
|
||||
fca_multimap->emplace(str, num + 1);
|
||||
foa_flat_map->emplace(str, num);
|
||||
foa_node_map->emplace(str, num);
|
||||
cfoa_flat_map->emplace(str, num);
|
||||
fca_map.emplace(str, num);
|
||||
fca_multimap.emplace(str, num);
|
||||
fca_multimap.emplace(str, num + 1);
|
||||
foa_flat_map.emplace(str, num);
|
||||
foa_node_map.emplace(str, num);
|
||||
cfoa_flat_map.emplace(str, num);
|
||||
|
||||
fca_set->emplace(str);
|
||||
fca_multiset->emplace(str);
|
||||
fca_multiset->emplace(str);
|
||||
foa_flat_set->emplace(str);
|
||||
foa_node_set->emplace(str);
|
||||
cfoa_flat_set->emplace(str);
|
||||
fca_set.emplace(str);
|
||||
fca_multiset.emplace(str);
|
||||
fca_multiset.emplace(str);
|
||||
foa_flat_set.emplace(str);
|
||||
foa_node_set.emplace(str);
|
||||
cfoa_flat_set.emplace(str);
|
||||
}
|
||||
|
||||
auto fca_map_begin = fca_map->begin();
|
||||
auto fca_map_end = fca_map->end();
|
||||
auto fca_multimap_begin = fca_multimap->begin();
|
||||
auto fca_multimap_end = fca_multimap->end();
|
||||
auto fca_set_begin = fca_set->begin();
|
||||
auto fca_set_end = fca_set->end();
|
||||
auto fca_multiset_begin = fca_multiset->begin();
|
||||
auto fca_multiset_end = fca_multiset->end();
|
||||
auto fca_map_begin = fca_map.begin();
|
||||
auto fca_map_end = fca_map.end();
|
||||
auto fca_multimap_begin = fca_multimap.begin();
|
||||
auto fca_multimap_end = fca_multimap.end();
|
||||
auto fca_set_begin = fca_set.begin();
|
||||
auto fca_set_end = fca_set.end();
|
||||
auto fca_multiset_begin = fca_multiset.begin();
|
||||
auto fca_multiset_end = fca_multiset.end();
|
||||
|
||||
auto foa_flat_map_begin = foa_flat_map->begin();
|
||||
auto foa_flat_map_end = foa_flat_map->end();
|
||||
auto foa_flat_set_begin = foa_flat_set->begin();
|
||||
auto foa_flat_set_end = foa_flat_set->end();
|
||||
auto foa_node_map_begin = foa_node_map->begin();
|
||||
auto foa_node_map_end = foa_node_map->end();
|
||||
auto foa_node_set_begin = foa_node_set->begin();
|
||||
auto foa_node_set_end = foa_node_set->end();
|
||||
auto foa_flat_map_begin = foa_flat_map.begin();
|
||||
auto foa_flat_map_end = foa_flat_map.end();
|
||||
auto foa_flat_set_begin = foa_flat_set.begin();
|
||||
auto foa_flat_set_end = foa_flat_set.end();
|
||||
auto foa_node_map_begin = foa_node_map.begin();
|
||||
auto foa_node_map_end = foa_node_map.end();
|
||||
auto foa_node_set_begin = foa_node_set.begin();
|
||||
auto foa_node_set_end = foa_node_set.end();
|
||||
|
||||
use(cfoa_flat_map, cfoa_flat_set);
|
||||
use(fca_map_begin, fca_map_end, fca_multimap_begin, fca_multimap_end,
|
||||
@@ -107,8 +109,8 @@ template <class Tester> void natvis_test(Tester& tester)
|
||||
foa_flat_set_end, foa_node_map_begin, foa_node_map_end, foa_node_set_begin,
|
||||
foa_node_set_end);
|
||||
|
||||
int break_here = 0;
|
||||
use(break_here);
|
||||
goto break_here;
|
||||
break_here:;
|
||||
}
|
||||
|
||||
class offset_ptr_tester_
|
||||
@@ -169,21 +171,21 @@ public:
|
||||
template <template <class...> class MapTemplate>
|
||||
std::unique_ptr<map_type<MapTemplate> > construct_map()
|
||||
{
|
||||
return std::make_unique<map_type<MapTemplate> >();
|
||||
using type = map_type<MapTemplate>;
|
||||
return std::unique_ptr<type>(new type());
|
||||
}
|
||||
template <template <class...> class SetTemplate>
|
||||
std::unique_ptr<set_type<SetTemplate> > construct_set()
|
||||
{
|
||||
return std::make_unique<set_type<SetTemplate> >();
|
||||
using type = set_type<SetTemplate>;
|
||||
return std::unique_ptr<type>(new type());
|
||||
}
|
||||
} default_tester;
|
||||
|
||||
int main()
|
||||
{
|
||||
natvis_test(default_tester);
|
||||
natvis_test(offset_ptr_tester);
|
||||
visualization_test(default_tester);
|
||||
visualization_test(offset_ptr_tester);
|
||||
|
||||
return boost::report_errors();
|
||||
}
|
||||
|
||||
#endif // !defined(BOOST_MSVC)
|
||||
Reference in New Issue
Block a user