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

Commit 196ac21

Browse files
committed
string_view: port iterator tests for string_view
- add string_view iterators
1 parent 1235110 commit 196ac21

3 files changed

Lines changed: 122 additions & 142 deletions

File tree

tests/external/CMakeLists.txt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -758,6 +758,12 @@ if (TEST_STRING)
758758
build_test(string_libcxx_string_view_capacity libcxx/string.view/string.view.capacity/capacity.pass.cpp)
759759
add_test_generic(NAME string_libcxx_string_view_capacity TRACERS none pmemcheck memcheck)
760760

761+
build_test(string_libcxx_string_view_begin libcxx/string.view/string.view.iterators/begin.pass.cpp)
762+
add_test_generic(NAME string_libcxx_string_view_begin TRACERS none pmemcheck memcheck)
763+
764+
build_test(string_libcxx_string_view_end libcxx/string.view/string.view.iterators/end.pass.cpp)
765+
add_test_generic(NAME string_libcxx_string_view_end TRACERS none pmemcheck memcheck)
766+
761767
if(MSVC_VERSION GREATER_EQUAL 1920)
762768
build_test(string_libcxx_string_view_opeq_string_view libcxx/string.view/string.view.comparison/opeq.string_view.string_view.pass.cpp)
763769
add_test_generic(NAME string_libcxx_string_view_opeq_string_view TRACERS none pmemcheck memcheck)

tests/external/libcxx/string.view/string.view.iterators/begin.pass.cpp

Lines changed: 56 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -5,91 +5,79 @@
55
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
66
//
77
//===----------------------------------------------------------------------===//
8+
//
9+
// Copyright 2020, Intel Corporation
10+
//
11+
// Modified to test pmem::obj containers
12+
//
813

914
// <string_view>
1015

1116
// constexpr const_iterator begin() const;
1217

13-
#include <string_view>
14-
#include <cassert>
18+
#include "unittest.hpp"
1519

16-
#include "test_macros.h"
20+
#include <libpmemobj++/string_view.hpp>
1721

1822
template <class S>
1923
void
2024
test(S s)
2125
{
22-
const S& cs = s;
23-
typename S::iterator b = s.begin();
24-
typename S::const_iterator cb1 = cs.begin();
25-
typename S::const_iterator cb2 = s.cbegin();
26-
if (!s.empty())
27-
{
28-
assert( *b == s[0]);
29-
assert( &*b == &s[0]);
30-
assert( *cb1 == s[0]);
31-
assert(&*cb1 == &s[0]);
32-
assert( *cb2 == s[0]);
33-
assert(&*cb2 == &s[0]);
34-
35-
}
36-
assert( b == cb1);
37-
assert( b == cb2);
38-
assert(cb1 == cb2);
26+
const S &cs = s;
27+
typename S::iterator b = s.begin();
28+
typename S::const_iterator cb1 = cs.begin();
29+
typename S::const_iterator cb2 = s.cbegin();
30+
if (!s.empty()) {
31+
UT_ASSERT(*b == s[0]);
32+
UT_ASSERT(&*b == &s[0]);
33+
UT_ASSERT(*cb1 == s[0]);
34+
UT_ASSERT(&*cb1 == &s[0]);
35+
UT_ASSERT(*cb2 == s[0]);
36+
UT_ASSERT(&*cb2 == &s[0]);
37+
}
38+
UT_ASSERT(b == cb1);
39+
UT_ASSERT(b == cb2);
40+
UT_ASSERT(cb1 == cb2);
3941
}
4042

