diff options
author | Benjamin Kosnik <bkoz@redhat.com> | 2012-10-05 21:18:54 +0000 |
---|---|---|
committer | Benjamin Kosnik <bkoz@gcc.gnu.org> | 2012-10-05 21:18:54 +0000 |
commit | d2edfb151d3fa8dcc5516aaa3cfb99e53d5aaadf (patch) | |
tree | d98c9f5cea71b341fff3493d729522dcfb3a5da5 /libstdc++-v3 | |
parent | 74bf7dbb1e3104041e302d9b917dcec62aab5730 (diff) | |
download | gcc-d2edfb151d3fa8dcc5516aaa3cfb99e53d5aaadf.zip gcc-d2edfb151d3fa8dcc5516aaa3cfb99e53d5aaadf.tar.gz gcc-d2edfb151d3fa8dcc5516aaa3cfb99e53d5aaadf.tar.bz2 |
match: Rename to...
2012-10-05 Benjamin Kosnik <bkoz@redhat.com>
* testsuite/28_regex/algorithms/match: Rename to...
* testsuite/28_regex/algorithms/regex_match: ...this.
* testsuite/28_regex/basic_regex/regex.cc: Rename to...
* testsuite/28_regex/basic_regex/ctors/basic/default.cc: ...this.
* testsuite/util/testsuite_regex.h: New.
* testsuite/28_regex/basic_regex/ctors/basic/raw_string.cc: New.
From-SVN: r192146
Diffstat (limited to 'libstdc++-v3')
-rw-r--r-- | libstdc++-v3/ChangeLog | 9 | ||||
-rw-r--r-- | libstdc++-v3/testsuite/28_regex/algorithms/regex_match/basic/string_01.cc (renamed from libstdc++-v3/testsuite/28_regex/algorithms/match/basic/string_01.cc) | 0 | ||||
-rw-r--r-- | libstdc++-v3/testsuite/28_regex/algorithms/regex_match/basic/string_range_00_03.cc (renamed from libstdc++-v3/testsuite/28_regex/algorithms/match/basic/string_range_00_03.cc) | 0 | ||||
-rw-r--r-- | libstdc++-v3/testsuite/28_regex/algorithms/regex_match/basic/string_range_01_03.cc (renamed from libstdc++-v3/testsuite/28_regex/algorithms/match/basic/string_range_01_03.cc) | 0 | ||||
-rw-r--r-- | libstdc++-v3/testsuite/28_regex/algorithms/regex_match/basic/string_range_02_03.cc (renamed from libstdc++-v3/testsuite/28_regex/algorithms/match/basic/string_range_02_03.cc) | 0 | ||||
-rw-r--r-- | libstdc++-v3/testsuite/28_regex/algorithms/regex_match/extended/cstring_plus.cc (renamed from libstdc++-v3/testsuite/28_regex/algorithms/match/extended/cstring_plus.cc) | 0 | ||||
-rw-r--r-- | libstdc++-v3/testsuite/28_regex/algorithms/regex_match/extended/cstring_questionmark.cc (renamed from libstdc++-v3/testsuite/28_regex/algorithms/match/extended/cstring_questionmark.cc) | 0 | ||||
-rw-r--r-- | libstdc++-v3/testsuite/28_regex/algorithms/regex_match/extended/string_any.cc (renamed from libstdc++-v3/testsuite/28_regex/algorithms/match/extended/string_any.cc) | 0 | ||||
-rw-r--r-- | libstdc++-v3/testsuite/28_regex/algorithms/regex_match/extended/string_range_00_03.cc (renamed from libstdc++-v3/testsuite/28_regex/algorithms/match/extended/string_range_00_03.cc) | 0 | ||||
-rw-r--r-- | libstdc++-v3/testsuite/28_regex/algorithms/regex_match/extended/string_range_01_03.cc (renamed from libstdc++-v3/testsuite/28_regex/algorithms/match/extended/string_range_01_03.cc) | 0 | ||||
-rw-r--r-- | libstdc++-v3/testsuite/28_regex/algorithms/regex_match/extended/string_range_02_03.cc (renamed from libstdc++-v3/testsuite/28_regex/algorithms/match/extended/string_range_02_03.cc) | 0 | ||||
-rw-r--r-- | libstdc++-v3/testsuite/28_regex/basic_regex/ctors/basic/default.cc (renamed from libstdc++-v3/testsuite/28_regex/basic_regex/regex.cc) | 0 | ||||
-rw-r--r-- | libstdc++-v3/testsuite/28_regex/basic_regex/ctors/basic/raw_string.cc | 52 | ||||
-rw-r--r-- | libstdc++-v3/testsuite/util/testsuite_regex.h | 130 |
14 files changed, 191 insertions, 0 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index ed0b707..c651247 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,12 @@ +2012-10-05 Benjamin Kosnik <bkoz@redhat.com> + + * testsuite/28_regex/algorithms/match: Rename to... + * testsuite/28_regex/algorithms/regex_match: ...this. + * testsuite/28_regex/basic_regex/regex.cc: Rename to... + * testsuite/28_regex/basic_regex/ctors/basic/default.cc: ...this. + * testsuite/util/testsuite_regex.h: New. + * testsuite/28_regex/basic_regex/ctors/basic/raw_string.cc: New. + 2012-10-05 Jakub Jelinek <jakub@redhat.com> * testsuite/20_util/shared_ptr/cons/43820_neg.cc: Adjust line diff --git a/libstdc++-v3/testsuite/28_regex/algorithms/match/basic/string_01.cc b/libstdc++-v3/testsuite/28_regex/algorithms/regex_match/basic/string_01.cc index 4a7161a..4a7161a 100644 --- a/libstdc++-v3/testsuite/28_regex/algorithms/match/basic/string_01.cc +++ b/libstdc++-v3/testsuite/28_regex/algorithms/regex_match/basic/string_01.cc diff --git a/libstdc++-v3/testsuite/28_regex/algorithms/match/basic/string_range_00_03.cc b/libstdc++-v3/testsuite/28_regex/algorithms/regex_match/basic/string_range_00_03.cc index 6c0fdd7..6c0fdd7 100644 --- a/libstdc++-v3/testsuite/28_regex/algorithms/match/basic/string_range_00_03.cc +++ b/libstdc++-v3/testsuite/28_regex/algorithms/regex_match/basic/string_range_00_03.cc diff --git a/libstdc++-v3/testsuite/28_regex/algorithms/match/basic/string_range_01_03.cc b/libstdc++-v3/testsuite/28_regex/algorithms/regex_match/basic/string_range_01_03.cc index 3439b54..3439b54 100644 --- a/libstdc++-v3/testsuite/28_regex/algorithms/match/basic/string_range_01_03.cc +++ b/libstdc++-v3/testsuite/28_regex/algorithms/regex_match/basic/string_range_01_03.cc diff --git a/libstdc++-v3/testsuite/28_regex/algorithms/match/basic/string_range_02_03.cc b/libstdc++-v3/testsuite/28_regex/algorithms/regex_match/basic/string_range_02_03.cc index dfd00a0..dfd00a0 100644 --- a/libstdc++-v3/testsuite/28_regex/algorithms/match/basic/string_range_02_03.cc +++ b/libstdc++-v3/testsuite/28_regex/algorithms/regex_match/basic/string_range_02_03.cc diff --git a/libstdc++-v3/testsuite/28_regex/algorithms/match/extended/cstring_plus.cc b/libstdc++-v3/testsuite/28_regex/algorithms/regex_match/extended/cstring_plus.cc index ad0f57e..ad0f57e 100644 --- a/libstdc++-v3/testsuite/28_regex/algorithms/match/extended/cstring_plus.cc +++ b/libstdc++-v3/testsuite/28_regex/algorithms/regex_match/extended/cstring_plus.cc diff --git a/libstdc++-v3/testsuite/28_regex/algorithms/match/extended/cstring_questionmark.cc b/libstdc++-v3/testsuite/28_regex/algorithms/regex_match/extended/cstring_questionmark.cc index 21abea4..21abea4 100644 --- a/libstdc++-v3/testsuite/28_regex/algorithms/match/extended/cstring_questionmark.cc +++ b/libstdc++-v3/testsuite/28_regex/algorithms/regex_match/extended/cstring_questionmark.cc diff --git a/libstdc++-v3/testsuite/28_regex/algorithms/match/extended/string_any.cc b/libstdc++-v3/testsuite/28_regex/algorithms/regex_match/extended/string_any.cc index 8d3716b..8d3716b 100644 --- a/libstdc++-v3/testsuite/28_regex/algorithms/match/extended/string_any.cc +++ b/libstdc++-v3/testsuite/28_regex/algorithms/regex_match/extended/string_any.cc diff --git a/libstdc++-v3/testsuite/28_regex/algorithms/match/extended/string_range_00_03.cc b/libstdc++-v3/testsuite/28_regex/algorithms/regex_match/extended/string_range_00_03.cc index a0a2e1f..a0a2e1f 100644 --- a/libstdc++-v3/testsuite/28_regex/algorithms/match/extended/string_range_00_03.cc +++ b/libstdc++-v3/testsuite/28_regex/algorithms/regex_match/extended/string_range_00_03.cc diff --git a/libstdc++-v3/testsuite/28_regex/algorithms/match/extended/string_range_01_03.cc b/libstdc++-v3/testsuite/28_regex/algorithms/regex_match/extended/string_range_01_03.cc index b50e076..b50e076 100644 --- a/libstdc++-v3/testsuite/28_regex/algorithms/match/extended/string_range_01_03.cc +++ b/libstdc++-v3/testsuite/28_regex/algorithms/regex_match/extended/string_range_01_03.cc diff --git a/libstdc++-v3/testsuite/28_regex/algorithms/match/extended/string_range_02_03.cc b/libstdc++-v3/testsuite/28_regex/algorithms/regex_match/extended/string_range_02_03.cc index ca322a8..ca322a8 100644 --- a/libstdc++-v3/testsuite/28_regex/algorithms/match/extended/string_range_02_03.cc +++ b/libstdc++-v3/testsuite/28_regex/algorithms/regex_match/extended/string_range_02_03.cc diff --git a/libstdc++-v3/testsuite/28_regex/basic_regex/regex.cc b/libstdc++-v3/testsuite/28_regex/basic_regex/ctors/basic/default.cc index 8a803ed..8a803ed 100644 --- a/libstdc++-v3/testsuite/28_regex/basic_regex/regex.cc +++ b/libstdc++-v3/testsuite/28_regex/basic_regex/ctors/basic/default.cc diff --git a/libstdc++-v3/testsuite/28_regex/basic_regex/ctors/basic/raw_string.cc b/libstdc++-v3/testsuite/28_regex/basic_regex/ctors/basic/raw_string.cc new file mode 100644 index 0000000..0ab42eb --- /dev/null +++ b/libstdc++-v3/testsuite/28_regex/basic_regex/ctors/basic/raw_string.cc @@ -0,0 +1,52 @@ +// { dg-options "-std=c++0x" } +// { dg-do run { xfail *-*-* } } + +// 2012-08-20 Benjamin Kosnik <bkoz@redhat.com> +// +// Copyright (C) 2012 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License along +// with this library; see the file COPYING3. If not see +// <http://www.gnu.org/licenses/>. + +// basic_regex constructors + raw string literals + +#include <regex> +#include <testsuite_regex.h> + +void +test01() +{ + using namespace __gnu_test; + + // raw string literals + + //string_type sre0(R"(\d{3}-\d{3}-\d{4})"); // expected fail + + string_type sre1(R"( this\n and new : forms\n )"); + + string_type sre2(R"([:num:]{3}-[:num:]{3}-[:num:]{4})"); + + // 1 + regex_type re(R"( this\n and new : forms\n )", std::regex::basic); + + // 2 + regex_sanity_check(sre1); +} + +int main() +{ + test01(); + return 0; +} diff --git a/libstdc++-v3/testsuite/util/testsuite_regex.h b/libstdc++-v3/testsuite/util/testsuite_regex.h new file mode 100644 index 0000000..dbf4b34 --- /dev/null +++ b/libstdc++-v3/testsuite/util/testsuite_regex.h @@ -0,0 +1,130 @@ +// -*- C++ -*- +// regex utils for the C++ library testsuite. +// +// Copyright (C) 2012 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License along +// with this library; see the file COPYING3. If not see +// <http://www.gnu.org/licenses/>. +// + +#include <regex> +#include <stdexcept> +#include <iostream> + +#ifndef _TESTSUITE_REGEX_H +#define _TESTSUITE_REGEX_H 1 + +namespace __gnu_test +{ + // Test on a compilation of simple expressions, throw regex_error on error. + typedef std::regex regex_type; + typedef regex_type::flag_type flag_type; + typedef std::regex_constants::error_type error_type; + typedef std::size_t size_type; + typedef std::string string_type; + + // Utilities + struct regex_expected_fail { }; + + const error_type regex_error_internal(static_cast<error_type>(-1)); + + // Stringify error codes for text logging. + const char* regex_error_codes[] = + { + "error_collate", + "error_ctype", + "error_escape", + "error_backref", + "error_brack", + "error_paren", + "error_brace", + "error_badbrace", + "error_range", + "error_space", + "error_badrepeat", + "error_complexity", + "error_stack" + }; + + void + show_regex_error_codes() + { + using namespace std; + using namespace std::regex_constants; + const char tab('\t'); + cout << "error_collate = " << tab << error_collate << endl; + cout << "error_ctype = " << tab << error_ctype << endl; + cout << "error_escape = " << tab << error_escape << endl; + cout << "error_backref = " << tab << error_backref << endl; + cout << "error_brack = " << tab << error_brack << endl; + cout << "error_paren = " << tab << error_paren << endl; + cout << "error_brace = " << tab << error_brace << endl; + cout << "error_badbrace = " << tab << error_badbrace << endl; + cout << "error_range = " << tab << error_range << endl; + cout << "error_space = " << tab << error_space << endl; + cout << "error_badrepeat = " << tab << error_badrepeat << endl; + cout << "error_complexity =" << tab << error_complexity << endl; + cout << "error_stack = " << tab << error_stack << endl; + } + + // Arguments + // string __res: the regular expression string + // flag_type __f: flag + // __error: expected error, if any + void + regex_sanity_check(const string_type& __res, + flag_type __f = regex_type::basic, + error_type __error = regex_error_internal) + { + using namespace std; + + try + { + regex_type reo(__res, __f); + auto n = reo.mark_count(); + cout << "regex_type::mark_count " << n << endl; + } + catch (const regex_error& e) + { + cout << "regex_sanity_check: " << __res << endl; + cout << "regex_error::what " << e.what() << endl; + + show_regex_error_codes(); + cout << "regex_error::code " << regex_error_codes[e.code()] << endl; + + if (__error != regex_error_internal) + { + // Then expected error_type is __error. Check. + if (__error != e.code()) + { + throw regex_expected_fail(); + } + } + throw; + } + catch (const logic_error& e) + { + cout << "logic_error::what " << e.what() << endl; + throw; + } + catch (const std::exception& e) + { + cout << "exception: " << endl; + throw; + } + } + +} // namespace __gnu_test +#endif |