From 1b868e19c3638fc48e20b9ac93b1ae75f9348ba3 Mon Sep 17 00:00:00 2001 From: Marshall Clow Date: Wed, 9 Mar 2016 17:19:07 +0000 Subject: [PATCH] Add some more tests for the containers type requirements llvm-svn: 263029 --- .../std/containers/sequences/array/types.pass.cpp | 14 +++++++ .../std/containers/sequences/deque/types.pass.cpp | 14 +++++++ .../sequences/forwardlist/types.pass.cpp | 14 +++++++ .../std/containers/sequences/list/types.pass.cpp | 45 ++++++++++++++++------ .../sequences/vector.bool/types.pass.cpp | 10 ++++- .../std/containers/sequences/vector/types.pass.cpp | 34 +++++++++++++--- 6 files changed, 112 insertions(+), 19 deletions(-) diff --git a/libcxx/test/std/containers/sequences/array/types.pass.cpp b/libcxx/test/std/containers/sequences/array/types.pass.cpp index 065ade9..a59b63d 100644 --- a/libcxx/test/std/containers/sequences/array/types.pass.cpp +++ b/libcxx/test/std/containers/sequences/array/types.pass.cpp @@ -44,6 +44,13 @@ int main() static_assert((std::is_same::value), ""); static_assert((std::is_same >::value), ""); static_assert((std::is_same >::value), ""); + + static_assert((std::is_signed::value), ""); + static_assert((std::is_unsigned::value), ""); + static_assert((std::is_same::difference_type>::value), ""); + static_assert((std::is_same::difference_type>::value), ""); } { typedef int* T; @@ -58,5 +65,12 @@ int main() static_assert((std::is_same::value), ""); static_assert((std::is_same >::value), ""); static_assert((std::is_same >::value), ""); + + static_assert((std::is_signed::value), ""); + static_assert((std::is_unsigned::value), ""); + static_assert((std::is_same::difference_type>::value), ""); + static_assert((std::is_same::difference_type>::value), ""); } } diff --git a/libcxx/test/std/containers/sequences/deque/types.pass.cpp b/libcxx/test/std/containers/sequences/deque/types.pass.cpp index da9470d..73dc964 100644 --- a/libcxx/test/std/containers/sequences/deque/types.pass.cpp +++ b/libcxx/test/std/containers/sequences/deque/types.pass.cpp @@ -64,6 +64,12 @@ test() static_assert((std::is_same< typename C::const_reverse_iterator, std::reverse_iterator >::value), ""); + static_assert((std::is_signed::value), ""); + static_assert((std::is_unsigned::value), ""); + static_assert((std::is_same::difference_type>::value), ""); + static_assert((std::is_same::difference_type>::value), ""); } int main() @@ -73,6 +79,7 @@ int main() test >(); static_assert((std::is_same::allocator_type, std::allocator >::value), ""); + #if __cplusplus >= 201103L { typedef std::deque> C; @@ -85,6 +92,13 @@ int main() // min_allocator doesn't have a size_type, so one gets synthesized static_assert((std::is_same::type>::value), ""); static_assert((std::is_same::value), ""); + + static_assert((std::is_signed::value), ""); + static_assert((std::is_unsigned::value), ""); + static_assert((std::is_same::difference_type>::value), ""); + static_assert((std::is_same::difference_type>::value), ""); } #endif } diff --git a/libcxx/test/std/containers/sequences/forwardlist/types.pass.cpp b/libcxx/test/std/containers/sequences/forwardlist/types.pass.cpp index a1f8862..9a4e026 100644 --- a/libcxx/test/std/containers/sequences/forwardlist/types.pass.cpp +++ b/libcxx/test/std/containers/sequences/forwardlist/types.pass.cpp @@ -44,6 +44,13 @@ int main() static_assert((std::is_same::value), ""); static_assert((std::is_same::value), ""); static_assert((std::is_same::value), ""); + + static_assert((std::is_signed::value), ""); + static_assert((std::is_unsigned::value), ""); + static_assert((std::is_same::difference_type>::value), ""); + static_assert((std::is_same::difference_type>::value), ""); } #if __cplusplus >= 201103L { @@ -57,6 +64,13 @@ int main() // min_allocator doesn't have a size_type, so one gets synthesized static_assert((std::is_same::type>::value), ""); static_assert((std::is_same::value), ""); + + static_assert((std::is_signed::value), ""); + static_assert((std::is_unsigned::value), ""); + static_assert((std::is_same::difference_type>::value), ""); + static_assert((std::is_same::difference_type>::value), ""); } #endif } diff --git a/libcxx/test/std/containers/sequences/list/types.pass.cpp b/libcxx/test/std/containers/sequences/list/types.pass.cpp index 7730360..e70c5d2 100644 --- a/libcxx/test/std/containers/sequences/list/types.pass.cpp +++ b/libcxx/test/std/containers/sequences/list/types.pass.cpp @@ -31,18 +31,39 @@ struct A { std::list v; }; // incomplete type support int main() { - static_assert((std::is_same::value_type, int>::value), ""); - static_assert((std::is_same::allocator_type, std::allocator >::value), ""); - static_assert((std::is_same::reference, std::allocator::reference>::value), ""); - static_assert((std::is_same::const_reference, std::allocator::const_reference>::value), ""); - static_assert((std::is_same::pointer, std::allocator::pointer>::value), ""); - static_assert((std::is_same::const_pointer, std::allocator::const_pointer>::value), ""); + { + typedef std::list C; + static_assert((std::is_same::value), ""); + static_assert((std::is_same >::value), ""); + static_assert((std::is_same::reference>::value), ""); + static_assert((std::is_same::const_reference>::value), ""); + static_assert((std::is_same::pointer>::value), ""); + static_assert((std::is_same::const_pointer>::value), ""); + + static_assert((std::is_signed::value), ""); + static_assert((std::is_unsigned::value), ""); + static_assert((std::is_same::difference_type>::value), ""); + static_assert((std::is_same::difference_type>::value), ""); + } + #if __cplusplus >= 201103L - static_assert((std::is_same>::value_type, int>::value), ""); - static_assert((std::is_same>::allocator_type, min_allocator >::value), ""); - static_assert((std::is_same>::reference, int&>::value), ""); - static_assert((std::is_same>::const_reference, const int&>::value), ""); - static_assert((std::is_same>::pointer, min_pointer>::value), ""); - static_assert((std::is_same>::const_pointer, min_pointer>::value), ""); + { + typedef std::list> C; + static_assert((std::is_same::value), ""); + static_assert((std::is_same >::value), ""); + static_assert((std::is_same::value), ""); + static_assert((std::is_same::value), ""); + static_assert((std::is_same>::value), ""); + static_assert((std::is_same>::value), ""); + + static_assert((std::is_signed::value), ""); + static_assert((std::is_unsigned::value), ""); + static_assert((std::is_same::difference_type>::value), ""); + static_assert((std::is_same::difference_type>::value), ""); + } #endif } diff --git a/libcxx/test/std/containers/sequences/vector.bool/types.pass.cpp b/libcxx/test/std/containers/sequences/vector.bool/types.pass.cpp index b266b3b..4fb03f5 100644 --- a/libcxx/test/std/containers/sequences/vector.bool/types.pass.cpp +++ b/libcxx/test/std/containers/sequences/vector.bool/types.pass.cpp @@ -46,7 +46,15 @@ test() static_assert((std::is_same::value), ""); static_assert((std::is_same::size_type>::value), ""); static_assert((std::is_same::difference_type>::value), ""); - static_assert((std::is_same< + + static_assert((std::is_signed::value), ""); + static_assert((std::is_unsigned::value), ""); + static_assert((std::is_same::difference_type>::value), ""); + static_assert((std::is_same::difference_type>::value), ""); + + static_assert((std::is_same< typename std::iterator_traits::iterator_category, std::random_access_iterator_tag>::value), ""); static_assert((std::is_same< diff --git a/libcxx/test/std/containers/sequences/vector/types.pass.cpp b/libcxx/test/std/containers/sequences/vector/types.pass.cpp index 0fbc7e3..159a265 100644 --- a/libcxx/test/std/containers/sequences/vector/types.pass.cpp +++ b/libcxx/test/std/containers/sequences/vector/types.pass.cpp @@ -45,6 +45,9 @@ test() { typedef std::vector C; +// TODO: These tests should use allocator_traits to get stuff, rather than +// blindly pulling typedefs out of the allocator. This is why we can't call +// test>() below. static_assert((std::is_same::value), ""); static_assert((std::is_same::value), ""); static_assert((std::is_same::value), ""); @@ -54,6 +57,14 @@ test() static_assert((std::is_same::value), ""); static_assert((std::is_same::value), ""); static_assert((std::is_same::value), ""); + + static_assert((std::is_signed::value), ""); + static_assert((std::is_unsigned::value), ""); +// static_assert((std::is_same::difference_type>::value), ""); +// static_assert((std::is_same::difference_type>::value), ""); + static_assert((std::is_same< typename std::iterator_traits::iterator_category, std::random_access_iterator_tag>::value), ""); @@ -76,11 +87,22 @@ int main() static_assert((std::is_same::allocator_type, std::allocator >::value), ""); #if __cplusplus >= 201103L - static_assert((std::is_same>::value_type, int>::value), ""); - static_assert((std::is_same>::allocator_type, min_allocator >::value), ""); - static_assert((std::is_same>::reference, int&>::value), ""); - static_assert((std::is_same>::const_reference, const int&>::value), ""); - static_assert((std::is_same>::pointer, min_pointer>::value), ""); - static_assert((std::is_same>::const_pointer, min_pointer>::value), ""); + { + + typedef std::vector > C; + static_assert((std::is_same::value), ""); + static_assert((std::is_same >::value), ""); + static_assert((std::is_same::value), ""); + static_assert((std::is_same::value), ""); + static_assert((std::is_same>::value), ""); + static_assert((std::is_same>::value), ""); + + static_assert((std::is_signed::value), ""); + static_assert((std::is_unsigned::value), ""); +// static_assert((std::is_same::difference_type>::value), ""); +// static_assert((std::is_same::difference_type>::value), ""); + } #endif } -- 2.7.4