]> git.ipfire.org Git - thirdparty/gcc.git/blob - libstdc++-v3/testsuite/28_regex/algorithms/regex_search/ecma/assertion.cc
f7bce8023d32026f5e8a7193990c679d97bbfdf2
[thirdparty/gcc.git] / libstdc++-v3 / testsuite / 28_regex / algorithms / regex_search / ecma / assertion.cc
1 // { dg-options "-std=gnu++11" }
2
3 //
4 // 2013-09-14 Tim Shen <timshen91@gmail.com>
5 //
6 // Copyright (C) 2013 Free Software Foundation, Inc.
7 //
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)
12 // any later version.
13 //
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.
18 //
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/>.
22
23 // 28.11.3 regex_search
24 // Tests ECMAScript assertion.
25
26 #include <regex>
27 #include <testsuite_hooks.h>
28 #include <testsuite_regex.h>
29
30 using namespace __gnu_test;
31 using namespace std;
32
33 void
34 test01()
35 {
36 bool test __attribute__((unused)) = true;
37
38 VERIFY(!regex_search_debug("2123456", regex("^1234")));
39 VERIFY(regex_search_debug("123456", regex("^1234")));
40 VERIFY(regex_search_debug("123456", regex("(5|^)1234")));
41 VERIFY(regex_search_debug("5123456", regex("(5|^)1234")));
42 VERIFY(!regex_search_debug("1234562", regex("3456$")));
43 VERIFY(regex_search_debug("123456", regex("3456$")));
44 VERIFY(!regex_search_debug("123456", regex("(?=1234)56")));
45 VERIFY(regex_search_debug("123456", regex("(?=1234)123456")));
46 VERIFY(regex_search_debug("123456", regex("(?!1234)56")));
47 VERIFY(!regex_search_debug("123456", regex("(?!1234)123456")));
48
49 VERIFY(regex_search_debug("a-", regex("a\\b-")));
50 VERIFY(!regex_search_debug("ab", regex("a\\bb")));
51 VERIFY(!regex_search_debug("a-", regex("a\\B-")));
52 VERIFY(regex_search_debug("ab", regex("a\\Bb")));
53
54 string s("This is a regular expression");
55 string sol[] =
56 {
57 "This",
58 "",
59 "is",
60 "",
61 "a",
62 "",
63 "regular",
64 "",
65 "expression",
66 "",
67 };
68
69 regex re("\\b\\w*\\b");
70 int i = 0;
71 for (auto it = sregex_iterator(s.begin(), s.end(), re);
72 it != sregex_iterator();
73 ++it)
74 {
75 string s((*it)[0].first, (*it)[0].second);
76 VERIFY(s == sol[i++]);
77 }
78 VERIFY(i == 10);
79
80 {
81 cmatch m;
82 regex re("(?=(as)df)as(df)");
83 regex_search("asdf", m, re);
84 VERIFY(m.size() == 3);
85 VERIFY(m[0].matched && string(m[0].first, m[0].second) == "asdf");
86 VERIFY(m[1].matched && string(m[1].first, m[1].second) == "as");
87 VERIFY(m[2].matched && string(m[2].first, m[2].second) == "df");
88 }
89 }
90
91 int
92 main()
93 {
94 test01();
95 return 0;
96 }