41-
42-
int main(int, char**)
43+
static void
44+
run()
4345
{
44-
typedef std::string_view string_view;
45-
#if defined(__cpp_lib_char8_t) && __cpp_lib_char8_t >= 201811L
46-
typedef std::u8string_view u8string_view;
47-
#endif
48-
typedef std::u16string_view u16string_view;
49-
typedef std::u32string_view u32string_view;
50-
typedef std::wstring_view wstring_view;
46+
typedef pmem::obj::string_view string_view;
47+
typedef pmem::obj::u16string_view u16string_view;
48+
typedef pmem::obj::u32string_view u32string_view;
49+
typedef pmem::obj::wstring_view wstring_view;
50+
51+
test(string_view());
52+
test(u16string_view());
53+
test(u32string_view());
54+
test(wstring_view());
55+
test(string_view("123"));
56+
test(wstring_view(L"123"));
57+
test(u16string_view{u"123"});
58+
test(u32string_view{U"123"});
5159

52-
test(string_view ());
53-
test(u16string_view());
54-
test(u32string_view());
55-
test(wstring_view ());
56-
test(string_view ( "123"));
57-
test(wstring_view (L"123"));
58-
#if defined(__cpp_lib_char8_t) && __cpp_lib_char8_t >= 201811L
59-
test(u8string_view{u8"123"});
60-
#endif
61-
#if TEST_STD_VER >= 11
62-
test(u16string_view{u"123"});
63-
test(u32string_view{U"123"});
64-
#endif
60+
{
61+
constexpr string_view sv{"123", 3};
6562

66-
#if TEST_STD_VER > 11
67-
{
68-
constexpr string_view sv { "123", 3 };
69-
#if defined(__cpp_lib_char8_t) && __cpp_lib_char8_t >= 201811L
70-
constexpr u8string_view u8sv {u8"123", 3 };
71-
#endif
72-
constexpr u16string_view u16sv {u"123", 3 };
73-
constexpr u32string_view u32sv {U"123", 3 };
74-
constexpr wstring_view wsv {L"123", 3 };
63+
constexpr u16string_view u16sv{u"123", 3};
64+
constexpr u32string_view u32sv{U"123", 3};
65+
constexpr wstring_view wsv{L"123", 3};
7566

76-
static_assert ( *sv.begin() == sv[0], "" );
77-
#if defined(__cpp_lib_char8_t) && __cpp_lib_char8_t >= 201811L
78-
static_assert ( *u8sv.begin() == u8sv[0], "" );
79-
#endif
80-
static_assert ( *u16sv.begin() == u16sv[0], "" );
81-
static_assert ( *u32sv.begin() == u32sv[0], "" );
82-
static_assert ( *wsv.begin() == wsv[0], "" );
67+
static_assert(*sv.begin() == sv[0], "");
68+
static_assert(*u16sv.begin() == u16sv[0], "");
69+
static_assert(*u32sv.begin() == u32sv[0], "");
70+
static_assert(*wsv.begin() == wsv[0], "");
8371

84-
static_assert ( *sv.cbegin() == sv[0], "" );
85-
#if defined(__cpp_lib_char8_t) && __cpp_lib_char8_t >= 201811L
86-
static_assert ( *u8sv.cbegin() == u8sv[0], "" );
87-
#endif
88-
static_assert ( *u16sv.cbegin() == u16sv[0], "" );
89-
static_assert ( *u32sv.cbegin() == u32sv[0], "" );
90-
static_assert ( *wsv.cbegin() == wsv[0], "" );
91-
}
92-
#endif
72+
static_assert(*sv.cbegin() == sv[0], "");
73+
static_assert(*u16sv.cbegin() == u16sv[0], "");
74+
static_assert(*u32sv.cbegin() == u32sv[0], "");
75+
static_assert(*wsv.cbegin() == wsv[0], "");
76+
}
77+
}
9378

94-
return 0;
79+
int
80+
main(int argc, char *argv[])
81+
{
82+
return run_test([&] { run(); });
9583
}

tests/external/libcxx/string.view/string.view.iterators/end.pass.cpp

Lines changed: 60 additions & 74 deletions
Original file line numberDiff line numberDiff line change
@@ -5,100 +5,86 @@
55
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
66
//
77
//===----------------------------------------------------------------------===//
8+
//
9+
// Copyright 2020, Intel Corporation
10+
//
11+
// Modified to test pmem::obj containers
12+
//
813

914
// <string_view>
1015

1116
// constexpr const_iterator end() const;
1217

13-
#include <string_view>
14-
#include <cassert>
15-
#include <cstddef>
18+
#include "unittest.hpp"
1619

17-
#include "test_macros.h"
20+
#include <cstddef>
21+
#include <libpmemobj++/string_view.hpp>
1822

1923
template <class S>
2024
void
2125
test(S s)
2226
{
23-
const S& cs = s;
24-
typename S::iterator e = s.end();
25-
typename S::const_iterator ce1 = cs.end();
26-
typename S::const_iterator ce2 = s.cend();
27+
const S &cs = s;
28+
typename S::iterator e = s.end();
29+
typename S::const_iterator ce1 = cs.end();
30+
typename S::const_iterator ce2 = s.cend();
2731

28-
if (s.empty())
29-
{
30-
assert( e == s.begin());
31-
assert(ce1 == cs.begin());
32-
assert(ce2 == s.begin());
33-
}
34-
else
35-
{
36-
assert( e != s.begin());
37-
assert(ce1 != cs.begin());
38-
assert(ce2 != s.begin());
39-
}
32+
if (s.empty()) {
33+
UT_ASSERT(e == s.begin());
34+
UT_ASSERT(ce1 == cs.begin());
35+
UT_ASSERT(ce2 == s.begin());
36+
} else {
37+
UT_ASSERT(e != s.begin());
38+
UT_ASSERT(ce1 != cs.begin());
39+
UT_ASSERT(ce2 != s.begin());
40+
}
4041

41-
assert(static_cast<std::size_t>( e - s.begin()) == s.size());
42-
assert(static_cast<std::size_t>(ce1 - cs.begin()) == cs.size());
43-
assert(static_cast<std::size_t>(ce2 - s.cbegin()) == s.size());
42+
UT_ASSERT(static_cast<std::size_t>(e - s.begin()) == s.size());
43+
UT_ASSERT(static_cast<std::size_t>(ce1 - cs.begin()) == cs.size());
44+
UT_ASSERT(static_cast<std::size_t>(ce2 - s.cbegin()) == s.size());
4445

45-
assert( e == ce1);
46-
assert( e == ce2);
47-
assert(ce1 == ce2);
46+
UT_ASSERT(e == ce1);
47+
UT_ASSERT(e == ce2);
48+
UT_ASSERT(ce1 == ce2);
4849
}
4950

