to_string.pass.cpp 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. //===----------------------------------------------------------------------===//
  2. //
  3. // The LLVM Compiler Infrastructure
  4. //
  5. // This file is dual licensed under the MIT and the University of Illinois Open
  6. // Source Licenses. See LICENSE.TXT for details.
  7. //
  8. //===----------------------------------------------------------------------===//
  9. // <string_view>
  10. // template<class Allocator>
  11. // explicit operator basic_string<_CharT, _Traits, Allocator> () const;
  12. // template<class _CharT, class _Traits = char_traits<_CharT>, class Allocator = allocator<_CharT> >
  13. // basic_string<_CharT, _Traits, Allocator> to_string (
  14. // basic_string_view<_CharT, _Traits> _sv, const Allocator& _a = Allocator()) const;
  15. #include <experimental/string_view>
  16. #include <cassert>
  17. #include "min_allocator.h"
  18. template<typename CharT>
  19. void test ( const CharT *s ) {
  20. typedef std::basic_string<CharT> String ;
  21. {
  22. const std::experimental::basic_string_view<CharT> sv1 ( s );
  23. String str1 = (String) sv1;
  24. assert ( sv1.size() == str1.size ());
  25. assert ( std::char_traits<CharT>::compare ( sv1.data(), str1.data(), sv1.size()) == 0 );
  26. #if TEST_STD_VER >= 11
  27. auto str2 = sv1.to_string(min_allocator<CharT>());
  28. assert ( sv1.size() == str2.size ());
  29. assert ( std::char_traits<CharT>::compare ( sv1.data(), str2.data(), sv1.size()) == 0 );
  30. #endif
  31. }
  32. {
  33. const std::experimental::basic_string_view<CharT> sv1;
  34. String str1 = (String) sv1;
  35. assert ( sv1.size() == 0);
  36. assert ( sv1.size() == str1.size ());
  37. #if TEST_STD_VER >= 11
  38. auto str2 = sv1.to_string(min_allocator<CharT>());
  39. assert ( sv1.size() == str2.size ());
  40. #endif
  41. }
  42. }
  43. int main () {
  44. test ( "ABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDE" );
  45. test ( "ABCDE");
  46. test ( "a" );
  47. test ( "" );
  48. test ( L"ABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDE" );
  49. test ( L"ABCDE" );
  50. test ( L"a" );
  51. test ( L"" );
  52. #if TEST_STD_VER >= 11
  53. test ( u"ABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDE" );
  54. test ( u"ABCDE" );
  55. test ( u"a" );
  56. test ( u"" );
  57. test ( U"ABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDE" );
  58. test ( U"ABCDE" );
  59. test ( U"a" );
  60. test ( U"" );
  61. #endif
  62. }