iterator.pass.cpp 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. //===----------------------------------------------------------------------===//
  2. //
  3. // The LLVM Compiler Infrastructure
  4. //
  5. // This file is distributed under the University of Illinois Open Source
  6. // License. See LICENSE.TXT for details.
  7. //
  8. //===----------------------------------------------------------------------===//
  9. // <string>
  10. // template<class InputIterator>
  11. // basic_string& append(InputIterator first, InputIterator last);
  12. #include <string>
  13. #include <cassert>
  14. #include "../../input_iterator.h"
  15. template <class S, class It>
  16. void
  17. test(S s, It first, It last, S expected)
  18. {
  19. s.append(first, last);
  20. assert(s.__invariants());
  21. assert(s == expected);
  22. }
  23. int main()
  24. {
  25. typedef std::string S;
  26. const char* s = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
  27. test(S(), s, s, S());
  28. test(S(), s, s+1, S("A"));
  29. test(S(), s, s+10, S("ABCDEFGHIJ"));
  30. test(S(), s, s+52, S("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"));
  31. test(S("12345"), s, s, S("12345"));
  32. test(S("12345"), s, s+1, S("12345A"));
  33. test(S("12345"), s, s+10, S("12345ABCDEFGHIJ"));
  34. test(S("12345"), s, s+52, S("12345ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"));
  35. test(S("1234567890"), s, s, S("1234567890"));
  36. test(S("1234567890"), s, s+1, S("1234567890A"));
  37. test(S("1234567890"), s, s+10, S("1234567890ABCDEFGHIJ"));
  38. test(S("1234567890"), s, s+52, S("1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"));
  39. test(S("12345678901234567890"), s, s, S("12345678901234567890"));
  40. test(S("12345678901234567890"), s, s+1, S("12345678901234567890""A"));
  41. test(S("12345678901234567890"), s, s+10, S("12345678901234567890""ABCDEFGHIJ"));
  42. test(S("12345678901234567890"), s, s+52,
  43. S("12345678901234567890""ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"));
  44. test(S(), input_iterator<const char*>(s), input_iterator<const char*>(s), S());
  45. test(S(), input_iterator<const char*>(s), input_iterator<const char*>(s+1), S("A"));
  46. test(S(), input_iterator<const char*>(s), input_iterator<const char*>(s+10),
  47. S("ABCDEFGHIJ"));
  48. test(S(), input_iterator<const char*>(s), input_iterator<const char*>(s+52),
  49. S("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"));
  50. test(S("12345"), input_iterator<const char*>(s), input_iterator<const char*>(s),
  51. S("12345"));
  52. test(S("12345"), input_iterator<const char*>(s), input_iterator<const char*>(s+1),
  53. S("12345A"));
  54. test(S("12345"), input_iterator<const char*>(s), input_iterator<const char*>(s+10),
  55. S("12345ABCDEFGHIJ"));
  56. test(S("12345"), input_iterator<const char*>(s), input_iterator<const char*>(s+52),
  57. S("12345ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"));
  58. test(S("1234567890"), input_iterator<const char*>(s), input_iterator<const char*>(s),
  59. S("1234567890"));
  60. test(S("1234567890"), input_iterator<const char*>(s), input_iterator<const char*>(s+1),
  61. S("1234567890A"));
  62. test(S("1234567890"), input_iterator<const char*>(s), input_iterator<const char*>(s+10),
  63. S("1234567890ABCDEFGHIJ"));
  64. test(S("1234567890"), input_iterator<const char*>(s), input_iterator<const char*>(s+52),
  65. S("1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"));
  66. test(S("12345678901234567890"), input_iterator<const char*>(s), input_iterator<const char*>(s),
  67. S("12345678901234567890"));
  68. test(S("12345678901234567890"), input_iterator<const char*>(s), input_iterator<const char*>(s+1),
  69. S("12345678901234567890""A"));
  70. test(S("12345678901234567890"), input_iterator<const char*>(s), input_iterator<const char*>(s+10),
  71. S("12345678901234567890""ABCDEFGHIJ"));
  72. test(S("12345678901234567890"), input_iterator<const char*>(s), input_iterator<const char*>(s+52),
  73. S("12345678901234567890""ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"));
  74. }