int tc_libcxx_strings_string_assign_string_size_size(void) { { typedef std::string S; TC_ASSERT_FUNC((test(S(), S(), 0, 0, S()))); TC_ASSERT_FUNC((test(S(), S(), 1, 0, S()))); TC_ASSERT_FUNC((test(S(), S("12345"), 0, 3, S("123")))); TC_ASSERT_FUNC((test(S(), S("12345"), 1, 4, S("2345")))); TC_ASSERT_FUNC((test(S(), S("12345"), 3, 15, S("45")))); TC_ASSERT_FUNC((test(S(), S("12345"), 5, 15, S("")))); TC_ASSERT_FUNC((test(S(), S("12345"), 6, 15, S("not happening")))); TC_ASSERT_FUNC((test(S(), S("12345678901234567890"), 0, 0, S()))); TC_ASSERT_FUNC((test(S(), S("12345678901234567890"), 1, 1, S("2")))); TC_ASSERT_FUNC((test(S(), S("12345678901234567890"), 2, 3, S("345")))); TC_ASSERT_FUNC((test(S(), S("12345678901234567890"), 12, 13, S("34567890")))); TC_ASSERT_FUNC((test(S(), S("12345678901234567890"), 21, 13, S("not happening")))); TC_ASSERT_FUNC((test(S("12345"), S(), 0, 0, S()))); TC_ASSERT_FUNC((test(S("12345"), S("12345"), 2, 2, S("34")))); TC_ASSERT_FUNC((test(S("12345"), S("1234567890"), 0, 100, S("1234567890")))); TC_ASSERT_FUNC((test(S("12345678901234567890"), S(), 0, 0, S()))); TC_ASSERT_FUNC((test(S("12345678901234567890"), S("12345"), 1, 3, S("234")))); test(S("12345678901234567890"), S("12345678901234567890"), 5, 10, S("6789012345")); } { typedef std::string S; TC_ASSERT_FUNC((test_npos(S(), S(), 0, S()))); TC_ASSERT_FUNC((test_npos(S(), S(), 1, S()))); TC_ASSERT_FUNC((test_npos(S(), S("12345"), 0, S("12345")))); TC_ASSERT_FUNC((test_npos(S(), S("12345"), 1, S("2345")))); TC_ASSERT_FUNC((test_npos(S(), S("12345"), 3, S("45")))); TC_ASSERT_FUNC((test_npos(S(), S("12345"), 5, S("")))); TC_ASSERT_FUNC((test_npos(S(), S("12345"), 6, S("not happening")))); } TC_SUCCESS_RESULT(); return 0; }
int main() { { typedef std::string S; test(S(), S(), 0, 0, S()); test(S(), S(), 1, 0, S()); test(S(), S("12345"), 0, 3, S("123")); test(S(), S("12345"), 1, 4, S("2345")); test(S(), S("12345"), 3, 15, S("45")); test(S(), S("12345"), 5, 15, S("")); test(S(), S("12345"), 6, 15, S("not happening")); test(S(), S("12345678901234567890"), 0, 0, S()); test(S(), S("12345678901234567890"), 1, 1, S("2")); test(S(), S("12345678901234567890"), 2, 3, S("345")); test(S(), S("12345678901234567890"), 12, 13, S("34567890")); test(S(), S("12345678901234567890"), 21, 13, S("not happening")); test(S("12345"), S(), 0, 0, S("12345")); test(S("12345"), S("12345"), 2, 2, S("1234534")); test(S("12345"), S("1234567890"), 0, 100, S("123451234567890")); test(S("12345678901234567890"), S(), 0, 0, S("12345678901234567890")); test(S("12345678901234567890"), S("12345"), 1, 3, S("12345678901234567890234")); test(S("12345678901234567890"), S("12345678901234567890"), 5, 10, S("123456789012345678906789012345")); } #if TEST_STD_VER >= 11 { typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> S; test(S(), S(), 0, 0, S()); test(S(), S(), 1, 0, S()); test(S(), S("12345"), 0, 3, S("123")); test(S(), S("12345"), 1, 4, S("2345")); test(S(), S("12345"), 3, 15, S("45")); test(S(), S("12345"), 5, 15, S("")); test(S(), S("12345"), 6, 15, S("not happening")); test(S(), S("12345678901234567890"), 0, 0, S()); test(S(), S("12345678901234567890"), 1, 1, S("2")); test(S(), S("12345678901234567890"), 2, 3, S("345")); test(S(), S("12345678901234567890"), 12, 13, S("34567890")); test(S(), S("12345678901234567890"), 21, 13, S("not happening")); test(S("12345"), S(), 0, 0, S("12345")); test(S("12345"), S("12345"), 2, 2, S("1234534")); test(S("12345"), S("1234567890"), 0, 100, S("123451234567890")); test(S("12345678901234567890"), S(), 0, 0, S("12345678901234567890")); test(S("12345678901234567890"), S("12345"), 1, 3, S("12345678901234567890234")); test(S("12345678901234567890"), S("12345678901234567890"), 5, 10, S("123456789012345678906789012345")); } #endif { typedef std::string S; test_npos(S(), S(), 0, S()); test_npos(S(), S(), 1, S()); test_npos(S(), S("12345"), 0, S("12345")); test_npos(S(), S("12345"), 1, S("2345")); test_npos(S(), S("12345"), 3, S("45")); test_npos(S(), S("12345"), 5, S("")); test_npos(S(), S("12345"), 6, S("not happening")); } }
int main() { { typedef std::string S; typedef std::string_view SV; test(S(), SV(), 0, 0, S()); test(S(), SV(), 1, 0, S()); test(S(), SV("12345"), 0, 3, S("123")); test(S(), SV("12345"), 1, 4, S("2345")); test(S(), SV("12345"), 3, 15, S("45")); test(S(), SV("12345"), 5, 15, S("")); test(S(), SV("12345"), 6, 15, S("not happening")); test(S(), SV("12345678901234567890"), 0, 0, S()); test(S(), SV("12345678901234567890"), 1, 1, S("2")); test(S(), SV("12345678901234567890"), 2, 3, S("345")); test(S(), SV("12345678901234567890"), 12, 13, S("34567890")); test(S(), SV("12345678901234567890"), 21, 13, S("not happening")); test(S("12345"), SV(), 0, 0, S("12345")); test(S("12345"), SV("12345"), 2, 2, S("1234534")); test(S("12345"), SV("1234567890"), 0, 100, S("123451234567890")); test(S("12345678901234567890"), SV(), 0, 0, S("12345678901234567890")); test(S("12345678901234567890"), SV("12345"), 1, 3, S("12345678901234567890234")); test(S("12345678901234567890"), SV("12345678901234567890"), 5, 10, S("123456789012345678906789012345")); } #if TEST_STD_VER >= 11 { typedef std::basic_string <char, std::char_traits<char>, min_allocator<char>> S; typedef std::basic_string_view<char, std::char_traits<char> > SV; test(S(), SV(), 0, 0, S()); test(S(), SV(), 1, 0, S()); test(S(), SV("12345"), 0, 3, S("123")); test(S(), SV("12345"), 1, 4, S("2345")); test(S(), SV("12345"), 3, 15, S("45")); test(S(), SV("12345"), 5, 15, S("")); test(S(), SV("12345"), 6, 15, S("not happening")); test(S(), SV("12345678901234567890"), 0, 0, S()); test(S(), SV("12345678901234567890"), 1, 1, S("2")); test(S(), SV("12345678901234567890"), 2, 3, S("345")); test(S(), SV("12345678901234567890"), 12, 13, S("34567890")); test(S(), SV("12345678901234567890"), 21, 13, S("not happening")); test(S("12345"), SV(), 0, 0, S("12345")); test(S("12345"), SV("12345"), 2, 2, S("1234534")); test(S("12345"), SV("1234567890"), 0, 100, S("123451234567890")); test(S("12345678901234567890"), SV(), 0, 0, S("12345678901234567890")); test(S("12345678901234567890"), SV("12345"), 1, 3, S("12345678901234567890234")); test(S("12345678901234567890"), SV("12345678901234567890"), 5, 10, S("123456789012345678906789012345")); } #endif { typedef std::string S; typedef std::string_view SV; test_npos(S(), SV(), 0, S()); test_npos(S(), SV(), 1, S()); test_npos(S(), SV("12345"), 0, S("12345")); test_npos(S(), SV("12345"), 1, S("2345")); test_npos(S(), SV("12345"), 3, S("45")); test_npos(S(), SV("12345"), 5, S("")); test_npos(S(), SV("12345"), 6, S("not happening")); } { typedef std::string S; typedef std::string_view SV; S s; SV sv = "EFGH"; char arr[] = "IJKL"; s.append("CDEF", 0); // calls append(const char *, len) assert(s == ""); s.clear(); s.append("QRST", 0, std::string::npos); // calls append(string("QRST"), pos, npos) assert(s == "QRST"); s.clear(); s.append(sv, 0); // calls append(T, pos, npos) assert(s == sv); s.clear(); s.append(sv, 0, std::string::npos); // calls append(T, pos, npos) assert(s == sv); s.clear(); s.append(arr, 0); // calls append(const char *, len) assert(s == ""); s.clear(); s.append(arr, 0, std::string::npos); // calls append(string("IJKL"), pos, npos) assert(s == "IJKL"); s.clear(); s.append(arr, 0); // calls append(const char *, len) assert(s == ""); s.clear(); { S s = "ABCD"; SV sv = s; s.append(sv); assert(s == "ABCDABCD"); sv = s; s.append(sv, 0, std::string::npos); assert(s == "ABCDABCDABCDABCD"); } { S s = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; SV sv = s; s.append(sv); assert(s == "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ"); sv = s; s.append(sv, 0, std::string::npos); assert(s == "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ"); } } }