summaryrefslogtreecommitdiffstats
path: root/libcxx/test/std
diff options
context:
space:
mode:
authorStephan T. Lavavej <stl@exchange.microsoft.com>2016-12-09 22:35:53 +0000
committerStephan T. Lavavej <stl@exchange.microsoft.com>2016-12-09 22:35:53 +0000
commitaec187660111a64fa05069cfb37f78a6aac3037f (patch)
tree47bca5078ce6274997f76eabee9bd3b4223df86a /libcxx/test/std
parent2bc2f33ba2da2bafab0b1f4058c8888fb8b1976d (diff)
downloadbcm5719-llvm-aec187660111a64fa05069cfb37f78a6aac3037f.tar.gz
bcm5719-llvm-aec187660111a64fa05069cfb37f78a6aac3037f.zip
[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 ]" Fixes D27633. llvm-svn: 289283
Diffstat (limited to 'libcxx/test/std')
-rw-r--r--libcxx/test/std/strings/string.view/string.view.ops/compare.pointer_size.pass.cpp8
-rw-r--r--libcxx/test/std/strings/string.view/string.view.ops/substr.pass.cpp4
2 files changed, 7 insertions, 5 deletions
diff --git a/libcxx/test/std/strings/string.view/string.view.ops/compare.pointer_size.pass.cpp b/libcxx/test/std/strings/string.view/string.view.ops/compare.pointer_size.pass.cpp
index 085e72c1112..84f9ce08044 100644
--- a/libcxx/test/std/strings/string.view/string.view.ops/compare.pointer_size.pass.cpp
+++ b/libcxx/test/std/strings/string.view/string.view.ops/compare.pointer_size.pass.cpp
@@ -376,7 +376,7 @@ int main()
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 @@ int main()
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 @@ int main()
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 @@ int main()
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
diff --git a/libcxx/test/std/strings/string.view/string.view.ops/substr.pass.cpp b/libcxx/test/std/strings/string.view/string.view.ops/substr.pass.cpp
index 5c24469ad5a..5f9a60067b4 100644
--- a/libcxx/test/std/strings/string.view/string.view.ops/substr.pass.cpp
+++ b/libcxx/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 @@ void test1(std::basic_string_view<CharT> sv, size_t n, size_t pos) {
#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]);
}
OpenPOWER on IntegriCloud