blob: 1fd2be06ab98bd990d6e9ae36ed9bd2eed2595e2 [file] [log] [blame]
Howard Hinnant93da3b22010-07-27 19:53:10 +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 <iostream>
20
21#include <regex>
22#include <cassert>
23
24#include "../../iterators.h"
25
26int main()
27{
28 {
29 std::cmatch m;
30 const char s[] = "tournament";
31 assert(std::regex_search(s, m, std::regex("tour\nto\ntournament",
32 std::regex_constants::egrep)));
33 assert(m.size() == 1);
34 assert(!m.prefix().matched);
35 assert(m.prefix().first == s);
36 assert(m.prefix().second == m[0].first);
37 assert(!m.suffix().matched);
38 assert(m.suffix().first == m[0].second);
39 assert(m.suffix().second == s + std::char_traits<char>::length(s));
40 assert(m.length(0) == 10);
41 assert(m.position(0) == 0);
42 assert(m.str(0) == "tournament");
43 }
44 {
45 std::cmatch m;
46 const char s[] = "ment";
47 assert(std::regex_search(s, m, std::regex("tour\n\ntournament",
48 std::regex_constants::egrep)));
49 assert(m.size() == 1);
50 assert(!m.prefix().matched);
51 assert(m.prefix().first == s);
52 assert(m.prefix().second == m[0].first);
53 assert(m.suffix().matched);
54 assert(m.suffix().first == m[0].second);
55 assert(m.suffix().second == s + std::char_traits<char>::length(s));
56 assert(m.length(0) == 0);
57 assert(m.position(0) == 0);
58 assert(m.str(0) == "");
59 }
60 {
61 std::cmatch m;
62 const char s[] = "tournament";
63 assert(std::regex_search(s, m, std::regex("(tour|to|tournament)+\ntourna",
64 std::regex_constants::egrep)));
65 assert(m.size() == 2);
66 assert(!m.prefix().matched);
67 assert(m.prefix().first == s);
68 assert(m.prefix().second == m[0].first);
69 assert(!m.suffix().matched);
70 assert(m.suffix().first == m[0].second);
71 assert(m.suffix().second == s + std::char_traits<char>::length(s));
72 assert(m.length(0) == 10);
73 assert(m.position(0) == 0);
74 assert(m.str(0) == "tournament");
75 }
76 {
77 std::cmatch m;
78 const char s[] = "tourna";
79 assert(std::regex_search(s, m, std::regex("(tour|to|tournament)+\ntourna",
80 std::regex_constants::egrep)));
81 assert(m.size() == 2);
82 assert(!m.prefix().matched);
83 assert(m.prefix().first == s);
84 assert(m.prefix().second == m[0].first);
85 assert(!m.suffix().matched);
86 assert(m.suffix().first == m[0].second);
87 assert(m.suffix().second == s + std::char_traits<char>::length(s));
88 assert(m.length(0) == 6);
89 assert(m.position(0) == 0);
90 assert(m.str(0) == "tourna");
91 }
92}