diff options
Diffstat (limited to 'libcxx/test')
8 files changed, 68 insertions, 19 deletions
diff --git a/libcxx/test/std/containers/sequences/array/front_back.pass.cpp b/libcxx/test/std/containers/sequences/array/front_back.pass.cpp index 1a714369ffc..5e0cb08ede0 100644 --- a/libcxx/test/std/containers/sequences/array/front_back.pass.cpp +++ b/libcxx/test/std/containers/sequences/array/front_back.pass.cpp @@ -68,10 +68,14 @@ int main(int, char**) typedef std::array<T, 0> C; C c = {}; C const& cc = c; - static_assert((std::is_same<decltype(c.front()), T &>::value), ""); - static_assert((std::is_same<decltype(cc.front()), const T &>::value), ""); - static_assert((std::is_same<decltype(c.back()), T &>::value), ""); - static_assert((std::is_same<decltype(cc.back()), const T &>::value), ""); + ASSERT_SAME_TYPE(decltype( c.back()), typename C::reference); + ASSERT_SAME_TYPE(decltype(cc.back()), typename C::const_reference); + LIBCPP_ASSERT_NOEXCEPT( c.back()); + LIBCPP_ASSERT_NOEXCEPT( cc.back()); + ASSERT_SAME_TYPE(decltype( c.front()), typename C::reference); + ASSERT_SAME_TYPE(decltype(cc.front()), typename C::const_reference); + LIBCPP_ASSERT_NOEXCEPT( c.front()); + LIBCPP_ASSERT_NOEXCEPT( cc.front()); if (c.size() > (0)) { // always false TEST_IGNORE_NODISCARD c.front(); TEST_IGNORE_NODISCARD c.back(); @@ -84,10 +88,14 @@ int main(int, char**) typedef std::array<const T, 0> C; C c = {{}}; C const& cc = c; - static_assert((std::is_same<decltype(c.front()), const T &>::value), ""); - static_assert((std::is_same<decltype(cc.front()), const T &>::value), ""); - static_assert((std::is_same<decltype(c.back()), const T &>::value), ""); - static_assert((std::is_same<decltype(cc.back()), const T &>::value), ""); + ASSERT_SAME_TYPE(decltype( c.back()), typename C::reference); + ASSERT_SAME_TYPE(decltype(cc.back()), typename C::const_reference); + LIBCPP_ASSERT_NOEXCEPT( c.back()); + LIBCPP_ASSERT_NOEXCEPT( cc.back()); + ASSERT_SAME_TYPE(decltype( c.front()), typename C::reference); + ASSERT_SAME_TYPE(decltype(cc.front()), typename C::const_reference); + LIBCPP_ASSERT_NOEXCEPT( c.front()); + LIBCPP_ASSERT_NOEXCEPT( cc.front()); if (c.size() > (0)) { TEST_IGNORE_NODISCARD c.front(); TEST_IGNORE_NODISCARD c.back(); diff --git a/libcxx/test/std/containers/sequences/deque/deque.capacity/access.pass.cpp b/libcxx/test/std/containers/sequences/deque/deque.capacity/access.pass.cpp index c7d9006d2c1..583dba28a24 100644 --- a/libcxx/test/std/containers/sequences/deque/deque.capacity/access.pass.cpp +++ b/libcxx/test/std/containers/sequences/deque/deque.capacity/access.pass.cpp @@ -54,8 +54,12 @@ int main(int, char**) { typedef std::deque<int> C; C c = make<std::deque<int> >(10); - LIBCPP_ASSERT_NOEXCEPT(c[0]); - ASSERT_SAME_TYPE(C::reference, decltype(c[0])); + ASSERT_SAME_TYPE(decltype(c[0]), C::reference); + LIBCPP_ASSERT_NOEXCEPT( c[0]); + LIBCPP_ASSERT_NOEXCEPT( c.front()); + ASSERT_SAME_TYPE(decltype(c.front()), C::reference); + LIBCPP_ASSERT_NOEXCEPT( c.back()); + ASSERT_SAME_TYPE(decltype(c.back()), C::reference); for (int i = 0; i < 10; ++i) assert(c[i] == i); for (int i = 0; i < 10; ++i) @@ -66,8 +70,12 @@ int main(int, char**) { typedef std::deque<int> C; const C c = make<std::deque<int> >(10); - LIBCPP_ASSERT_NOEXCEPT(c[0]); - ASSERT_SAME_TYPE(C::const_reference, decltype(c[0])); + ASSERT_SAME_TYPE(decltype(c[0]), C::const_reference); + LIBCPP_ASSERT_NOEXCEPT( c[0]); + LIBCPP_ASSERT_NOEXCEPT( c.front()); + ASSERT_SAME_TYPE(decltype(c.front()), C::const_reference); + LIBCPP_ASSERT_NOEXCEPT( c.back()); + ASSERT_SAME_TYPE(decltype(c.back()), C::const_reference); for (int i = 0; i < 10; ++i) assert(c[i] == i); for (int i = 0; i < 10; ++i) @@ -79,8 +87,12 @@ int main(int, char**) { typedef std::deque<int, min_allocator<int>> C; C c = make<std::deque<int, min_allocator<int>> >(10); - LIBCPP_ASSERT_NOEXCEPT(c[0]); - ASSERT_SAME_TYPE(C::reference, decltype(c[0])); + ASSERT_SAME_TYPE(decltype(c[0]), C::reference); + LIBCPP_ASSERT_NOEXCEPT( c[0]); + LIBCPP_ASSERT_NOEXCEPT( c.front()); + ASSERT_SAME_TYPE(decltype(c.front()), C::reference); + LIBCPP_ASSERT_NOEXCEPT( c.back()); + ASSERT_SAME_TYPE(decltype(c.back()), C::reference); for (int i = 0; i < 10; ++i) assert(c[i] == i); for (int i = 0; i < 10; ++i) @@ -91,8 +103,12 @@ int main(int, char**) { typedef std::deque<int, min_allocator<int>> C; const C c = make<std::deque<int, min_allocator<int>> >(10); - LIBCPP_ASSERT_NOEXCEPT(c[0]); - ASSERT_SAME_TYPE(C::const_reference, decltype(c[0])); + ASSERT_SAME_TYPE(decltype(c[0]), C::const_reference); + LIBCPP_ASSERT_NOEXCEPT( c[0]); + LIBCPP_ASSERT_NOEXCEPT( c.front()); + ASSERT_SAME_TYPE(decltype(c.front()), C::const_reference); + LIBCPP_ASSERT_NOEXCEPT( c.back()); + ASSERT_SAME_TYPE(decltype(c.back()), C::const_reference); for (int i = 0; i < 10; ++i) assert(c[i] == i); for (int i = 0; i < 10; ++i) diff --git a/libcxx/test/std/strings/basic.string/string.access/back.pass.cpp b/libcxx/test/std/strings/basic.string/string.access/back.pass.cpp index 3831da0845c..dd2a59a7615 100644 --- a/libcxx/test/std/strings/basic.string/string.access/back.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.access/back.pass.cpp @@ -25,6 +25,10 @@ void test(S s) { const S& cs = s; + ASSERT_SAME_TYPE(decltype( s.back()), typename S::reference); + ASSERT_SAME_TYPE(decltype(cs.back()), typename S::const_reference); + LIBCPP_ASSERT_NOEXCEPT( s.back()); + LIBCPP_ASSERT_NOEXCEPT( cs.back()); assert(&cs.back() == &cs[cs.size()-1]); assert(&s.back() == &s[cs.size()-1]); s.back() = typename S::value_type('z'); diff --git a/libcxx/test/std/strings/basic.string/string.access/front.pass.cpp b/libcxx/test/std/strings/basic.string/string.access/front.pass.cpp index d51a12f0a77..b666c9c6870 100644 --- a/libcxx/test/std/strings/basic.string/string.access/front.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.access/front.pass.cpp @@ -25,6 +25,10 @@ void test(S s) { const S& cs = s; + ASSERT_SAME_TYPE(decltype( s.front()), typename S::reference); + ASSERT_SAME_TYPE(decltype(cs.front()), typename S::const_reference); + LIBCPP_ASSERT_NOEXCEPT( s.front()); + LIBCPP_ASSERT_NOEXCEPT( cs.front()); assert(&cs.front() == &cs[0]); assert(&s.front() == &s[0]); s.front() = typename S::value_type('z'); diff --git a/libcxx/test/std/strings/basic.string/string.access/index.pass.cpp b/libcxx/test/std/strings/basic.string/string.access/index.pass.cpp index 3a1224ca301..ec02fa4c32b 100644 --- a/libcxx/test/std/strings/basic.string/string.access/index.pass.cpp +++ b/libcxx/test/std/strings/basic.string/string.access/index.pass.cpp @@ -26,6 +26,10 @@ int main(int, char**) typedef std::string S; S s("0123456789"); const S& cs = s; + ASSERT_SAME_TYPE(decltype( s[0]), typename S::reference); + ASSERT_SAME_TYPE(decltype(cs[0]), typename S::const_reference); + LIBCPP_ASSERT_NOEXCEPT( s[0]); + LIBCPP_ASSERT_NOEXCEPT( cs[0]); for (S::size_type i = 0; i < cs.size(); ++i) { assert(s[i] == static_cast<char>('0' + i)); @@ -40,6 +44,10 @@ int main(int, char**) typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> S; S s("0123456789"); const S& cs = s; + ASSERT_SAME_TYPE(decltype( s[0]), typename S::reference); + ASSERT_SAME_TYPE(decltype(cs[0]), typename S::const_reference); + LIBCPP_ASSERT_NOEXCEPT( s[0]); + LIBCPP_ASSERT_NOEXCEPT( cs[0]); for (S::size_type i = 0; i < cs.size(); ++i) { assert(s[i] == static_cast<char>('0' + i)); diff --git a/libcxx/test/std/strings/string.view/string.view.access/back.pass.cpp b/libcxx/test/std/strings/string.view/string.view.access/back.pass.cpp index 4505f1cf981..76487b16157 100644 --- a/libcxx/test/std/strings/string.view/string.view.access/back.pass.cpp +++ b/libcxx/test/std/strings/string.view/string.view.access/back.pass.cpp @@ -18,7 +18,10 @@ template <typename CharT> bool test ( const CharT *s, size_t len ) { - std::basic_string_view<CharT> sv ( s, len ); + typedef std::basic_string_view<CharT> SV; + SV sv ( s, len ); + ASSERT_SAME_TYPE(decltype(sv.back()), typename SV::const_reference); + LIBCPP_ASSERT_NOEXCEPT( sv.back()); assert ( sv.length() == len ); assert ( sv.back() == s[len-1] ); return &sv.back() == s + len - 1; diff --git a/libcxx/test/std/strings/string.view/string.view.access/front.pass.cpp b/libcxx/test/std/strings/string.view/string.view.access/front.pass.cpp index 554ed1bab12..eb7138950a7 100644 --- a/libcxx/test/std/strings/string.view/string.view.access/front.pass.cpp +++ b/libcxx/test/std/strings/string.view/string.view.access/front.pass.cpp @@ -18,7 +18,10 @@ template <typename CharT> bool test ( const CharT *s, size_t len ) { - std::basic_string_view<CharT> sv ( s, len ); + typedef std::basic_string_view<CharT> SV; + SV sv ( s, len ); + ASSERT_SAME_TYPE(decltype(sv.front()), typename SV::const_reference); + LIBCPP_ASSERT_NOEXCEPT( sv.front()); assert ( sv.length() == len ); assert ( sv.front() == s[0] ); return &sv.front() == s; diff --git a/libcxx/test/std/strings/string.view/string.view.access/index.pass.cpp b/libcxx/test/std/strings/string.view/string.view.access/index.pass.cpp index 33992de7c05..05b704c642a 100644 --- a/libcxx/test/std/strings/string.view/string.view.access/index.pass.cpp +++ b/libcxx/test/std/strings/string.view/string.view.access/index.pass.cpp @@ -18,7 +18,10 @@ template <typename CharT> void test ( const CharT *s, size_t len ) { - std::basic_string_view<CharT> sv ( s, len ); + typedef std::basic_string_view<CharT> SV; + SV sv ( s, len ); + ASSERT_SAME_TYPE(decltype(sv[0]), typename SV::const_reference); + LIBCPP_ASSERT_NOEXCEPT( sv[0]); assert ( sv.length() == len ); for ( size_t i = 0; i < len; ++i ) { assert ( sv[i] == s[i] ); |