aboutsummaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/std/input.output/string.streams/stringbuf/stringbuf.virtuals/seekoff.pass.cpp24
-rw-r--r--test/std/strings/string.view/types.pass.cpp77
2 files changed, 101 insertions, 0 deletions
diff --git a/test/std/input.output/string.streams/stringbuf/stringbuf.virtuals/seekoff.pass.cpp b/test/std/input.output/string.streams/stringbuf/stringbuf.virtuals/seekoff.pass.cpp
index 6d20db13189a..8ec69cb24b60 100644
--- a/test/std/input.output/string.streams/stringbuf/stringbuf.virtuals/seekoff.pass.cpp
+++ b/test/std/input.output/string.streams/stringbuf/stringbuf.virtuals/seekoff.pass.cpp
@@ -21,6 +21,30 @@
int main()
{
{
+ std::stringbuf sb(std::ios_base::in);
+ assert(sb.pubseekoff(3, std::ios_base::beg, std::ios_base::out) == -1);
+ assert(sb.pubseekoff(3, std::ios_base::cur, std::ios_base::out) == -1);
+ assert(sb.pubseekoff(-3, std::ios_base::end, std::ios_base::out) == -1);
+ assert(sb.pubseekoff(3, std::ios_base::beg, std::ios_base::in | std::ios_base::out) == -1);
+ assert(sb.pubseekoff(3, std::ios_base::cur, std::ios_base::in | std::ios_base::out) == -1);
+ assert(sb.pubseekoff(-3, std::ios_base::end, std::ios_base::in | std::ios_base::out) == -1);
+ assert(sb.pubseekoff(0, std::ios_base::beg, std::ios_base::in) == 0);
+ assert(sb.pubseekoff(0, std::ios_base::cur, std::ios_base::in) == 0);
+ assert(sb.pubseekoff(0, std::ios_base::end, std::ios_base::in) == 0);
+ }
+ {
+ std::stringbuf sb(std::ios_base::out);
+ assert(sb.pubseekoff(3, std::ios_base::beg, std::ios_base::in) == -1);
+ assert(sb.pubseekoff(3, std::ios_base::cur, std::ios_base::in) == -1);
+ assert(sb.pubseekoff(-3, std::ios_base::end, std::ios_base::in) == -1);
+ assert(sb.pubseekoff(3, std::ios_base::beg, std::ios_base::in | std::ios_base::out) == -1);
+ assert(sb.pubseekoff(3, std::ios_base::cur, std::ios_base::in | std::ios_base::out) == -1);
+ assert(sb.pubseekoff(-3, std::ios_base::end, std::ios_base::in | std::ios_base::out) == -1);
+ assert(sb.pubseekoff(0, std::ios_base::beg, std::ios_base::out) == 0);
+ assert(sb.pubseekoff(0, std::ios_base::cur, std::ios_base::out) == 0);
+ assert(sb.pubseekoff(0, std::ios_base::end, std::ios_base::out) == 0);
+ }
+ {
std::stringbuf sb("0123456789", std::ios_base::in);
assert(sb.pubseekoff(3, std::ios_base::beg, std::ios_base::out) == -1);
assert(sb.pubseekoff(3, std::ios_base::cur, std::ios_base::out) == -1);
diff --git a/test/std/strings/string.view/types.pass.cpp b/test/std/strings/string.view/types.pass.cpp
new file mode 100644
index 000000000000..68bbc29b9aa0
--- /dev/null
+++ b/test/std/strings/string.view/types.pass.cpp
@@ -0,0 +1,77 @@
+//===----------------------------------------------------------------------===//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file is dual licensed under the MIT and the University of Illinois Open
+// Source Licenses. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+// <string_view>
+
+// Test nested types and default template args:
+
+// template<class charT, class traits = char_traits<charT>>
+// {
+// public:
+// // types:
+// using traits_type = traits;
+// using value_type = charT;
+// using pointer = value_type*;
+// using const_pointer = const value_type*;
+// using reference = value_type&;
+// using const_reference = const value_type&;
+// using const_iterator = implementation-defined ; // see 24.4.2.2
+// using iterator = const_iterator;
+// using const_reverse_iterator = reverse_iterator<const_iterator>;
+// using iterator = const_reverse_iterator;
+// using size_type = size_t;
+// using difference_type = ptrdiff_t;
+// static constexpr size_type npos = size_type(-1);
+//
+// };
+
+#include <string_view>
+#include <iterator>
+#include <type_traits>
+
+#include "test_macros.h"
+
+template <class Traits>
+void
+test()
+{
+ typedef std::basic_string_view<typename Traits::char_type, Traits> S;
+
+ static_assert((std::is_same<typename S::traits_type, Traits>::value), "");
+ static_assert((std::is_same<typename S::value_type, typename Traits::char_type>::value), "");
+ static_assert((std::is_same<typename S::size_type, std::size_t>::value), "");
+ static_assert((std::is_same<typename S::difference_type, ptrdiff_t>::value), "");
+ static_assert((std::is_same<typename S::reference, typename S::value_type&>::value), "");
+ static_assert((std::is_same<typename S::const_reference, const typename S::value_type&>::value), "");
+ static_assert((std::is_same<typename S::pointer, typename S::value_type*>::value), "");
+ static_assert((std::is_same<typename S::const_pointer, const typename S::value_type*>::value), "");
+ static_assert((std::is_same<
+ typename std::iterator_traits<typename S::iterator>::iterator_category,
+ std::random_access_iterator_tag>::value), "");
+ static_assert((std::is_same<
+ typename std::iterator_traits<typename S::const_iterator>::iterator_category,
+ std::random_access_iterator_tag>::value), "");
+ static_assert((std::is_same<
+ typename S::reverse_iterator,
+ std::reverse_iterator<typename S::iterator> >::value), "");
+ static_assert((std::is_same<
+ typename S::const_reverse_iterator,
+ std::reverse_iterator<typename S::const_iterator> >::value), "");
+ static_assert(S::npos == -1, "");
+ static_assert((std::is_same<typename S::iterator, typename S::const_iterator>::value), "");
+ static_assert((std::is_same<typename S::reverse_iterator, typename S::const_reverse_iterator>::value), "");
+}
+
+int main()
+{
+ test<std::char_traits<char> >();
+ test<std::char_traits<wchar_t> >();
+ static_assert((std::is_same<std::basic_string_view<char>::traits_type,
+ std::char_traits<char> >::value), "");
+}