]>
git.ipfire.org Git - thirdparty/gcc.git/blob - libstdc++-v3/testsuite/28_regex/iterators/regex_iterator/char/string_position_01.cc
1e9d19408da6a2c638d25d99b6183f26e2c6ec13
1 // { dg-do run { target c++11 } }
4 // 2013-07-25 Tim Shen <timshen91@gmail.com>
6 // Copyright (C) 2013-2019 Free Software Foundation, Inc.
8 // This file is part of the GNU ISO C++ Library. This library is free
9 // software; you can redistribute it and/or modify it under the
10 // terms of the GNU General Public License as published by the
11 // Free Software Foundation; either version 3, or (at your option)
14 // This library is distributed in the hope that it will be useful,
15 // but WITHOUT ANY WARRANTY; without even the implied warranty of
16 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 // GNU General Public License for more details.
19 // You should have received a copy of the GNU General Public License along
20 // with this library; see the file COPYING3. If not see
21 // <http://www.gnu.org/licenses/>.
23 // 28.12.1 regex_iterator
24 // Tests iter->position() behavior
28 #include <testsuite_hooks.h>
33 std::regex
re("asdf");
34 std::string
s("asdfasdfasdf");
36 for (std::sregex_iterator
it(s
.begin(), s
.end(), re
);
37 it
!= std::sregex_iterator();
39 VERIFY( it
->position() == 4 * i
);
47 std::regex
re("\\w+");
48 std::string
s("-a-b-c-");
50 std::tuple
<int, int, const char*> expected
[] =
52 std::make_tuple(1, 1, "a"),
53 std::make_tuple(3, 1, "b"),
54 std::make_tuple(5, 1, "c"),
58 for (auto it1
= std::sregex_iterator(s
.begin(), s
.end(), re
),
59 end
= std::sregex_iterator(); it1
!= end
; ++it1
, i
++)
62 VERIFY(it1
->position() == std::get
<0>(expected
[i
]));
63 VERIFY(it1
->length() == std::get
<1>(expected
[i
]));
64 VERIFY(it1
->str() == std::get
<2>(expected
[i
]));
65 VERIFY(it2
->position() == std::get
<0>(expected
[i
]));
66 VERIFY(it2
->length() == std::get
<1>(expected
[i
]));
67 VERIFY(it2
->str() == std::get
<2>(expected
[i
]));
75 std::string s
= "abcde";
76 std::regex_search(s
, m
, std::regex("bcd"));
77 VERIFY(m
.position() == 1);
78 VERIFY(m
.position() == m
.prefix().length());