blob: 13ddec7373c7890ab79c0b2dc7f8ec2b14114254 [file] [log] [blame]
Howard Hinnant237ee6f2010-06-30 17:22:19 +00001//===----------------------------------------------------------------------===//
2//
3// The LLVM Compiler Infrastructure
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9
10// <regex>
11
12// template <class BidirectionalIterator, class Allocator, class charT, class traits>
13// bool
14// regex_search(BidirectionalIterator first, BidirectionalIterator last,
15// match_results<BidirectionalIterator, Allocator>& m,
16// const basic_regex<charT, traits>& e,
17// regex_constants::match_flag_type flags = regex_constants::match_default);
18
19#include <regex>
20#include <cassert>
21
22int main()
23{
24 {
25 std::cmatch m;
26 assert(!std::regex_search("a", m, std::regex()));
27 assert(m.size() == 0);
28 assert(m.empty());
29 }
30 {
31 std::cmatch m;
32 const char s[] = "a";
33 assert(std::regex_search(s, m, std::regex("a", std::regex_constants::basic)));
34 assert(m.size() == 1);
35 assert(!m.empty());
36 assert(!m.prefix().matched);
37 assert(m.prefix().first == s);
38 assert(m.prefix().second == m[0].first);
39 assert(!m.suffix().matched);
40 assert(m.suffix().first == m[0].second);
41 assert(m.suffix().second == s+1);
42 assert(m.length(0) == 1);
43 assert(m.position(0) == 0);
44 assert(m.str(0) == "a");
45 }
46 {
47 std::cmatch m;
48 const char s[] = "ab";
49 assert(std::regex_search(s, m, std::regex("ab", std::regex_constants::basic)));
50 assert(m.size() == 1);
51 assert(!m.prefix().matched);
52 assert(m.prefix().first == s);
53 assert(m.prefix().second == m[0].first);
54 assert(!m.suffix().matched);
55 assert(m.suffix().first == m[0].second);
56 assert(m.suffix().second == s+2);
57 assert(m.length(0) == 2);
58 assert(m.position(0) == 0);
59 assert(m.str(0) == "ab");
60 }
61 {
62 std::cmatch m;
63 const char s[] = "ab";
64 assert(!std::regex_search(s, m, std::regex("ba", std::regex_constants::basic)));
65 assert(m.size() == 0);
66 assert(m.empty());
67 }
68 {
69 std::cmatch m;
70 const char s[] = "aab";
71 assert(std::regex_search(s, m, std::regex("ab", std::regex_constants::basic)));
72 assert(m.size() == 1);
73 assert(m.prefix().matched);
74 assert(m.prefix().first == s);
75 assert(m.prefix().second == m[0].first);
76 assert(!m.suffix().matched);
77 assert(m.suffix().first == m[0].second);
78 assert(m.suffix().second == s+3);
79 assert(m.length(0) == 2);
80 assert(m.position(0) == 1);
81 assert(m.str(0) == "ab");
82 }
Howard Hinnant928658c2010-06-30 20:30:19 +000083 {
84 std::cmatch m;
85 const char s[] = "aab";
86 assert(!std::regex_search(s, m, std::regex("ab", std::regex_constants::basic),
87 std::regex_constants::match_continuous));
88 assert(m.size() == 0);
89 }
90 {
91 std::cmatch m;
92 const char s[] = "abcd";
93 assert(std::regex_search(s, m, std::regex("bc", std::regex_constants::basic)));
94 assert(m.size() == 1);
95 assert(m.prefix().matched);
96 assert(m.prefix().first == s);
97 assert(m.prefix().second == m[0].first);
98 assert(m.suffix().matched);
99 assert(m.suffix().first == m[0].second);
100 assert(m.suffix().second == s+4);
101 assert(m.length(0) == 2);
102 assert(m.position(0) == 1);
103 assert(m.str(0) == "bc");
104 }
105 {
106 std::cmatch m;
107 const char s[] = "abcdefghijk";
108 assert(std::regex_search(s, m, std::regex("cd\\(\\(e\\)fg\\)hi",
109 std::regex_constants::basic)));
110 assert(m.size() == 3);
111 assert(m.prefix().matched);
112 assert(m.prefix().first == s);
113 assert(m.prefix().second == m[0].first);
114 assert(m.suffix().matched);
115 assert(m.suffix().first == m[0].second);
116 assert(m.suffix().second == s+std::regex_traits<char>::length(s));
117 assert(m.length(0) == 7);
118 assert(m.position(0) == 2);
119 assert(m.str(0) == "cdefghi");
120 assert(m.length(1) == 3);
121 assert(m.position(1) == 4);
122 assert(m.str(1) == "efg");
123 assert(m.length(2) == 1);
124 assert(m.position(2) == 4);
125 assert(m.str(2) == "e");
126 }
Howard Hinnant237ee6f2010-06-30 17:22:19 +0000127}