diff options
Diffstat (limited to 'test/std/strings/basic.string/string.modifiers/string_assign/iterator.pass.cpp')
| -rw-r--r-- | test/std/strings/basic.string/string.modifiers/string_assign/iterator.pass.cpp | 150 |
1 files changed, 150 insertions, 0 deletions
diff --git a/test/std/strings/basic.string/string.modifiers/string_assign/iterator.pass.cpp b/test/std/strings/basic.string/string.modifiers/string_assign/iterator.pass.cpp new file mode 100644 index 000000000000..83b5dd14b3f6 --- /dev/null +++ b/test/std/strings/basic.string/string.modifiers/string_assign/iterator.pass.cpp @@ -0,0 +1,150 @@ +//===----------------------------------------------------------------------===// +// +// 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> + +// template<class InputIterator> +// basic_string& assign(InputIterator first, InputIterator last); + +#include <string> +#include <cassert> + +#include "../../input_iterator.h" +#include "min_allocator.h" + +template <class S, class It> +void +test(S s, It first, It last, S expected) +{ + s.assign(first, last); + assert(s.__invariants()); + assert(s == expected); +} + +int main() +{ + { + typedef std::string S; + const char* s = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; + test(S(), s, s, S()); + test(S(), s, s+1, S("A")); + test(S(), s, s+10, S("ABCDEFGHIJ")); + test(S(), s, s+52, S("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz")); + + test(S("12345"), s, s, S()); + test(S("12345"), s, s+1, S("A")); + test(S("12345"), s, s+10, S("ABCDEFGHIJ")); + test(S("12345"), s, s+52, S("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz")); + + test(S("1234567890"), s, s, S()); + test(S("1234567890"), s, s+1, S("A")); + test(S("1234567890"), s, s+10, S("ABCDEFGHIJ")); + test(S("1234567890"), s, s+52, S("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz")); + + test(S("12345678901234567890"), s, s, S()); + test(S("12345678901234567890"), s, s+1, S("A")); + test(S("12345678901234567890"), s, s+10, S("ABCDEFGHIJ")); + test(S("12345678901234567890"), s, s+52, + S("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz")); + + test(S(), input_iterator<const char*>(s), input_iterator<const char*>(s), S()); + test(S(), input_iterator<const char*>(s), input_iterator<const char*>(s+1), S("A")); + test(S(), input_iterator<const char*>(s), input_iterator<const char*>(s+10), + S("ABCDEFGHIJ")); + test(S(), input_iterator<const char*>(s), input_iterator<const char*>(s+52), + S("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz")); + + test(S("12345"), input_iterator<const char*>(s), input_iterator<const char*>(s), + S()); + test(S("12345"), input_iterator<const char*>(s), input_iterator<const char*>(s+1), + S("A")); + test(S("12345"), input_iterator<const char*>(s), input_iterator<const char*>(s+10), + S("ABCDEFGHIJ")); + test(S("12345"), input_iterator<const char*>(s), input_iterator<const char*>(s+52), + S("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz")); + + test(S("1234567890"), input_iterator<const char*>(s), input_iterator<const char*>(s), + S()); + test(S("1234567890"), input_iterator<const char*>(s), input_iterator<const char*>(s+1), + S("A")); + test(S("1234567890"), input_iterator<const char*>(s), input_iterator<const char*>(s+10), + S("ABCDEFGHIJ")); + test(S("1234567890"), input_iterator<const char*>(s), input_iterator<const char*>(s+52), + S("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz")); + + test(S("12345678901234567890"), input_iterator<const char*>(s), input_iterator<const char*>(s), + S()); + test(S("12345678901234567890"), input_iterator<const char*>(s), input_iterator<const char*>(s+1), + S("A")); + test(S("12345678901234567890"), input_iterator<const char*>(s), input_iterator<const char*>(s+10), + S("ABCDEFGHIJ")); + test(S("12345678901234567890"), input_iterator<const char*>(s), input_iterator<const char*>(s+52), + S("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz")); + } +#if __cplusplus >= 201103L + { + typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> S; + const char* s = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; + test(S(), s, s, S()); + test(S(), s, s+1, S("A")); + test(S(), s, s+10, S("ABCDEFGHIJ")); + test(S(), s, s+52, S("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz")); + + test(S("12345"), s, s, S()); + test(S("12345"), s, s+1, S("A")); + test(S("12345"), s, s+10, S("ABCDEFGHIJ")); + test(S("12345"), s, s+52, S("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz")); + + test(S("1234567890"), s, s, S()); + test(S("1234567890"), s, s+1, S("A")); + test(S("1234567890"), s, s+10, S("ABCDEFGHIJ")); + test(S("1234567890"), s, s+52, S("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz")); + + test(S("12345678901234567890"), s, s, S()); + test(S("12345678901234567890"), s, s+1, S("A")); + test(S("12345678901234567890"), s, s+10, S("ABCDEFGHIJ")); + test(S("12345678901234567890"), s, s+52, + S("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz")); + + test(S(), input_iterator<const char*>(s), input_iterator<const char*>(s), S()); + test(S(), input_iterator<const char*>(s), input_iterator<const char*>(s+1), S("A")); + test(S(), input_iterator<const char*>(s), input_iterator<const char*>(s+10), + S("ABCDEFGHIJ")); + test(S(), input_iterator<const char*>(s), input_iterator<const char*>(s+52), + S("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz")); + + test(S("12345"), input_iterator<const char*>(s), input_iterator<const char*>(s), + S()); + test(S("12345"), input_iterator<const char*>(s), input_iterator<const char*>(s+1), + S("A")); + test(S("12345"), input_iterator<const char*>(s), input_iterator<const char*>(s+10), + S("ABCDEFGHIJ")); + test(S("12345"), input_iterator<const char*>(s), input_iterator<const char*>(s+52), + S("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz")); + + test(S("1234567890"), input_iterator<const char*>(s), input_iterator<const char*>(s), + S()); + test(S("1234567890"), input_iterator<const char*>(s), input_iterator<const char*>(s+1), + S("A")); + test(S("1234567890"), input_iterator<const char*>(s), input_iterator<const char*>(s+10), + S("ABCDEFGHIJ")); + test(S("1234567890"), input_iterator<const char*>(s), input_iterator<const char*>(s+52), + S("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz")); + + test(S("12345678901234567890"), input_iterator<const char*>(s), input_iterator<const char*>(s), + S()); + test(S("12345678901234567890"), input_iterator<const char*>(s), input_iterator<const char*>(s+1), + S("A")); + test(S("12345678901234567890"), input_iterator<const char*>(s), input_iterator<const char*>(s+10), + S("ABCDEFGHIJ")); + test(S("12345678901234567890"), input_iterator<const char*>(s), input_iterator<const char*>(s+52), + S("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz")); + } +#endif +} |
