]> git.ipfire.org Git - thirdparty/gcc.git/blob - libstdc++-v3/testsuite/28_regex/constants/syntax_option_type.cc
Update copyright years.
[thirdparty/gcc.git] / libstdc++-v3 / testsuite / 28_regex / constants / syntax_option_type.cc
1 // { dg-do run { target c++11 } }
2 //
3 // 2009-06-17 Stephen M. Webb <stephen.webb@xandros.com>
4 //
5 // Copyright (C) 2009-2020 Free Software Foundation, Inc.
6 //
7 // This file is part of the GNU ISO C++ Library. This library is free
8 // software; you can redistribute it and/or modify it under the
9 // terms of the GNU General Public License as published by the
10 // Free Software Foundation; either version 3, or (at your option)
11 // any later version.
12 //
13 // This library is distributed in the hope that it will be useful,
14 // but WITHOUT ANY WARRANTY; without even the implied warranty of
15 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 // GNU General Public License for more details.
17 //
18 // You should have received a copy of the GNU General Public License along
19 // with this library; see the file COPYING3. If not see
20 // <http://www.gnu.org/licenses/>.
21
22 // 28.5.1
23
24 #include <regex>
25 #include <testsuite_hooks.h>
26
27 void
28 test01()
29 {
30 std::regex_constants::syntax_option_type option { };
31 option = option | std::regex_constants::icase;
32 option = option | std::regex_constants::nosubs;
33 option = option | std::regex_constants::optimize;
34 option = option | std::regex_constants::collate;
35 option = option | std::regex_constants::ECMAScript;
36 option = option | std::regex_constants::basic;
37 option = option | std::regex_constants::extended;
38 option = option | std::regex_constants::awk;
39 option = option | std::regex_constants::grep;
40 option = option | std::regex_constants::egrep;
41 }
42
43 void
44 test02()
45 {
46 std::regex_constants::syntax_option_type option { };
47 option = option & std::regex_constants::icase;
48 option = option & std::regex_constants::nosubs;
49 option = option & std::regex_constants::optimize;
50 option = option & std::regex_constants::collate;
51 option = option & std::regex_constants::ECMAScript;
52 option = option & std::regex_constants::basic;
53 option = option & std::regex_constants::extended;
54 option = option & std::regex_constants::awk;
55 option = option & std::regex_constants::grep;
56 option = option & std::regex_constants::egrep;
57 }
58
59 void
60 test03()
61 {
62 std::regex_constants::syntax_option_type option { };
63 option = ~std::regex_constants::icase;
64 option = ~std::regex_constants::nosubs;
65 option = ~std::regex_constants::optimize;
66 option = ~std::regex_constants::collate;
67 option = ~std::regex_constants::ECMAScript;
68 option = ~std::regex_constants::basic;
69 option = ~std::regex_constants::extended;
70 option = ~std::regex_constants::awk;
71 option = ~std::regex_constants::grep;
72 option = ~std::regex_constants::egrep;
73 option = option;
74 }
75
76 void
77 test04_constexpr()
78 {
79 using namespace std::regex_constants;
80 constexpr auto a1 __attribute__((unused)) = icase | awk;
81 constexpr auto a2 __attribute__((unused)) = icase & awk;
82 constexpr auto a3 __attribute__((unused)) = ~grep;
83 }
84
85 void
86 test05()
87 {
88 using namespace std;
89 using namespace regex_constants;
90 regex re("((a)(s))", nosubs | ECMAScript);
91 VERIFY(re.mark_count() == 0);
92 }
93
94 int main()
95 {
96 test01();
97 test02();
98 test03();
99 test04_constexpr();
100 test05();
101 return 0;
102 }