mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-04-21 15:50:50 +08:00
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
This commit is contained in:
parent
74bf7dbb1e
commit
d2edfb151d
@ -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
|
||||
|
@ -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;
|
||||
}
|
130
libstdc++-v3/testsuite/util/testsuite_regex.h
Normal file
130
libstdc++-v3/testsuite/util/testsuite_regex.h
Normal file
@ -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
|
Loading…
x
Reference in New Issue
Block a user