50-
51-
int main(int, char**)
51+
static void
52+
run()
5253
{
53-
typedef std::string_view string_view;
54-
#if defined(__cpp_lib_char8_t) && __cpp_lib_char8_t >= 201811L
55-
typedef std::u8string_view u8string_view;
56-
#endif
57-
typedef std::u16string_view u16string_view;
58-
typedef std::u32string_view u32string_view;
59-
typedef std::wstring_view wstring_view;
54+
typedef pmem::obj::string_view string_view;
55+
typedef pmem::obj::u16string_view u16string_view;
56+
typedef pmem::obj::u32string_view u32string_view;
57+
typedef pmem::obj::wstring_view wstring_view;
6058

61-
test(string_view ());
62-
test(u16string_view());
63-
test(u32string_view());
64-
test(wstring_view ());
65-
test(string_view ( "123"));
66-
test(wstring_view (L"123"));
67-
#if defined(__cpp_lib_char8_t) && __cpp_lib_char8_t >= 201811L
68-
test(u8string_view{u8"123"});
69-
#endif
70-
#if TEST_STD_VER >= 11
71-
test(u16string_view{u"123"});
72-
test(u32string_view{U"123"});
73-
#endif
59+
test(string_view());
60+
test(u16string_view());
61+
test(u32string_view());
62+
test(wstring_view());
63+
test(string_view("123"));
64+
test(wstring_view(L"123"));
65+
test(u16string_view{u"123"});
66+
test(u32string_view{U"123"});
7467

75-
#if TEST_STD_VER > 11
76-
{
77-
constexpr string_view sv { "123", 3 };
78-
#if defined(__cpp_lib_char8_t) && __cpp_lib_char8_t >= 201811L
79-
constexpr u8string_view u8sv {u8"123", 3 };
80-
#endif
81-
constexpr u16string_view u16sv {u"123", 3 };
82-
constexpr u32string_view u32sv {U"123", 3 };
83-
constexpr wstring_view wsv {L"123", 3 };
68+
{
69+
constexpr string_view sv{"123", 3};
70+
constexpr u16string_view u16sv{u"123", 3};
71+
constexpr u32string_view u32sv{U"123", 3};
72+
constexpr wstring_view wsv{L"123", 3};
8473

85-
static_assert ( sv.begin() != sv.end(), "" );
86-
#if defined(__cpp_lib_char8_t) && __cpp_lib_char8_t >= 201811L
87-
static_assert ( u8sv.begin() != u8sv.end(), "" );
88-
#endif
89-
static_assert ( u16sv.begin() != u16sv.end(), "" );
90-
static_assert ( u32sv.begin() != u32sv.end(), "" );
91-
static_assert ( wsv.begin() != wsv.end(), "" );
74+
static_assert(sv.begin() != sv.end(), "");
75+
static_assert(u16sv.begin() != u16sv.end(), "");
76+
static_assert(u32sv.begin() != u32sv.end(), "");
77+
static_assert(wsv.begin() != wsv.end(), "");
9278

93-
static_assert ( sv.begin() != sv.cend(), "" );
94-
#if defined(__cpp_lib_char8_t) && __cpp_lib_char8_t >= 201811L
95-
static_assert ( u8sv.begin() != u8sv.cend(), "" );
96-
#endif
97-
static_assert ( u16sv.begin() != u16sv.cend(), "" );
98-
static_assert ( u32sv.begin() != u32sv.cend(), "" );
99-
static_assert ( wsv.begin() != wsv.cend(), "" );
100-
}
101-
#endif
79+
static_assert(sv.begin() != sv.cend(), "");
80+
static_assert(u16sv.begin() != u16sv.cend(), "");
81+
static_assert(u32sv.begin() != u32sv.cend(), "");
82+
static_assert(wsv.begin() != wsv.cend(), "");
83+
}
84+
}
10285

103-
return 0;
86+
int
87+
main(int argc, char *argv[])
88+
{
89+
return run_test([&] { run(); });
10490
}

0 commit comments

Comments
 (0)