diff --git a/test/unordered/fwd_set_test.cpp b/test/unordered/fwd_set_test.cpp index 86f4a9d1..fda2b71f 100644 --- a/test/unordered/fwd_set_test.cpp +++ b/test/unordered/fwd_set_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 @@ -31,12 +32,22 @@ template true_type is_unordered_set_impl( boost::unordered_flat_set*); +template +true_type is_unordered_set_impl( + boost::unordered_node_set*); + template void call_swap(boost::unordered_flat_set& x, boost::unordered_flat_set& y) { swap(x, y); } +template +void call_swap(boost::unordered_node_set& x, boost::unordered_node_set& y) +{ + swap(x, y); +} + template bool call_equals( boost::unordered_flat_set& x, boost::unordered_flat_set& y) @@ -44,12 +55,26 @@ bool call_equals( return x == y; } +template +bool call_equals( + boost::unordered_node_set& x, boost::unordered_node_set& y) +{ + return x == y; +} + template bool call_not_equals( boost::unordered_flat_set& x, boost::unordered_flat_set& y) { return x != y; } + +template +bool call_not_equals( + boost::unordered_node_set& x, boost::unordered_node_set& y) +{ + return x != y; +} #else template true_type is_unordered_set_impl( @@ -100,6 +125,7 @@ bool call_not_equals( #ifdef BOOST_UNORDERED_FOA_TESTS typedef boost::unordered_flat_set int_set; +typedef boost::unordered_node_set int_node_set; #else typedef boost::unordered_set int_set; typedef boost::unordered_multiset int_multiset; @@ -107,10 +133,13 @@ typedef boost::unordered_multiset int_multiset; UNORDERED_AUTO_TEST (use_fwd_declared_trait_without_definition) { BOOST_TEST(sizeof(is_unordered_set_impl((int_set*)0)) == sizeof(true_type)); + BOOST_TEST( + sizeof(is_unordered_set_impl((int_node_set*)0)) == sizeof(true_type)); } #ifdef BOOST_UNORDERED_FOA_TESTS #include +#include #else #include #endif @@ -118,10 +147,17 @@ UNORDERED_AUTO_TEST (use_fwd_declared_trait_without_definition) { UNORDERED_AUTO_TEST (use_fwd_declared_trait) { int_set x; BOOST_TEST(sizeof(is_unordered_set_impl(&x)) == sizeof(true_type)); - BOOST_TEST(sizeof(is_unordered_set_impl((int*)0)) == sizeof(false_type)); } +#ifdef BOOST_UNORDERED_FOA_TESTS +UNORDERED_AUTO_TEST (use_node_fwd_declared_trait) { + int_node_set x; + BOOST_TEST(sizeof(is_unordered_set_impl(&x)) == sizeof(true_type)); + BOOST_TEST(sizeof(is_unordered_set_impl((int*)0)) == sizeof(false_type)); +} +#endif + UNORDERED_AUTO_TEST (use_set_fwd_declared_function) { int_set x, y; x.insert(1); @@ -138,6 +174,24 @@ UNORDERED_AUTO_TEST (use_set_fwd_declared_function) { BOOST_TEST(call_not_equals(x, y)); } +#ifdef BOOST_UNORDERED_FOA_TESTS +UNORDERED_AUTO_TEST (use_node_set_fwd_declared_function) { + int_node_set x, y; + x.insert(1); + y.insert(2); + call_swap(x, y); + + BOOST_TEST(y.find(1) != y.end()); + BOOST_TEST(y.find(2) == y.end()); + + BOOST_TEST(x.find(1) == x.end()); + BOOST_TEST(x.find(2) != x.end()); + + BOOST_TEST(!call_equals(x, y)); + BOOST_TEST(call_not_equals(x, y)); +} +#endif + #ifndef BOOST_UNORDERED_FOA_TESTS UNORDERED_AUTO_TEST (use_multiset_fwd_declared_function) { int_multiset x, y;