STL_MSFT created this revision. STL_MSFT added reviewers: EricWF, mclow.lists. STL_MSFT added a subscriber: cfe-commits.
[libcxx] [test] Fix string_view tests. test/std/strings/string.view/string.view.ops/compare.pointer_size.pass.cpp Passing -1 to size_t triggers signed/unsigned mismatch warnings because it's a value-modifying conversion. Add static_cast<size_t> to soothe the compiler. (This file refers to size_t unqualified.) test/std/strings/string.view/string.view.ops/substr.pass.cpp Add <algorithm> for std::min() and <stdexcept> for std::out_of_range. N4618 21.4.2.4 [string.view.access]/1: "Requires: pos < size()." /4: "[ Note: Unlike basic_string::operator[], basic_string_view::operator[](size()) has undefined behavior instead of returning charT(). -end note ]" https://reviews.llvm.org/D27633 Files: test/std/strings/string.view/string.view.ops/compare.pointer_size.pass.cpp test/std/strings/string.view/string.view.ops/substr.pass.cpp Index: test/std/strings/string.view/string.view.ops/substr.pass.cpp =================================================================== --- test/std/strings/string.view/string.view.ops/substr.pass.cpp +++ test/std/strings/string.view/string.view.ops/substr.pass.cpp @@ -16,6 +16,8 @@ // Returns: basic_string_view(data()+pos, rlen). #include <string_view> +#include <algorithm> +#include <stdexcept> #include <cassert> #include "test_macros.h" @@ -39,7 +41,7 @@ #endif const size_t rlen = std::min(n, sv.size() - pos); assert (sv1.size() == rlen); - for (size_t i = 0; i <= rlen; ++i) + for (size_t i = 0; i < rlen; ++i) assert(sv[pos+i] == sv1[i]); } Index: test/std/strings/string.view/string.view.ops/compare.pointer_size.pass.cpp =================================================================== --- test/std/strings/string.view/string.view.ops/compare.pointer_size.pass.cpp +++ test/std/strings/string.view/string.view.ops/compare.pointer_size.pass.cpp @@ -376,7 +376,7 @@ test("abcdefghijklmnopqrst", 5, 5, "", 20); test("abcdefghijklmnopqrst", 0, 8, "abcde", 15); test("abcdefghijklmnopqrst", 0, 12, "abcdefghij", 10); - test("abcdefghijklmnopqrst", 0, -1, "abcdefghijklmnopqrst", 0); + test("abcdefghijklmnopqrst", 0, static_cast<size_t>(-1), "abcdefghijklmnopqrst", 0); } { @@ -395,7 +395,7 @@ test(L"abcdefghijklmnopqrst", 5, 5, L"", 20); test(L"abcdefghijklmnopqrst", 0, 8, L"abcde", 15); test(L"abcdefghijklmnopqrst", 0, 12, L"abcdefghij", 10); - test(L"abcdefghijklmnopqrst", 0, -1, L"abcdefghijklmnopqrst", 0); + test(L"abcdefghijklmnopqrst", 0, static_cast<size_t>(-1), L"abcdefghijklmnopqrst", 0); } #if TEST_STD_VER >= 11 @@ -415,7 +415,7 @@ test(U"abcdefghijklmnopqrst", 5, 5, U"", 20); test(U"abcdefghijklmnopqrst", 0, 8, U"abcde", 15); test(U"abcdefghijklmnopqrst", 0, 12, U"abcdefghij", 10); - test(U"abcdefghijklmnopqrst", 0, -1, U"abcdefghijklmnopqrst", 0); + test(U"abcdefghijklmnopqrst", 0, static_cast<size_t>(-1), U"abcdefghijklmnopqrst", 0); } { @@ -434,7 +434,7 @@ test(u"abcdefghijklmnopqrst", 5, 5, u"", 20); test(u"abcdefghijklmnopqrst", 0, 8, u"abcde", 15); test(u"abcdefghijklmnopqrst", 0, 12, u"abcdefghij", 10); - test(u"abcdefghijklmnopqrst", 0, -1, u"abcdefghijklmnopqrst", 0); + test(u"abcdefghijklmnopqrst", 0, static_cast<size_t>(-1), u"abcdefghijklmnopqrst", 0); } #endif
Index: test/std/strings/string.view/string.view.ops/substr.pass.cpp =================================================================== --- test/std/strings/string.view/string.view.ops/substr.pass.cpp +++ test/std/strings/string.view/string.view.ops/substr.pass.cpp @@ -16,6 +16,8 @@ // Returns: basic_string_view(data()+pos, rlen). #include <string_view> +#include <algorithm> +#include <stdexcept> #include <cassert> #include "test_macros.h" @@ -39,7 +41,7 @@ #endif const size_t rlen = std::min(n, sv.size() - pos); assert (sv1.size() == rlen); - for (size_t i = 0; i <= rlen; ++i) + for (size_t i = 0; i < rlen; ++i) assert(sv[pos+i] == sv1[i]); } Index: test/std/strings/string.view/string.view.ops/compare.pointer_size.pass.cpp =================================================================== --- test/std/strings/string.view/string.view.ops/compare.pointer_size.pass.cpp +++ test/std/strings/string.view/string.view.ops/compare.pointer_size.pass.cpp @@ -376,7 +376,7 @@ test("abcdefghijklmnopqrst", 5, 5, "", 20); test("abcdefghijklmnopqrst", 0, 8, "abcde", 15); test("abcdefghijklmnopqrst", 0, 12, "abcdefghij", 10); - test("abcdefghijklmnopqrst", 0, -1, "abcdefghijklmnopqrst", 0); + test("abcdefghijklmnopqrst", 0, static_cast<size_t>(-1), "abcdefghijklmnopqrst", 0); } { @@ -395,7 +395,7 @@ test(L"abcdefghijklmnopqrst", 5, 5, L"", 20); test(L"abcdefghijklmnopqrst", 0, 8, L"abcde", 15); test(L"abcdefghijklmnopqrst", 0, 12, L"abcdefghij", 10); - test(L"abcdefghijklmnopqrst", 0, -1, L"abcdefghijklmnopqrst", 0); + test(L"abcdefghijklmnopqrst", 0, static_cast<size_t>(-1), L"abcdefghijklmnopqrst", 0); } #if TEST_STD_VER >= 11 @@ -415,7 +415,7 @@ test(U"abcdefghijklmnopqrst", 5, 5, U"", 20); test(U"abcdefghijklmnopqrst", 0, 8, U"abcde", 15); test(U"abcdefghijklmnopqrst", 0, 12, U"abcdefghij", 10); - test(U"abcdefghijklmnopqrst", 0, -1, U"abcdefghijklmnopqrst", 0); + test(U"abcdefghijklmnopqrst", 0, static_cast<size_t>(-1), U"abcdefghijklmnopqrst", 0); } { @@ -434,7 +434,7 @@ test(u"abcdefghijklmnopqrst", 5, 5, u"", 20); test(u"abcdefghijklmnopqrst", 0, 8, u"abcde", 15); test(u"abcdefghijklmnopqrst", 0, 12, u"abcdefghij", 10); - test(u"abcdefghijklmnopqrst", 0, -1, u"abcdefghijklmnopqrst", 0); + test(u"abcdefghijklmnopqrst", 0, static_cast<size_t>(-1), u"abcdefghijklmnopqrst", 0); } #endif
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits