basic_string.pass.cpp 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  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. #include <experimental/string_view>
  13. #include <cassert>
  14. #include "test_macros.h"
  15. template<typename CharT>
  16. void test ( const CharT *s ) {
  17. typedef std::experimental::basic_string_view<CharT> string_view_t;
  18. typedef std::basic_string<CharT> string_t;
  19. {
  20. string_view_t sv1 ( s );
  21. string_t str = (string_t) sv1;
  22. assert ( sv1.size() == str.size ());
  23. assert ( std::char_traits<CharT>::compare ( sv1.data(), str.data(), sv1.size()) == 0 );
  24. }
  25. {
  26. string_view_t sv1;
  27. string_t str = (string_t) sv1;
  28. assert ( sv1.size() == 0);
  29. assert ( sv1.size() == str.size ());
  30. }
  31. }
  32. int main () {
  33. test ( "ABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDE" );
  34. test ( "ABCDE");
  35. test ( "a" );
  36. test ( "" );
  37. test ( L"ABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDE" );
  38. test ( L"ABCDE" );
  39. test ( L"a" );
  40. test ( L"" );
  41. #if TEST_STD_VER >= 11
  42. test ( u"ABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDE" );
  43. test ( u"ABCDE" );
  44. test ( u"a" );
  45. test ( u"" );
  46. test ( U"ABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDE" );
  47. test ( U"ABCDE" );
  48. test ( U"a" );
  49. test ( U"" );
  50. #endif
  51. }