From 903b568d13276274528501ad8f5c70d9bd27d8d2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ion=20Gazta=C3=B1aga?= Date: Thu, 6 Apr 2017 23:34:30 +0200 Subject: [PATCH] Split set/map tests as some compilers refuse to allocate too many sectios in the object file --- proj/vc7ide/container.sln | 8 +++ proj/vc7ide/tree_test.vcproj | 135 +++++++++++++++++++++++++++++++++++ test/map_test.cpp | 57 +-------------- test/set_test.cpp | 55 +------------- test/tree_test.cpp | 84 ++++++++++++++++++++++ 5 files changed, 233 insertions(+), 106 deletions(-) create mode 100644 proj/vc7ide/tree_test.vcproj create mode 100644 test/tree_test.cpp diff --git a/proj/vc7ide/container.sln b/proj/vc7ide/container.sln index daec7d5..c7f7a2b 100644 --- a/proj/vc7ide/container.sln +++ b/proj/vc7ide/container.sln @@ -311,6 +311,10 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "string_view_compat_test", " ProjectSection(ProjectDependencies) = postProject EndProjectSection EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tree_test", "tree_test.vcproj", "{5CE185C3-2609-4FA5-FE38-792BA0D3A606}" + ProjectSection(ProjectDependencies) = postProject + EndProjectSection +EndProject Global GlobalSection(SolutionConfiguration) = preSolution Debug = Debug @@ -629,6 +633,10 @@ Global {58CCE183-6092-48FE-A4F7-BA0D4A792607}.Debug.Build.0 = Debug|Win32 {58CCE183-6092-48FE-A4F7-BA0D4A792607}.Release.ActiveCfg = Release|Win32 {58CCE183-6092-48FE-A4F7-BA0D4A792607}.Release.Build.0 = Release|Win32 + {5CE185C3-2609-4FA5-FE38-792BA0D3A606}.Debug.ActiveCfg = Debug|Win32 + {5CE185C3-2609-4FA5-FE38-792BA0D3A606}.Debug.Build.0 = Debug|Win32 + {5CE185C3-2609-4FA5-FE38-792BA0D3A606}.Release.ActiveCfg = Release|Win32 + {5CE185C3-2609-4FA5-FE38-792BA0D3A606}.Release.Build.0 = Release|Win32 EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution EndGlobalSection diff --git a/proj/vc7ide/tree_test.vcproj b/proj/vc7ide/tree_test.vcproj new file mode 100644 index 0000000..6f80056 --- /dev/null +++ b/proj/vc7ide/tree_test.vcproj @@ -0,0 +1,135 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/test/map_test.cpp b/test/map_test.cpp index 9d8839b..dcb96f3 100644 --- a/test/map_test.cpp +++ b/test/map_test.cpp @@ -51,36 +51,6 @@ template class multimap , std::less , std::allocator< pair_t > >; - -namespace container_detail { - -//Instantiate base class as previous instantiations don't instantiate inherited members -template class tree - < pair_t - , select1st - , std::less - , test::simple_allocator - , tree_assoc_defaults - >; - -template class tree - < pair_t - , select1st - , std::less - , std::allocator - , tree_assoc_defaults - >; - -template class tree - < pair_t - , select1st - , std::less - , adaptive_pool - , tree_assoc_defaults - >; - -} //container_detail { - }} //boost::container class recursive_map @@ -275,12 +245,10 @@ int test_map_variants() { typedef typename GetAllocatorMap::template apply::map_type MyMap; typedef typename GetAllocatorMap::template apply::map_type MyMoveMap; - typedef typename GetAllocatorMap::template apply::map_type MyCopyMoveMap; typedef typename GetAllocatorMap::template apply::map_type MyCopyMap; typedef typename GetAllocatorMap::template apply::multimap_type MyMultiMap; typedef typename GetAllocatorMap::template apply::multimap_type MyMoveMultiMap; - typedef typename GetAllocatorMap::template apply::multimap_type MyCopyMoveMultiMap; typedef typename GetAllocatorMap::template apply::multimap_type MyCopyMultiMap; typedef std::map MyStdMap; @@ -304,15 +272,6 @@ int test_map_variants() return 1; } - if (0 != test::map_test< - MyCopyMoveMap - ,MyStdMap - ,MyCopyMoveMultiMap - ,MyStdMultiMap>()){ - std::cout << "Error in map_test" << std::endl; - return 1; - } - if (0 != test::map_test< MyCopyMap ,MyStdMap @@ -483,29 +442,19 @@ int main () // typedef map< int*, int*, std::less, std::allocator< std::pair > , tree_assoc_options< optimize_size, tree_type >::type > rbmap_size_optimized_no; - typedef map< int*, int*, std::less, std::allocator< std::pair > - , tree_assoc_options< optimize_size, tree_type >::type > rbmap_size_optimized_yes; - BOOST_STATIC_ASSERT(sizeof(rbmap_size_optimized_yes) < sizeof(rbmap_size_optimized_no)); - typedef map< int*, int*, std::less, std::allocator< std::pair > - , tree_assoc_options< optimize_size, tree_type >::type > avlmap_size_optimized_no; typedef map< int*, int*, std::less, std::allocator< std::pair > , tree_assoc_options< optimize_size, tree_type >::type > avlmap_size_optimized_yes; - BOOST_STATIC_ASSERT(sizeof(avlmap_size_optimized_yes) < sizeof(avlmap_size_optimized_no)); // // multimap // - typedef multimap< int*, int*, std::less, std::allocator< std::pair > - , tree_assoc_options< optimize_size, tree_type >::type > rbmmap_size_optimized_no; typedef multimap< int*, int*, std::less, std::allocator< std::pair > , tree_assoc_options< optimize_size, tree_type >::type > rbmmap_size_optimized_yes; - BOOST_STATIC_ASSERT(sizeof(rbmmap_size_optimized_yes) < sizeof(rbmmap_size_optimized_no)); - typedef multimap< int*, int*, std::less, std::allocator< std::pair > , tree_assoc_options< optimize_size, tree_type >::type > avlmmap_size_optimized_no; - typedef multimap< int*, int*, std::less, std::allocator< std::pair > - , tree_assoc_options< optimize_size, tree_type >::type > avlmmap_size_optimized_yes; - BOOST_STATIC_ASSERT(sizeof(avlmmap_size_optimized_yes) < sizeof(avlmmap_size_optimized_no)); + BOOST_STATIC_ASSERT(sizeof(rbmmap_size_optimized_yes) < sizeof(rbmap_size_optimized_no)); + BOOST_STATIC_ASSERT(sizeof(avlmap_size_optimized_yes) < sizeof(avlmmap_size_optimized_no)); + return 0; } diff --git a/test/set_test.cpp b/test/set_test.cpp index b3b8309..f805b4f 100644 --- a/test/set_test.cpp +++ b/test/set_test.cpp @@ -53,35 +53,6 @@ template class multiset , adaptive_pool >; -namespace container_detail { - -//Instantiate base class as previous instantiations don't instantiate inherited members -template class tree - < test::movable_and_copyable_int - , identity - , std::less - , test::simple_allocator - , tree_assoc_defaults - >; - -template class tree - < test::movable_and_copyable_int - , identity - , std::less - , std::allocator - , tree_assoc_defaults - >; - -template class tree - < test::movable_and_copyable_int - , identity - , std::less - , adaptive_pool - , tree_assoc_defaults - >; - -} //container_detail { - }} //boost::container //Test recursive structures @@ -301,12 +272,10 @@ int test_set_variants() { typedef typename GetAllocatorSet::template apply::set_type MySet; typedef typename GetAllocatorSet::template apply::set_type MyMoveSet; - typedef typename GetAllocatorSet::template apply::set_type MyCopyMoveSet; typedef typename GetAllocatorSet::template apply::set_type MyCopySet; typedef typename GetAllocatorSet::template apply::multiset_type MyMultiSet; typedef typename GetAllocatorSet::template apply::multiset_type MyMoveMultiSet; - typedef typename GetAllocatorSet::template apply::multiset_type MyCopyMoveMultiSet; typedef typename GetAllocatorSet::template apply::multiset_type MyCopyMultiSet; typedef std::set MyStdSet; @@ -330,15 +299,6 @@ int test_set_variants() return 1; } - if (0 != test::set_test< - MyCopyMoveSet - ,MyStdSet - ,MyCopyMoveMultiSet - ,MyStdMultiSet>()){ - std::cout << "Error in set_test" << std::endl; - return 1; - } - if (0 != test::set_test< MyCopySet ,MyStdSet @@ -452,29 +412,20 @@ int main () // typedef set< int*, std::less, std::allocator , tree_assoc_options< optimize_size, tree_type >::type > rbset_size_optimized_no; - typedef set< int*, std::less, std::allocator - , tree_assoc_options< optimize_size, tree_type >::type > rbset_size_optimized_yes; - BOOST_STATIC_ASSERT(sizeof(rbset_size_optimized_yes) < sizeof(rbset_size_optimized_no)); - typedef set< int*, std::less, std::allocator - , tree_assoc_options< optimize_size, tree_type >::type > avlset_size_optimized_no; typedef set< int*, std::less, std::allocator , tree_assoc_options< optimize_size, tree_type >::type > avlset_size_optimized_yes; - BOOST_STATIC_ASSERT(sizeof(avlset_size_optimized_yes) < sizeof(avlset_size_optimized_no)); // // multiset // - typedef multiset< int*, std::less, std::allocator - , tree_assoc_options< optimize_size, tree_type >::type > rbmset_size_optimized_no; typedef multiset< int*, std::less, std::allocator , tree_assoc_options< optimize_size, tree_type >::type > rbmset_size_optimized_yes; - BOOST_STATIC_ASSERT(sizeof(rbmset_size_optimized_yes) < sizeof(rbmset_size_optimized_no)); typedef multiset< int*, std::less, std::allocator , tree_assoc_options< optimize_size, tree_type >::type > avlmset_size_optimized_no; - typedef multiset< int*, std::less, std::allocator - , tree_assoc_options< optimize_size, tree_type >::type > avlmset_size_optimized_yes; - BOOST_STATIC_ASSERT(sizeof(avlmset_size_optimized_yes) < sizeof(avlmset_size_optimized_no)); + + BOOST_STATIC_ASSERT(sizeof(rbmset_size_optimized_yes) < sizeof(rbset_size_optimized_no)); + BOOST_STATIC_ASSERT(sizeof(avlset_size_optimized_yes) < sizeof(avlmset_size_optimized_no)); //////////////////////////////////// // Iterator testing diff --git a/test/tree_test.cpp b/test/tree_test.cpp new file mode 100644 index 0000000..6d84cd1 --- /dev/null +++ b/test/tree_test.cpp @@ -0,0 +1,84 @@ +////////////////////////////////////////////////////////////////////////////// +// +// (C) Copyright Ion Gaztanaga 2004-2013. 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) +// +// See http://www.boost.org/libs/container for documentation. +// +////////////////////////////////////////////////////////////////////////////// +#include +#include + +#include "movable_int.hpp" +#include "dummy_test_allocator.hpp" + +using namespace boost::container; + +typedef std::pair pair_t; + +namespace boost { +namespace container { + +//Explicit instantiation to detect compilation errors + +namespace container_detail { + +//Instantiate base class as previous instantiations don't instantiate inherited members +template class tree + < pair_t + , select1st + , std::less + , test::simple_allocator + , tree_assoc_defaults + >; + +template class tree + < pair_t + , select1st + , std::less + , std::allocator + , tree_assoc_defaults + >; + +template class tree + < pair_t + , select1st + , std::less + , adaptive_pool + , tree_assoc_defaults + >; + +//Instantiate base class as previous instantiations don't instantiate inherited members +template class tree + < test::movable_and_copyable_int + , identity + , std::less + , test::simple_allocator + , tree_assoc_defaults + >; + +template class tree + < test::movable_and_copyable_int + , identity + , std::less + , std::allocator + , tree_assoc_defaults + >; + +template class tree + < test::movable_and_copyable_int + , identity + , std::less + , adaptive_pool + , tree_assoc_defaults + >; + +} //container_detail { + +}} //boost::container + +int main () +{ + return 0; +}