Skip to content
This repository was archived by the owner on Mar 22, 2023. It is now read-only.

Commit e23c384

Browse files
committed
string_view: port LIBCXX capacity test to use pmem::obj::string_view
- change implementation to use pmem::obj::string_view
1 parent fa568ee commit e23c384

2 files changed

Lines changed: 75 additions & 75 deletions

File tree

tests/external/CMakeLists.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -755,6 +755,9 @@ if (TEST_STRING)
755755
build_test(string_libcxx_string_view_index libcxx/string.view/string.view.access/index.pass.cpp)
756756
add_test_generic(NAME string_libcxx_string_view_index TRACERS none pmemcheck memcheck)
757757

758+
build_test(string_libcxx_string_view_capacity libcxx/string.view/string.view.capacity/capacity.pass.cpp)
759+
add_test_generic(NAME string_libcxx_string_view_capacity TRACERS none pmemcheck memcheck)
760+
758761
if(MSVC_VERSION GREATER_EQUAL 1920)
759762
build_test(string_libcxx_string_view_opeq_string_view libcxx/string.view/string.view.comparison/opeq.string_view.string_view.pass.cpp)
760763
add_test_generic(NAME string_libcxx_string_view_opeq_string_view TRACERS none pmemcheck memcheck)

tests/external/libcxx/string.view/string.view.capacity/capacity.pass.cpp

Lines changed: 72 additions & 75 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
//
77
//===----------------------------------------------------------------------===//
88

9-
109
// <string_view>
1110

1211
// [string.view.capacity], capacity
@@ -15,90 +14,88 @@
1514
// constexpr size_type max_size() const noexcept;
1615
// constexpr bool empty() const noexcept;
1716

18-
#include <string_view>
19-
#include <cassert>
17+
#include "unittest.hpp"
2018

21-
#include "test_macros.h"
19+
#include <libpmemobj++/string_view.hpp>
2220

23-
template<typename SV>
24-
void test1 () {
25-
#if TEST_STD_VER > 11
26-
{
27-
constexpr SV sv1;
28-
static_assert ( sv1.size() == 0, "" );
29-
static_assert ( sv1.empty(), "");
30-
static_assert ( sv1.size() == sv1.length(), "" );
31-
static_assert ( sv1.max_size() > sv1.size(), "");
32-
}
33-
#endif
21+
template <typename SV>
22+
void
23+
test1()
24+
{
25+
{
26+
constexpr SV sv1;
27+
static_assert(sv1.size() == 0, "");
28+
static_assert(sv1.empty(), "");
29+
static_assert(sv1.size() == sv1.length(), "");
30+
static_assert(sv1.max_size() > sv1.size(), "");
31+
}
3432

35-
{
36-
SV sv1;
37-
ASSERT_NOEXCEPT(sv1.size());
38-
ASSERT_NOEXCEPT(sv1.empty());
39-
ASSERT_NOEXCEPT(sv1.max_size());
40-
ASSERT_NOEXCEPT(sv1.length());
41-
assert ( sv1.size() == 0 );
42-
assert ( sv1.empty());
43-
assert ( sv1.size() == sv1.length());
44-
assert ( sv1.max_size() > sv1.size());
45-
}
33+
{
34+
SV sv1;
35+
static_assert(noexcept(sv1.size()),
36+
"Operation must be noexcept");
37+
static_assert(noexcept(sv1.empty()),
38+
"Operation must be noexcept");
39+
static_assert(noexcept(sv1.max_size()),
40+
"Operation must be noexcept");
41+
static_assert(noexcept(sv1.length()),
42+
"Operation must be noexcept");
43+
UT_ASSERT(sv1.size() == 0);
44+
UT_ASSERT(sv1.empty());
45+
UT_ASSERT(sv1.size() == sv1.length());
46+
UT_ASSERT(sv1.max_size() > sv1.size());
47+
}
4648
}
4749

48-
template<typename CharT>
49-
void test2 ( const CharT *s, size_t len ) {
50-
{
51-
std::basic_string_view<CharT> sv1 ( s );
52-
assert ( sv1.size() == len );
53-
assert ( sv1.data() == s );
54-
assert ( sv1.empty() == (len == 0));
55-
assert ( sv1.size() == sv1.length());
56-
assert ( sv1.max_size() > sv1.size());
57-
#if TEST_STD_VER > 14
58-
// make sure we pick up std::size, too!
59-
assert ( sv1.size() == std::size(sv1));
60-
assert ( sv1.empty() == std::empty(sv1));
61-
#endif
62-
}
50+
template <typename CharT>
51+
void
52+
test2(const CharT *s, size_t len)
53+
{
54+
{
55+
pmem::obj::basic_string_view<CharT> sv1(s);
56+
UT_ASSERT(sv1.size() == len);
57+
UT_ASSERT(sv1.data() == s);
58+
UT_ASSERT(sv1.empty() == (len == 0));
59+
UT_ASSERT(sv1.size() == sv1.length());
60+
UT_ASSERT(sv1.max_size() > sv1.size());
61+
}
6362
}
6463

65-
int main(int, char**) {
66-
test1<std::string_view> ();
67-
#if defined(__cpp_lib_char8_t) && __cpp_lib_char8_t >= 201811L
68-
test1<std::u8string_view> ();
69-
#endif
70-
test1<std::u16string_view> ();
71-
test1<std::u32string_view> ();
72-
test1<std::wstring_view> ();
73-
74-
test2 ( "ABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDE", 105 );
75-
test2 ( "ABCDE", 5 );
76-
test2 ( "a", 1 );
77-
test2 ( "", 0 );
64+
static void
65+
run()
66+
{
67+
test1<pmem::obj::string_view>();
68+
test1<pmem::obj::u16string_view>();
69+
test1<pmem::obj::u32string_view>();
70+
test1<pmem::obj::wstring_view>();
7871

79-
test2 ( L"ABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDE", 105 );
80-
test2 ( L"ABCDE", 5 );
81-
test2 ( L"a", 1 );
82-
test2 ( L"", 0 );
72+
test2("ABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDE",
73+
105);
74+
test2("ABCDE", 5);
75+
test2("a", 1);
76+
test2("", 0);
8377

84-
#if defined(__cpp_lib_char8_t) && __cpp_lib_char8_t >= 201811L
85-
test2 ( u8"ABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDE", 105 );
86-
test2 ( u8"ABCDE", 5 );
87-
test2 ( u8"a", 1 );
88-
test2 ( u8"", 0 );
89-
#endif
78+
test2(L"ABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDE",
79+
105);
80+
test2(L"ABCDE", 5);
81+
test2(L"a", 1);
82+
test2(L"", 0);
9083

91-
#if TEST_STD_VER >= 11
92-
test2 ( u"ABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDE", 105 );
93-
test2 ( u"ABCDE", 5 );
94-
test2 ( u"a", 1 );
95-
test2 ( u"", 0 );
84+
test2(u"ABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDE",
85+
105);
86+
test2(u"ABCDE", 5);
87+
test2(u"a", 1);
88+
test2(u"", 0);
9689

97-
test2 ( U"ABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDE", 105 );
98-
test2 ( U"ABCDE", 5 );
99-
test2 ( U"a", 1 );
100-
test2 ( U"", 0 );
101-
#endif
90+
test2(U"ABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDE",
91+
105);
92+
test2(U"ABCDE", 5);
93+
test2(U"a", 1);
94+
test2(U"", 0);
95+
}
10296

103-
return 0;
97+
int
98+
main(int argc, char *argv[])
99+
{
100+
return run_test([&] { run(); });
104101
}

0 commit comments

Comments
 (0)