Imported Upstream version 1.72.0
[platform/upstream/boost.git] / libs / poly_collection / test / test_construction.cpp
index 8a23e1f..b1baa6e 100644 (file)
@@ -101,6 +101,16 @@ void test_allocator_aware_construction()
 
     BOOST_TEST(p2.empty());
     do_((BOOST_TEST(!p2.template is_registered<Types>()),0)...);
+
+#if !defined(BOOST_MSVC)&&\
+    BOOST_WORKAROUND(BOOST_DINKUMWARE_STDLIB,BOOST_TESTED_AT(804))
+    /* Very odd behavior probably due to std::unordered_map allocator move
+     * ctor being implemented with move assignment, as reported in
+     * https://github.com/boostorg/poly_collection/issues/16
+     */
+
+    if(!(Propagate&&!AlwaysEqual))
+#endif
     BOOST_TEST(p3.get_allocator().comes_from(root2));
   }
   {
@@ -120,6 +130,14 @@ void test_allocator_aware_construction()
 
     if(!((Propagate&&AlwaysEqual)||(!Propagate&&!AlwaysEqual)))
 #endif
+#if !defined(BOOST_MSVC)&&\
+    BOOST_WORKAROUND(BOOST_DINKUMWARE_STDLIB,BOOST_TESTED_AT(804))
+    /* std::unordered_map copy assignment does not propagate allocators, as
+     * reported in https://github.com/boostorg/poly_collection/issues/16
+     */
+
+    if(!Propagate)
+#endif
     BOOST_TEST(p2.get_allocator().comes_from(Propagate?root1:root2));
   }
 #if BOOST_WORKAROUND(BOOST_MSVC,<=1900)
@@ -147,6 +165,14 @@ void test_allocator_aware_construction()
 
     if(!((Propagate&&AlwaysEqual)||(!Propagate&&!AlwaysEqual)))
 #endif
+#if !defined(BOOST_MSVC)&&\
+    BOOST_WORKAROUND(BOOST_DINKUMWARE_STDLIB,BOOST_TESTED_AT(804))
+    /* std::unordered_map move assignment does not propagate equal allocators,
+     * as reported in https://github.com/boostorg/poly_collection/issues/16
+     */
+
+    if(!(Propagate&&AlwaysEqual))
+#endif
     BOOST_TEST(p3.get_allocator().comes_from(Propagate?root1:root2));
   }
 #if BOOST_WORKAROUND(BOOST_MSVC,<=1900)
@@ -182,6 +208,14 @@ void test_allocator_aware_construction()
 
        &&!((Propagate&&AlwaysEqual)||(!Propagate&&!AlwaysEqual))
 #endif
+#if !defined(BOOST_MSVC)&&\
+    BOOST_WORKAROUND(BOOST_DINKUMWARE_STDLIB,BOOST_TESTED_AT(804))
+      /* std::unordered_map::swap does not swap equal allocators, as reported
+       * in https://github.com/boostorg/poly_collection/issues/16
+       */
+
+      &&!(Propagate&&AlwaysEqual)
+#endif
     ){
       BOOST_TEST(p2.get_allocator().comes_from(Propagate?root2:root1));
       BOOST_TEST(p3.get_allocator().comes_from(Propagate?root1:root2));