PageRenderTime 45ms CodeModel.GetById 21ms RepoModel.GetById 0ms app.codeStats 0ms

/deps/libcxx/test/re/re.iter/re.tokiter/re.tokiter.incr/post.pass.cpp

https://github.com/dslama1/runtime
C++ | 135 lines | 119 code | 5 blank | 11 comment | 68 complexity | a9bf74cfb842ea78d9f297eb67f0a0db MD5 | raw file
Possible License(s): Apache-2.0, JSON, BSD-3-Clause, LGPL-2.1
  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. // <regex>
  10. // class regex_token_iterator<BidirectionalIterator, charT, traits>
  11. // regex_token_iterator& operator++(int);
  12. #include <regex>
  13. #include <cassert>
  14. int main()
  15. {
  16. {
  17. std::regex phone_numbers("\\d{3}-\\d{4}");
  18. const char phone_book[] = "start 555-1234, 555-2345, 555-3456 end";
  19. std::cregex_token_iterator i(std::begin(phone_book), std::end(phone_book)-1,
  20. phone_numbers, -1);
  21. std::cregex_token_iterator i2 = i;
  22. std::cregex_token_iterator i3;
  23. assert(i != std::cregex_token_iterator());
  24. assert(i2 != std::cregex_token_iterator());
  25. assert(i->str() == "start ");
  26. assert(i2->str() == "start ");
  27. i3 = i++;
  28. assert(i != std::cregex_token_iterator());
  29. assert(i2 != std::cregex_token_iterator());
  30. assert(i3 != std::cregex_token_iterator());
  31. assert(i->str() == ", ");
  32. assert(i2->str() == "start ");
  33. assert(i3->str() == "start ");
  34. i3 = i++;
  35. assert(i != std::cregex_token_iterator());
  36. assert(i2 != std::cregex_token_iterator());
  37. assert(i3 != std::cregex_token_iterator());
  38. assert(i->str() == ", ");
  39. assert(i2->str() == "start ");
  40. assert(i3->str() == ", ");
  41. i3 = i++;
  42. assert(i != std::cregex_token_iterator());
  43. assert(i2 != std::cregex_token_iterator());
  44. assert(i3 != std::cregex_token_iterator());
  45. assert(i->str() == " end");
  46. assert(i2->str() == "start ");
  47. assert(i3->str() == ", ");
  48. i3 = i++;
  49. assert(i == std::cregex_token_iterator());
  50. assert(i2 != std::cregex_token_iterator());
  51. assert(i3 != std::cregex_token_iterator());
  52. assert(i2->str() == "start ");
  53. assert(i3->str() == " end");
  54. }
  55. {
  56. std::regex phone_numbers("\\d{3}-\\d{4}");
  57. const char phone_book[] = "start 555-1234, 555-2345, 555-3456 end";
  58. std::cregex_token_iterator i(std::begin(phone_book), std::end(phone_book)-1,
  59. phone_numbers, -1);
  60. std::cregex_token_iterator i2 = i;
  61. std::cregex_token_iterator i3;
  62. assert(i != std::cregex_token_iterator());
  63. assert(i2 != std::cregex_token_iterator());
  64. assert(i->str() == "start ");
  65. assert(i2->str() == "start ");
  66. i3 = i;
  67. ++i;
  68. assert(i != std::cregex_token_iterator());
  69. assert(i2 != std::cregex_token_iterator());
  70. assert(i3 != std::cregex_token_iterator());
  71. assert(i->str() == ", ");
  72. assert(i2->str() == "start ");
  73. assert(i3->str() == "start ");
  74. i3 = i;
  75. ++i;
  76. assert(i != std::cregex_token_iterator());
  77. assert(i2 != std::cregex_token_iterator());
  78. assert(i3 != std::cregex_token_iterator());
  79. assert(i->str() == ", ");
  80. assert(i2->str() == "start ");
  81. assert(i3->str() == ", ");
  82. i3 = i;
  83. ++i;
  84. assert(i != std::cregex_token_iterator());
  85. assert(i2 != std::cregex_token_iterator());
  86. assert(i3 != std::cregex_token_iterator());
  87. assert(i->str() == " end");
  88. assert(i2->str() == "start ");
  89. assert(i3->str() == ", ");
  90. i3 = i;
  91. ++i;
  92. assert(i == std::cregex_token_iterator());
  93. assert(i2 != std::cregex_token_iterator());
  94. assert(i3 != std::cregex_token_iterator());
  95. assert(i2->str() == "start ");
  96. assert(i3->str() == " end");
  97. }
  98. {
  99. std::regex phone_numbers("\\d{3}-\\d{4}");
  100. const char phone_book[] = "start 555-1234, 555-2345, 555-3456 end";
  101. std::cregex_token_iterator i(std::begin(phone_book), std::end(phone_book)-1,
  102. phone_numbers);
  103. assert(i != std::cregex_token_iterator());
  104. assert(i->str() == "555-1234");
  105. i++;
  106. assert(i != std::cregex_token_iterator());
  107. assert(i->str() == "555-2345");
  108. i++;
  109. assert(i != std::cregex_token_iterator());
  110. assert(i->str() == "555-3456");
  111. i++;
  112. assert(i == std::cregex_token_iterator());
  113. }
  114. {
  115. std::regex phone_numbers("\\d{3}-(\\d{4})");
  116. const char phone_book[] = "start 555-1234, 555-2345, 555-3456 end";
  117. std::cregex_token_iterator i(std::begin(phone_book), std::end(phone_book)-1,
  118. phone_numbers, 1);
  119. assert(i != std::cregex_token_iterator());
  120. assert(i->str() == "1234");
  121. i++;
  122. assert(i != std::cregex_token_iterator());
  123. assert(i->str() == "2345");
  124. i++;
  125. assert(i != std::cregex_token_iterator());
  126. assert(i->str() == "3456");
  127. i++;
  128. assert(i == std::cregex_token_iterator());
  129. }
  130. }