diff --git a/test/unordered/fwd_map_test.cpp b/test/unordered/fwd_map_test.cpp index 5ce1fb94..a412f347 100644 --- a/test/unordered/fwd_map_test.cpp +++ b/test/unordered/fwd_map_test.cpp @@ -1,6 +1,6 @@ // Copyright 2008-2009 Daniel James. -// Copyright 2022 Christian Mazakas. +// Copyright 2022-2023 Christian Mazakas. // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -8,6 +8,7 @@ #include "../helpers/prefix.hpp" #ifdef BOOST_UNORDERED_FOA_TESTS #include +#include #include #else #include @@ -23,6 +24,13 @@ void call_swap( swap(x, y); } +template +void call_swap( + boost::unordered_node_map& x, boost::unordered_node_map& y) +{ + swap(x, y); +} + template bool call_equals( boost::unordered_flat_map& x, boost::unordered_flat_map& y) @@ -30,6 +38,13 @@ bool call_equals( return x == y; } +template +bool call_equals( + boost::unordered_node_map& x, boost::unordered_node_map& y) +{ + return x == y; +} + template bool call_not_equals( boost::unordered_flat_map& x, boost::unordered_flat_map& y) @@ -37,7 +52,15 @@ bool call_not_equals( return x != y; } +template +bool call_not_equals( + boost::unordered_node_map& x, boost::unordered_node_map& y) +{ + return x != y; +} + #include +#include #else template void call_swap(boost::unordered_map& x, boost::unordered_map& y) @@ -85,6 +108,7 @@ bool call_not_equals( #ifdef BOOST_UNORDERED_FOA_TESTS typedef boost::unordered_flat_map int_map; +typedef boost::unordered_node_map int_node_map; #else typedef boost::unordered_map int_map; typedef boost::unordered_multimap int_multimap; @@ -106,6 +130,24 @@ UNORDERED_AUTO_TEST (use_map_fwd_declared_function) { BOOST_TEST(call_not_equals(x, y)); } +#ifdef BOOST_UNORDERED_FOA_TESTS +UNORDERED_AUTO_TEST (use_node_map_fwd_declared_function) { + int_node_map x, y; + x[1] = 2; + y[2] = 1; + call_swap(x, y); + + BOOST_TEST(y.find(1) != y.end() && y.find(1)->second == 2); + BOOST_TEST(y.find(2) == y.end()); + + BOOST_TEST(x.find(1) == x.end()); + BOOST_TEST(x.find(2) != x.end() && x.find(2)->second == 1); + + BOOST_TEST(!call_equals(x, y)); + BOOST_TEST(call_not_equals(x, y)); +} +#endif + #ifndef BOOST_UNORDERED_FOA_TESTS UNORDERED_AUTO_TEST (use_multimap_fwd_declared_function) { int_multimap x, y;