From 554fd8c5195424bdbcabf5de30fdc183aba391bd Mon Sep 17 00:00:00 2001 From: upstream source tree Date: Sun, 15 Mar 2015 20:14:05 -0400 Subject: obtained gcc-4.6.4.tar.bz2 from upstream website; verified gcc-4.6.4.tar.bz2.sig; imported gcc-4.6.4 source tree from verified upstream tarball. downloading a git-generated archive based on the 'upstream' tag should provide you with a source tree that is binary identical to the one extracted from the above tarball. if you have obtained the source via the command 'git clone', however, do note that line-endings of files in your working directory might differ from line-endings of the respective files in the upstream repository. --- .../algorithms/02_match/basic/string_01.cc | 63 +++++++++++++++ .../02_match/basic/string_range_00_03.cc | 60 ++++++++++++++ .../02_match/basic/string_range_01_03.cc | 60 ++++++++++++++ .../02_match/basic/string_range_02_03.cc | 61 +++++++++++++++ .../algorithms/02_match/extended/cstring_plus.cc | 65 ++++++++++++++++ .../02_match/extended/cstring_questionmark.cc | 65 ++++++++++++++++ .../algorithms/02_match/extended/string_any.cc | 60 ++++++++++++++ .../02_match/extended/string_range_00_03.cc | 60 ++++++++++++++ .../02_match/extended/string_range_01_03.cc | 60 ++++++++++++++ .../02_match/extended/string_range_02_03.cc | 61 +++++++++++++++ .../algorithms/regex_replace/char/51711.cc | 31 ++++++++ .../algorithms/regex_replace/wchar_t/51711.cc | 31 ++++++++ .../28_regex/basic_regex/assign/char/cstring.cc | 44 +++++++++++ .../28_regex/basic_regex/assign/char/cstring_op.cc | 43 ++++++++++ .../28_regex/basic_regex/assign/char/moveable.cc | 50 ++++++++++++ .../28_regex/basic_regex/assign/char/pstring.cc | 43 ++++++++++ .../28_regex/basic_regex/assign/char/range.cc | 43 ++++++++++ .../28_regex/basic_regex/assign/char/string.cc | 44 +++++++++++ .../28_regex/basic_regex/assign/char/string_op.cc | 44 +++++++++++ .../28_regex/basic_regex/assign/wchar_t/cstring.cc | 44 +++++++++++ .../basic_regex/assign/wchar_t/cstring_op.cc | 44 +++++++++++ .../28_regex/basic_regex/assign/wchar_t/pstring.cc | 43 ++++++++++ .../28_regex/basic_regex/assign/wchar_t/range.cc | 44 +++++++++++ .../28_regex/basic_regex/assign/wchar_t/string.cc | 45 +++++++++++ .../basic_regex/assign/wchar_t/string_op.cc | 45 +++++++++++ .../testsuite/28_regex/basic_regex/ctors/47724.cc | 34 ++++++++ .../28_regex/basic_regex/ctors/basic/cstring.cc | 37 +++++++++ .../basic_regex/ctors/basic/pstring_char.cc | 42 ++++++++++ .../basic_regex/ctors/basic/pstring_wchar_t.cc | 44 +++++++++++ .../ctors/basic/string_range_01_02_03.cc | 51 ++++++++++++ .../28_regex/basic_regex/ctors/char/cstring.cc | 42 ++++++++++ .../28_regex/basic_regex/ctors/char/cstring_awk.cc | 37 +++++++++ .../basic_regex/ctors/char/cstring_ecma.cc | 37 +++++++++ .../basic_regex/ctors/char/cstring_egrep.cc | 37 +++++++++ .../basic_regex/ctors/char/cstring_grep.cc | 39 ++++++++++ .../28_regex/basic_regex/ctors/char/default.cc | 47 +++++++++++ .../28_regex/basic_regex/ctors/char/range.cc | 42 ++++++++++ .../28_regex/basic_regex/ctors/copy_char.cc | 45 +++++++++++ .../28_regex/basic_regex/ctors/extended/cstring.cc | 43 ++++++++++ .../ctors/extended/string_range_01_02_03.cc | 51 ++++++++++++ .../28_regex/basic_regex/ctors/move_char.cc | 49 ++++++++++++ .../28_regex/basic_regex/ctors/string_char.cc | 54 +++++++++++++ .../28_regex/basic_regex/ctors/string_wchar_t.cc | 56 +++++++++++++ .../28_regex/basic_regex/ctors/wchar_t/cstring.cc | 43 ++++++++++ .../28_regex/basic_regex/ctors/wchar_t/default.cc | 48 ++++++++++++ .../28_regex/basic_regex/ctors/wchar_t/range.cc | 43 ++++++++++ .../testsuite/28_regex/basic_regex/regex.cc | 37 +++++++++ .../basic_regex/requirements/constexpr_data.cc | 73 +++++++++++++++++ .../testsuite/28_regex/constants/error_type.cc | 54 +++++++++++++ .../28_regex/constants/match_flag_type.cc | 53 +++++++++++++ .../28_regex/constants/syntax_option_type.cc | 91 ++++++++++++++++++++++ .../headers/04_header/regex/std_c++0x_neg.cc | 23 ++++++ .../28_regex/headers/regex/std_c++0x_neg.cc | 26 +++++++ libstdc++-v3/testsuite/28_regex/init-list.cc | 48 ++++++++++++ .../iterators/regex_iterator/ctors/char/default.cc | 35 +++++++++ .../regex_iterator/ctors/wchar_t/default.cc | 35 +++++++++ .../28_regex/iterators/regex_iterator/typedefs.cc | 40 ++++++++++ .../regex_token_iterator/ctors/char/default.cc | 35 +++++++++ .../regex_token_iterator/ctors/wchar_t/default.cc | 35 +++++++++ .../iterators/regex_token_iterator/typedefs.cc | 40 ++++++++++ .../28_regex/match_results/ctors/char/default.cc | 52 +++++++++++++ .../match_results/ctors/wchar_t/default.cc | 52 +++++++++++++ .../testsuite/28_regex/match_results/typedefs.cc | 44 +++++++++++ libstdc++-v3/testsuite/28_regex/range_access.cc | 31 ++++++++ .../testsuite/28_regex/regex_error/regex_error.cc | 49 ++++++++++++ .../testsuite/28_regex/requirements/typedefs.cc | 38 +++++++++ .../testsuite/28_regex/sub_match/cast_char.cc | 49 ++++++++++++ .../testsuite/28_regex/sub_match/cast_wchar_t.cc | 49 ++++++++++++ .../testsuite/28_regex/sub_match/length.cc | 49 ++++++++++++ .../testsuite/28_regex/sub_match/typedefs.cc | 38 +++++++++ .../testsuite/28_regex/traits/char/ctor.cc | 50 ++++++++++++ .../testsuite/28_regex/traits/char/isctype.cc | 48 ++++++++++++ .../testsuite/28_regex/traits/char/length.cc | 49 ++++++++++++ .../28_regex/traits/char/lookup_classname.cc | 54 +++++++++++++ .../28_regex/traits/char/lookup_collatename.cc | 50 ++++++++++++ .../testsuite/28_regex/traits/char/transform.cc | 51 ++++++++++++ .../28_regex/traits/char/transform_primary.cc | 55 +++++++++++++ .../testsuite/28_regex/traits/char/translate.cc | 49 ++++++++++++ .../28_regex/traits/char/translate_nocase.cc | 46 +++++++++++ .../testsuite/28_regex/traits/char/value.cc | 49 ++++++++++++ .../testsuite/28_regex/traits/wchar_t/ctor.cc | 49 ++++++++++++ .../testsuite/28_regex/traits/wchar_t/length.cc | 49 ++++++++++++ .../testsuite/28_regex/traits/wchar_t/transform.cc | 51 ++++++++++++ .../testsuite/28_regex/traits/wchar_t/translate.cc | 49 ++++++++++++ .../28_regex/traits/wchar_t/translate_nocase.cc | 46 +++++++++++ .../testsuite/28_regex/traits/wchar_t/value.cc | 49 ++++++++++++ 86 files changed, 4044 insertions(+) create mode 100644 libstdc++-v3/testsuite/28_regex/algorithms/02_match/basic/string_01.cc create mode 100644 libstdc++-v3/testsuite/28_regex/algorithms/02_match/basic/string_range_00_03.cc create mode 100644 libstdc++-v3/testsuite/28_regex/algorithms/02_match/basic/string_range_01_03.cc create mode 100644 libstdc++-v3/testsuite/28_regex/algorithms/02_match/basic/string_range_02_03.cc create mode 100644 libstdc++-v3/testsuite/28_regex/algorithms/02_match/extended/cstring_plus.cc create mode 100644 libstdc++-v3/testsuite/28_regex/algorithms/02_match/extended/cstring_questionmark.cc create mode 100644 libstdc++-v3/testsuite/28_regex/algorithms/02_match/extended/string_any.cc create mode 100644 libstdc++-v3/testsuite/28_regex/algorithms/02_match/extended/string_range_00_03.cc create mode 100644 libstdc++-v3/testsuite/28_regex/algorithms/02_match/extended/string_range_01_03.cc create mode 100644 libstdc++-v3/testsuite/28_regex/algorithms/02_match/extended/string_range_02_03.cc create mode 100644 libstdc++-v3/testsuite/28_regex/algorithms/regex_replace/char/51711.cc create mode 100644 libstdc++-v3/testsuite/28_regex/algorithms/regex_replace/wchar_t/51711.cc create mode 100644 libstdc++-v3/testsuite/28_regex/basic_regex/assign/char/cstring.cc create mode 100644 libstdc++-v3/testsuite/28_regex/basic_regex/assign/char/cstring_op.cc create mode 100644 libstdc++-v3/testsuite/28_regex/basic_regex/assign/char/moveable.cc create mode 100644 libstdc++-v3/testsuite/28_regex/basic_regex/assign/char/pstring.cc create mode 100644 libstdc++-v3/testsuite/28_regex/basic_regex/assign/char/range.cc create mode 100644 libstdc++-v3/testsuite/28_regex/basic_regex/assign/char/string.cc create mode 100644 libstdc++-v3/testsuite/28_regex/basic_regex/assign/char/string_op.cc create mode 100644 libstdc++-v3/testsuite/28_regex/basic_regex/assign/wchar_t/cstring.cc create mode 100644 libstdc++-v3/testsuite/28_regex/basic_regex/assign/wchar_t/cstring_op.cc create mode 100644 libstdc++-v3/testsuite/28_regex/basic_regex/assign/wchar_t/pstring.cc create mode 100644 libstdc++-v3/testsuite/28_regex/basic_regex/assign/wchar_t/range.cc create mode 100644 libstdc++-v3/testsuite/28_regex/basic_regex/assign/wchar_t/string.cc create mode 100644 libstdc++-v3/testsuite/28_regex/basic_regex/assign/wchar_t/string_op.cc create mode 100644 libstdc++-v3/testsuite/28_regex/basic_regex/ctors/47724.cc create mode 100644 libstdc++-v3/testsuite/28_regex/basic_regex/ctors/basic/cstring.cc create mode 100644 libstdc++-v3/testsuite/28_regex/basic_regex/ctors/basic/pstring_char.cc create mode 100644 libstdc++-v3/testsuite/28_regex/basic_regex/ctors/basic/pstring_wchar_t.cc create mode 100644 libstdc++-v3/testsuite/28_regex/basic_regex/ctors/basic/string_range_01_02_03.cc create mode 100644 libstdc++-v3/testsuite/28_regex/basic_regex/ctors/char/cstring.cc create mode 100644 libstdc++-v3/testsuite/28_regex/basic_regex/ctors/char/cstring_awk.cc create mode 100644 libstdc++-v3/testsuite/28_regex/basic_regex/ctors/char/cstring_ecma.cc create mode 100644 libstdc++-v3/testsuite/28_regex/basic_regex/ctors/char/cstring_egrep.cc create mode 100644 libstdc++-v3/testsuite/28_regex/basic_regex/ctors/char/cstring_grep.cc create mode 100644 libstdc++-v3/testsuite/28_regex/basic_regex/ctors/char/default.cc create mode 100644 libstdc++-v3/testsuite/28_regex/basic_regex/ctors/char/range.cc create mode 100644 libstdc++-v3/testsuite/28_regex/basic_regex/ctors/copy_char.cc create mode 100644 libstdc++-v3/testsuite/28_regex/basic_regex/ctors/extended/cstring.cc create mode 100644 libstdc++-v3/testsuite/28_regex/basic_regex/ctors/extended/string_range_01_02_03.cc create mode 100644 libstdc++-v3/testsuite/28_regex/basic_regex/ctors/move_char.cc create mode 100644 libstdc++-v3/testsuite/28_regex/basic_regex/ctors/string_char.cc create mode 100644 libstdc++-v3/testsuite/28_regex/basic_regex/ctors/string_wchar_t.cc create mode 100644 libstdc++-v3/testsuite/28_regex/basic_regex/ctors/wchar_t/cstring.cc create mode 100644 libstdc++-v3/testsuite/28_regex/basic_regex/ctors/wchar_t/default.cc create mode 100644 libstdc++-v3/testsuite/28_regex/basic_regex/ctors/wchar_t/range.cc create mode 100644 libstdc++-v3/testsuite/28_regex/basic_regex/regex.cc create mode 100644 libstdc++-v3/testsuite/28_regex/basic_regex/requirements/constexpr_data.cc create mode 100644 libstdc++-v3/testsuite/28_regex/constants/error_type.cc create mode 100644 libstdc++-v3/testsuite/28_regex/constants/match_flag_type.cc create mode 100644 libstdc++-v3/testsuite/28_regex/constants/syntax_option_type.cc create mode 100644 libstdc++-v3/testsuite/28_regex/headers/04_header/regex/std_c++0x_neg.cc create mode 100644 libstdc++-v3/testsuite/28_regex/headers/regex/std_c++0x_neg.cc create mode 100644 libstdc++-v3/testsuite/28_regex/init-list.cc create mode 100644 libstdc++-v3/testsuite/28_regex/iterators/regex_iterator/ctors/char/default.cc create mode 100644 libstdc++-v3/testsuite/28_regex/iterators/regex_iterator/ctors/wchar_t/default.cc create mode 100644 libstdc++-v3/testsuite/28_regex/iterators/regex_iterator/typedefs.cc create mode 100644 libstdc++-v3/testsuite/28_regex/iterators/regex_token_iterator/ctors/char/default.cc create mode 100644 libstdc++-v3/testsuite/28_regex/iterators/regex_token_iterator/ctors/wchar_t/default.cc create mode 100644 libstdc++-v3/testsuite/28_regex/iterators/regex_token_iterator/typedefs.cc create mode 100644 libstdc++-v3/testsuite/28_regex/match_results/ctors/char/default.cc create mode 100644 libstdc++-v3/testsuite/28_regex/match_results/ctors/wchar_t/default.cc create mode 100644 libstdc++-v3/testsuite/28_regex/match_results/typedefs.cc create mode 100644 libstdc++-v3/testsuite/28_regex/range_access.cc create mode 100644 libstdc++-v3/testsuite/28_regex/regex_error/regex_error.cc create mode 100644 libstdc++-v3/testsuite/28_regex/requirements/typedefs.cc create mode 100644 libstdc++-v3/testsuite/28_regex/sub_match/cast_char.cc create mode 100644 libstdc++-v3/testsuite/28_regex/sub_match/cast_wchar_t.cc create mode 100644 libstdc++-v3/testsuite/28_regex/sub_match/length.cc create mode 100644 libstdc++-v3/testsuite/28_regex/sub_match/typedefs.cc create mode 100644 libstdc++-v3/testsuite/28_regex/traits/char/ctor.cc create mode 100644 libstdc++-v3/testsuite/28_regex/traits/char/isctype.cc create mode 100644 libstdc++-v3/testsuite/28_regex/traits/char/length.cc create mode 100644 libstdc++-v3/testsuite/28_regex/traits/char/lookup_classname.cc create mode 100644 libstdc++-v3/testsuite/28_regex/traits/char/lookup_collatename.cc create mode 100644 libstdc++-v3/testsuite/28_regex/traits/char/transform.cc create mode 100644 libstdc++-v3/testsuite/28_regex/traits/char/transform_primary.cc create mode 100644 libstdc++-v3/testsuite/28_regex/traits/char/translate.cc create mode 100644 libstdc++-v3/testsuite/28_regex/traits/char/translate_nocase.cc create mode 100644 libstdc++-v3/testsuite/28_regex/traits/char/value.cc create mode 100644 libstdc++-v3/testsuite/28_regex/traits/wchar_t/ctor.cc create mode 100644 libstdc++-v3/testsuite/28_regex/traits/wchar_t/length.cc create mode 100644 libstdc++-v3/testsuite/28_regex/traits/wchar_t/transform.cc create mode 100644 libstdc++-v3/testsuite/28_regex/traits/wchar_t/translate.cc create mode 100644 libstdc++-v3/testsuite/28_regex/traits/wchar_t/translate_nocase.cc create mode 100644 libstdc++-v3/testsuite/28_regex/traits/wchar_t/value.cc (limited to 'libstdc++-v3/testsuite/28_regex') diff --git a/libstdc++-v3/testsuite/28_regex/algorithms/02_match/basic/string_01.cc b/libstdc++-v3/testsuite/28_regex/algorithms/02_match/basic/string_01.cc new file mode 100644 index 000000000..4a7161a79 --- /dev/null +++ b/libstdc++-v3/testsuite/28_regex/algorithms/02_match/basic/string_01.cc @@ -0,0 +1,63 @@ +// { dg-options "-std=c++0x" } + +// +// 2010-06-11 Stephen M. Webb +// +// Copyright (C) 2010 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 +// . + +// 28.11.2 regex_match +// Tests BRE against a std::string target. + +#include +#include + +void +test01() +{ + bool test __attribute__((unused)) = true; + + std::regex re("\\(a\\).*", std::regex::basic); + std::string target("aaba"); + std::smatch m; + + VERIFY( std::regex_match(target, m, re) ); + + VERIFY( m.size() == re.mark_count()+1 ); + VERIFY( m.empty() == false ); + VERIFY( m.prefix().first == target.begin() ); + VERIFY( m.prefix().second == target.begin() ); + VERIFY( m.prefix().matched == false ); + VERIFY( m.suffix().first == target.end() ); + VERIFY( m.suffix().second == target.end() ); + VERIFY( m.suffix().matched == false ); + VERIFY( m[0].first == target.begin() ); + VERIFY( m[0].second == target.end() ); + VERIFY( m[0].matched == true ); + VERIFY( m[1].first == target.begin() ); + VERIFY( m[1].second == target.begin()+1 ); + VERIFY( m[1].matched == true ); +} + + +int +main() +{ + test01(); + return 0; +} + diff --git a/libstdc++-v3/testsuite/28_regex/algorithms/02_match/basic/string_range_00_03.cc b/libstdc++-v3/testsuite/28_regex/algorithms/02_match/basic/string_range_00_03.cc new file mode 100644 index 000000000..6c0fdd76f --- /dev/null +++ b/libstdc++-v3/testsuite/28_regex/algorithms/02_match/basic/string_range_00_03.cc @@ -0,0 +1,60 @@ +// { dg-options "-std=c++0x" } + +// +// 2010-06-16 Stephen M. Webb +// +// Copyright (C) 2010 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 +// . + +// 28.11.2 regex_match +// Tests BRE against a std::string target, exercising range {0,3} + +#include +#include + +void +test01() +{ + bool test __attribute__((unused)) = true; + + std::regex re("a\\{0,3\\}", std::regex::basic); + std::string target("aa"); + std::smatch m; + + VERIFY( std::regex_match(target, m, re) ); + + VERIFY( m.size() == re.mark_count()+1 ); + VERIFY( m.empty() == false ); + VERIFY( m.prefix().first == target.begin() ); + VERIFY( m.prefix().second == target.begin() ); + VERIFY( m.prefix().matched == false ); + VERIFY( m.suffix().first == target.end() ); + VERIFY( m.suffix().second == target.end() ); + VERIFY( m.suffix().matched == false ); + VERIFY( m[0].first == target.begin() ); + VERIFY( m[0].second == target.end() ); + VERIFY( m[0].matched == true ); +} + + +int +main() +{ + test01(); + return 0; +} + diff --git a/libstdc++-v3/testsuite/28_regex/algorithms/02_match/basic/string_range_01_03.cc b/libstdc++-v3/testsuite/28_regex/algorithms/02_match/basic/string_range_01_03.cc new file mode 100644 index 000000000..3439b544b --- /dev/null +++ b/libstdc++-v3/testsuite/28_regex/algorithms/02_match/basic/string_range_01_03.cc @@ -0,0 +1,60 @@ +// { dg-options "-std=c++0x" } + +// +// 2010-06-16 Stephen M. Webb +// +// Copyright (C) 2010 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 +// . + +// 28.11.2 regex_match +// Tests BRE against a std::string target, exercising range {1,3} + +#include +#include + +void +test01() +{ + bool test __attribute__((unused)) = true; + + std::regex re("a\\{1,3\\}", std::regex::basic); + std::string target("aa"); + std::smatch m; + + VERIFY( std::regex_match(target, m, re) ); + + VERIFY( m.size() == re.mark_count()+1 ); + VERIFY( m.empty() == false ); + VERIFY( m.prefix().first == target.begin() ); + VERIFY( m.prefix().second == target.begin() ); + VERIFY( m.prefix().matched == false ); + VERIFY( m.suffix().first == target.end() ); + VERIFY( m.suffix().second == target.end() ); + VERIFY( m.suffix().matched == false ); + VERIFY( m[0].first == target.begin() ); + VERIFY( m[0].second == target.end() ); + VERIFY( m[0].matched == true ); +} + + +int +main() +{ + test01(); + return 0; +} + diff --git a/libstdc++-v3/testsuite/28_regex/algorithms/02_match/basic/string_range_02_03.cc b/libstdc++-v3/testsuite/28_regex/algorithms/02_match/basic/string_range_02_03.cc new file mode 100644 index 000000000..dfd00a0f3 --- /dev/null +++ b/libstdc++-v3/testsuite/28_regex/algorithms/02_match/basic/string_range_02_03.cc @@ -0,0 +1,61 @@ +// { dg-options "-std=c++0x" } +// { dg-do run { xfail *-*-* } } + +// +// 2010-06-16 Stephen M. Webb +// +// Copyright (C) 2010 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 +// . + +// 28.11.2 regex_match +// Tests BRE against a std::string target, exercising range {2,3} + +#include +#include + +void +test01() +{ + bool test __attribute__((unused)) = true; + + std::regex re("a\\{2,3\\}", std::regex::basic); + std::string target("aa"); + std::smatch m; + + VERIFY( std::regex_match(target, m, re) ); + + VERIFY( m.size() == re.mark_count()+1 ); + VERIFY( m.empty() == false ); + VERIFY( m.prefix().first == target.begin() ); + VERIFY( m.prefix().second == target.begin() ); + VERIFY( m.prefix().matched == false ); + VERIFY( m.suffix().first == target.end() ); + VERIFY( m.suffix().second == target.end() ); + VERIFY( m.suffix().matched == false ); + VERIFY( m[0].first == target.begin() ); + VERIFY( m[0].second == target.end() ); + VERIFY( m[0].matched == true ); +} + + +int +main() +{ + test01(); + return 0; +} + diff --git a/libstdc++-v3/testsuite/28_regex/algorithms/02_match/extended/cstring_plus.cc b/libstdc++-v3/testsuite/28_regex/algorithms/02_match/extended/cstring_plus.cc new file mode 100644 index 000000000..ad0f57e22 --- /dev/null +++ b/libstdc++-v3/testsuite/28_regex/algorithms/02_match/extended/cstring_plus.cc @@ -0,0 +1,65 @@ +// { dg-options "-std=c++0x" } +// { dg-do run { xfail *-*-* } } + +// +// 2010-06-21 Stephen M. Webb +// +// Copyright (C) 2010 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 +// . + +// 28.11.2 regex_match +// Tests ERE against a C-string target, plus-sign match. + +#include +#include + +void +test01() +{ + bool test __attribute__((unused)) = true; + + std::regex re("(a+)", std::regex::extended); + const char target[] = "aa"; + std::cmatch m; + + VERIFY( std::regex_match(target, m, re) ); + + VERIFY( re.mark_count() == 1 ); + VERIFY( m.size() == re.mark_count()+1 ); + VERIFY( m.empty() == false ); + VERIFY( m.prefix().first == target ); + VERIFY( m.prefix().second == target ); + VERIFY( m.prefix().matched == false ); + VERIFY( m.suffix().first == target+sizeof(target) ); + VERIFY( m.suffix().second == target+sizeof(target) ); + VERIFY( m.suffix().matched == false ); + VERIFY( m[0].first == target ); + VERIFY( m[0].second == target+sizeof(target) ); + VERIFY( m[0].matched == true ); + VERIFY( m[1].first == target ); + VERIFY( m[1].second == target+sizeof(target) ); + VERIFY( m[1].matched == true ); +} + + +int +main() +{ + test01(); + return 0; +} + diff --git a/libstdc++-v3/testsuite/28_regex/algorithms/02_match/extended/cstring_questionmark.cc b/libstdc++-v3/testsuite/28_regex/algorithms/02_match/extended/cstring_questionmark.cc new file mode 100644 index 000000000..21abea456 --- /dev/null +++ b/libstdc++-v3/testsuite/28_regex/algorithms/02_match/extended/cstring_questionmark.cc @@ -0,0 +1,65 @@ +// { dg-options "-std=c++0x" } +// { dg-do run { xfail *-*-* } } + +// +// 2010-06-21 Stephen M. Webb +// +// Copyright (C) 2010 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 +// . + +// 28.11.2 regex_match +// Tests ERE against a C-string target, question-mark match. + +#include +#include + +void +test01() +{ + bool test __attribute__((unused)) = true; + + std::regex re("(aa?)", std::regex::extended); + char target[] = "a"; + std::cmatch m; + + VERIFY( std::regex_match(target, m, re) ); + + VERIFY( re.mark_count() == 1 ); + VERIFY( m.size() == re.mark_count()+1 ); + VERIFY( m.empty() == false ); + VERIFY( m.prefix().first == target ); + VERIFY( m.prefix().second == target ); + VERIFY( m.prefix().matched == false ); + VERIFY( m.suffix().first == target+sizeof(target) ); + VERIFY( m.suffix().second == target+sizeof(target) ); + VERIFY( m.suffix().matched == false ); + VERIFY( m[0].first == target ); + VERIFY( m[0].second == target+sizeof(target) ); + VERIFY( m[0].matched == true ); + VERIFY( m[1].first == target ); + VERIFY( m[1].second == target+sizeof(target) ); + VERIFY( m[1].matched == true ); +} + + +int +main() +{ + test01(); + return 0; +} + diff --git a/libstdc++-v3/testsuite/28_regex/algorithms/02_match/extended/string_any.cc b/libstdc++-v3/testsuite/28_regex/algorithms/02_match/extended/string_any.cc new file mode 100644 index 000000000..8d3716b1e --- /dev/null +++ b/libstdc++-v3/testsuite/28_regex/algorithms/02_match/extended/string_any.cc @@ -0,0 +1,60 @@ +// { dg-options "-std=c++0x" } + +// +// 2010-06-11 Stephen M. Webb +// +// Copyright (C) 2010 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 +// . + +// 28.11.2 regex_match +// Tests ERE against a std::string target. + +#include +#include + +void +test01() +{ + bool test __attribute__((unused)) = true; + + std::regex re(".*", std::regex::extended); + std::string target("aaba"); + std::smatch m; + + VERIFY( std::regex_match(target, m, re) ); + + VERIFY( m.size() == re.mark_count()+1 ); + VERIFY( m.empty() == false ); + VERIFY( m.prefix().first == target.begin() ); + VERIFY( m.prefix().second == target.begin() ); + VERIFY( m.prefix().matched == false ); + VERIFY( m.suffix().first == target.end() ); + VERIFY( m.suffix().second == target.end() ); + VERIFY( m.suffix().matched == false ); + VERIFY( m[0].first == target.begin() ); + VERIFY( m[0].second == target.end() ); + VERIFY( m[0].matched == true ); +} + + +int +main() +{ + test01(); + return 0; +} + diff --git a/libstdc++-v3/testsuite/28_regex/algorithms/02_match/extended/string_range_00_03.cc b/libstdc++-v3/testsuite/28_regex/algorithms/02_match/extended/string_range_00_03.cc new file mode 100644 index 000000000..a0a2e1fa9 --- /dev/null +++ b/libstdc++-v3/testsuite/28_regex/algorithms/02_match/extended/string_range_00_03.cc @@ -0,0 +1,60 @@ +// { dg-options "-std=c++0x" } + +// +// 2010-06-16 Stephen M. Webb +// +// Copyright (C) 2010 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 +// . + +// 28.11.2 regex_match +// Tests ERE against a std::string target, exercising range {0,3} + +#include +#include + +void +test01() +{ + bool test __attribute__((unused)) = true; + + std::regex re("a{0,3}", std::regex::extended); + std::string target("aa"); + std::smatch m; + + VERIFY( std::regex_match(target, m, re) ); + + VERIFY( m.size() == re.mark_count()+1 ); + VERIFY( m.empty() == false ); + VERIFY( m.prefix().first == target.begin() ); + VERIFY( m.prefix().second == target.begin() ); + VERIFY( m.prefix().matched == false ); + VERIFY( m.suffix().first == target.end() ); + VERIFY( m.suffix().second == target.end() ); + VERIFY( m.suffix().matched == false ); + VERIFY( m[0].first == target.begin() ); + VERIFY( m[0].second == target.end() ); + VERIFY( m[0].matched == true ); +} + + +int +main() +{ + test01(); + return 0; +} + diff --git a/libstdc++-v3/testsuite/28_regex/algorithms/02_match/extended/string_range_01_03.cc b/libstdc++-v3/testsuite/28_regex/algorithms/02_match/extended/string_range_01_03.cc new file mode 100644 index 000000000..b50e07645 --- /dev/null +++ b/libstdc++-v3/testsuite/28_regex/algorithms/02_match/extended/string_range_01_03.cc @@ -0,0 +1,60 @@ +// { dg-options "-std=c++0x" } + +// +// 2010-06-16 Stephen M. Webb +// +// Copyright (C) 2010 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 +// . + +// 28.11.2 regex_match +// Tests ERE against a std::string target, exercising range {1,3} + +#include +#include + +void +test01() +{ + bool test __attribute__((unused)) = true; + + std::regex re("a{1,3}", std::regex::extended); + std::string target("aa"); + std::smatch m; + + VERIFY( std::regex_match(target, m, re) ); + + VERIFY( m.size() == re.mark_count()+1 ); + VERIFY( m.empty() == false ); + VERIFY( m.prefix().first == target.begin() ); + VERIFY( m.prefix().second == target.begin() ); + VERIFY( m.prefix().matched == false ); + VERIFY( m.suffix().first == target.end() ); + VERIFY( m.suffix().second == target.end() ); + VERIFY( m.suffix().matched == false ); + VERIFY( m[0].first == target.begin() ); + VERIFY( m[0].second == target.end() ); + VERIFY( m[0].matched == true ); +} + + +int +main() +{ + test01(); + return 0; +} + diff --git a/libstdc++-v3/testsuite/28_regex/algorithms/02_match/extended/string_range_02_03.cc b/libstdc++-v3/testsuite/28_regex/algorithms/02_match/extended/string_range_02_03.cc new file mode 100644 index 000000000..ca322a8d4 --- /dev/null +++ b/libstdc++-v3/testsuite/28_regex/algorithms/02_match/extended/string_range_02_03.cc @@ -0,0 +1,61 @@ +// { dg-options "-std=c++0x" } +// { dg-do run { xfail *-*-* } } + +// +// 2010-06-16 Stephen M. Webb +// +// Copyright (C) 2010 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 +// . + +// 28.11.2 regex_match +// Tests ERE against a std::string target, exercising range {2,3} + +#include +#include + +void +test01() +{ + bool test __attribute__((unused)) = true; + + std::regex re("a{2,3}", std::regex::extended); + std::string target("aa"); + std::smatch m; + + VERIFY( std::regex_match(target, m, re) ); + + VERIFY( m.size() == re.mark_count()+1 ); + VERIFY( m.empty() == false ); + VERIFY( m.prefix().first == target.begin() ); + VERIFY( m.prefix().second == target.begin() ); + VERIFY( m.prefix().matched == false ); + VERIFY( m.suffix().first == target.end() ); + VERIFY( m.suffix().second == target.end() ); + VERIFY( m.suffix().matched == false ); + VERIFY( m[0].first == target.begin() ); + VERIFY( m[0].second == target.end() ); + VERIFY( m[0].matched == true ); +} + + +int +main() +{ + test01(); + return 0; +} + diff --git a/libstdc++-v3/testsuite/28_regex/algorithms/regex_replace/char/51711.cc b/libstdc++-v3/testsuite/28_regex/algorithms/regex_replace/char/51711.cc new file mode 100644 index 000000000..5532713ce --- /dev/null +++ b/libstdc++-v3/testsuite/28_regex/algorithms/regex_replace/char/51711.cc @@ -0,0 +1,31 @@ +// { dg-options "-std=gnu++0x" } +// { dg-do compile } + +// Copyright (C) 2011 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 +// . +// + +#include +#include + +// libstdc++/51711 +void test01() +{ + std::string toProcess("Bug\r\n"); + std::string result __attribute__((unused)) + = std::regex_replace(toProcess, std::regex("\\r"), std::string("\\r")); +} diff --git a/libstdc++-v3/testsuite/28_regex/algorithms/regex_replace/wchar_t/51711.cc b/libstdc++-v3/testsuite/28_regex/algorithms/regex_replace/wchar_t/51711.cc new file mode 100644 index 000000000..66b74e458 --- /dev/null +++ b/libstdc++-v3/testsuite/28_regex/algorithms/regex_replace/wchar_t/51711.cc @@ -0,0 +1,31 @@ +// { dg-options "-std=gnu++0x" } +// { dg-do compile } + +// Copyright (C) 2011 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 +// . +// + +#include +#include + +// libstdc++/51711 +void test01() +{ + std::wstring toProcess(L"Bug\r\n"); + std::wstring result __attribute__((unused)) + = std::regex_replace(toProcess, std::wregex(L"\\r"), std::wstring(L"\\r")); +} diff --git a/libstdc++-v3/testsuite/28_regex/basic_regex/assign/char/cstring.cc b/libstdc++-v3/testsuite/28_regex/basic_regex/assign/char/cstring.cc new file mode 100644 index 000000000..1552818e9 --- /dev/null +++ b/libstdc++-v3/testsuite/28_regex/basic_regex/assign/char/cstring.cc @@ -0,0 +1,44 @@ +// { dg-do compile } +// { dg-options "-std=c++0x" } + +// 2009-06-05 Stephen M. Webb +// +// Copyright (C) 2009 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 +// . + +// C++0X [28.8.3] class template basic_regex assign() + +#include +#include + +// Tests assign operation from a C-style null-terminated-string. +void test01() +{ + bool test __attribute__((unused)) = true; + + std::basic_regex re; + + const char* cs = "aab"; + re.assign(cs); +} + +int +main() +{ + test01(); + return 0; +}; diff --git a/libstdc++-v3/testsuite/28_regex/basic_regex/assign/char/cstring_op.cc b/libstdc++-v3/testsuite/28_regex/basic_regex/assign/char/cstring_op.cc new file mode 100644 index 000000000..12353023b --- /dev/null +++ b/libstdc++-v3/testsuite/28_regex/basic_regex/assign/char/cstring_op.cc @@ -0,0 +1,43 @@ +// { dg-do compile } +// { dg-options "-std=gnu++0x" } + +// 2007-03-12 Stephen M. Webb +// +// Copyright (C) 2010 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 +// . + +// [28.8.3] class template basic_regex assign() + +#include +#include + +// Tests basic_regex assign operator from a C-style null-terminated-string. +void test01() +{ + typedef std::basic_regex test_type; + + const char* cs = "aab"; + test_type re; + re = cs; +} + +int +main() +{ + test01(); + return 0; +}; diff --git a/libstdc++-v3/testsuite/28_regex/basic_regex/assign/char/moveable.cc b/libstdc++-v3/testsuite/28_regex/basic_regex/assign/char/moveable.cc new file mode 100644 index 000000000..64f5bcac5 --- /dev/null +++ b/libstdc++-v3/testsuite/28_regex/basic_regex/assign/char/moveable.cc @@ -0,0 +1,50 @@ +// { dg-options "-std=gnu++0x" } + +// 2010-07-07 Stephen M. Webb +// +// Copyright (C) 2010 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 +// . + +// [28.8.3](9-11) class template basic_regex assign + +#include +#include +#include + +// Tests assign operator of the basic_regex class for moveable rvalues. +void test01() +{ + bool test __attribute__((unused)) = true; + + std::regex src_re("aaba"); + const unsigned mark_count = src_re.mark_count(); + const std::regex::flag_type flags = src_re.flags(); + + std::regex target_re; + + target_re.assign(std::move(src_re)); + + VERIFY( target_re.flags() == flags ); + VERIFY( target_re.mark_count() == mark_count ); +} + +int +main() +{ + test01(); + return 0; +}; diff --git a/libstdc++-v3/testsuite/28_regex/basic_regex/assign/char/pstring.cc b/libstdc++-v3/testsuite/28_regex/basic_regex/assign/char/pstring.cc new file mode 100644 index 000000000..398b66c60 --- /dev/null +++ b/libstdc++-v3/testsuite/28_regex/basic_regex/assign/char/pstring.cc @@ -0,0 +1,43 @@ +// { dg-do compile } +// { dg-options "-std=gnu++0x" } + +// 2007-03-12 Stephen M. Webb +// +// Copyright (C) 2010 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 +// . + +// [28.8.3] class template basic_regex assign() + +#include +#include + +// Tests assign operation from a Pascal-style counted-string. +void test01() +{ + typedef std::basic_regex test_type; + + const char cs[] = "aab"; + test_type re; + re.assign(cs, sizeof(cs)-1, std::regex_constants::basic); +} + +int +main() +{ + test01(); + return 0; +}; diff --git a/libstdc++-v3/testsuite/28_regex/basic_regex/assign/char/range.cc b/libstdc++-v3/testsuite/28_regex/basic_regex/assign/char/range.cc new file mode 100644 index 000000000..cd741d5ff --- /dev/null +++ b/libstdc++-v3/testsuite/28_regex/basic_regex/assign/char/range.cc @@ -0,0 +1,43 @@ +// { dg-do compile } +// { dg-options "-std=gnu++0x" } + +// 2007-03-12 Stephen M. Webb +// +// Copyright (C) 2010 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 +// . + +// [28.8.3] class template basic_regex assign() + +#include +#include + +// Tests range assign of the basic_regex class. +void test01() +{ + typedef std::basic_regex test_type; + + char s[] = "a+b|c"; + test_type re; + re.assign(s, s + 5); +} + +int +main() +{ + test01(); + return 0; +}; diff --git a/libstdc++-v3/testsuite/28_regex/basic_regex/assign/char/string.cc b/libstdc++-v3/testsuite/28_regex/basic_regex/assign/char/string.cc new file mode 100644 index 000000000..afa071eb3 --- /dev/null +++ b/libstdc++-v3/testsuite/28_regex/basic_regex/assign/char/string.cc @@ -0,0 +1,44 @@ +// { dg-do compile } +// { dg-options "-std=gnu++0x" } + +// 2007-03-12 Stephen M. Webb +// +// Copyright (C) 2010 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 +// . + +// [28.8.3] class template basic_regex assign() + +#include +#include +#include + +// Tests C++ string assignment of the basic_regex class. +void test01() +{ + typedef std::basic_regex test_type; + + std::string s("a*b"); + test_type re; + re.assign(s); +} + +int +main() +{ + test01(); + return 0; +}; diff --git a/libstdc++-v3/testsuite/28_regex/basic_regex/assign/char/string_op.cc b/libstdc++-v3/testsuite/28_regex/basic_regex/assign/char/string_op.cc new file mode 100644 index 000000000..724872dec --- /dev/null +++ b/libstdc++-v3/testsuite/28_regex/basic_regex/assign/char/string_op.cc @@ -0,0 +1,44 @@ +// { dg-do compile } +// { dg-options "-std=gnu++0x" } + +// 2007-03-12 Stephen M. Webb +// +// Copyright (C) 2010 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 +// . + +// [28.8.3] class template basic_regex assign() + +#include +#include +#include + +// Tests basic_regex assignment operator from a C++ string; +void test01() +{ + typedef std::basic_regex test_type; + + std::string s("a*b"); + test_type re; + re = s; +} + +int +main() +{ + test01(); + return 0; +}; diff --git a/libstdc++-v3/testsuite/28_regex/basic_regex/assign/wchar_t/cstring.cc b/libstdc++-v3/testsuite/28_regex/basic_regex/assign/wchar_t/cstring.cc new file mode 100644 index 000000000..20ccab012 --- /dev/null +++ b/libstdc++-v3/testsuite/28_regex/basic_regex/assign/wchar_t/cstring.cc @@ -0,0 +1,44 @@ +// { dg-do compile } +// { dg-options "-std=gnu++0x" } + +// 2007-03-12 Stephen M. Webb +// +// Copyright (C) 2010 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 +// . + +// [28.8.3] class template basic_regex assign() + +#include +#include + +// Tests assign operation from a C-style null-terminated-string. +void test01() +{ + bool test __attribute__((unused)) = true; + typedef std::basic_regex test_type; + + const wchar_t* cs = L"aab"; + test_type re; + re.assign(cs); +} + +int +main() +{ + test01(); + return 0; +}; diff --git a/libstdc++-v3/testsuite/28_regex/basic_regex/assign/wchar_t/cstring_op.cc b/libstdc++-v3/testsuite/28_regex/basic_regex/assign/wchar_t/cstring_op.cc new file mode 100644 index 000000000..8d8e9656d --- /dev/null +++ b/libstdc++-v3/testsuite/28_regex/basic_regex/assign/wchar_t/cstring_op.cc @@ -0,0 +1,44 @@ +// { dg-do compile } +// { dg-options "-std=gnu++0x" } + +// 2007-03-12 Stephen M. Webb +// +// Copyright (C) 2010 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 +// . + +// [28.8.3] class template basic_regex assign() + +#include +#include + +// Tests basic_regex assign operator from a C-style null-terminated-string. +void test01() +{ + bool test __attribute__((unused)) = true; + typedef std::basic_regex test_type; + + const wchar_t* cs = L"aab"; + test_type re; + re = cs; +} + +int +main() +{ + test01(); + return 0; +}; diff --git a/libstdc++-v3/testsuite/28_regex/basic_regex/assign/wchar_t/pstring.cc b/libstdc++-v3/testsuite/28_regex/basic_regex/assign/wchar_t/pstring.cc new file mode 100644 index 000000000..9034a542c --- /dev/null +++ b/libstdc++-v3/testsuite/28_regex/basic_regex/assign/wchar_t/pstring.cc @@ -0,0 +1,43 @@ +// { dg-do compile } +// { dg-options "-std=gnu++0x" } + +// 2007-03-12 Stephen M. Webb +// +// Copyright (C) 2010 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 +// . + +// [28.8.3] class template basic_regex assign() + +#include +#include + +// Tests assign operation from a Pascal-style counted-string. +void test01() +{ + typedef std::basic_regex test_type; + + const wchar_t cs[] = L"aab"; + test_type re; + re.assign(cs, sizeof(cs)-1, std::regex_constants::basic); +} + +int +main() +{ + test01(); + return 0; +}; diff --git a/libstdc++-v3/testsuite/28_regex/basic_regex/assign/wchar_t/range.cc b/libstdc++-v3/testsuite/28_regex/basic_regex/assign/wchar_t/range.cc new file mode 100644 index 000000000..2e31a7084 --- /dev/null +++ b/libstdc++-v3/testsuite/28_regex/basic_regex/assign/wchar_t/range.cc @@ -0,0 +1,44 @@ +// { dg-do compile } +// { dg-options "-std=gnu++0x" } + +// 2007-03-12 Stephen M. Webb +// +// Copyright (C) 2010 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 +// . + +// [28.8.3] class template basic_regex assign() + +#include +#include + +// Tests range assign of the basic_regex class. +void test01() +{ + typedef std::basic_regex test_type; + bool test __attribute__((unused)) = true; + + wchar_t s[] = L"a+b|c"; + test_type re; + re.assign(s, s + 5); +} + +int +main() +{ + test01(); + return 0; +}; diff --git a/libstdc++-v3/testsuite/28_regex/basic_regex/assign/wchar_t/string.cc b/libstdc++-v3/testsuite/28_regex/basic_regex/assign/wchar_t/string.cc new file mode 100644 index 000000000..156374ac1 --- /dev/null +++ b/libstdc++-v3/testsuite/28_regex/basic_regex/assign/wchar_t/string.cc @@ -0,0 +1,45 @@ +// { dg-do compile } +// { dg-options "-std=gnu++0x" } + +// 2007-03-12 Stephen M. Webb +// +// Copyright (C) 2010 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 +// . + +// [28.8.3] class template basic_regex assign() + +#include +#include +#include + +// Tests C++ string assignment of the basic_regex class. +void test01() +{ + bool test __attribute__((unused)) = true; + typedef std::basic_regex test_type; + + std::wstring s(L"a*b"); + test_type re; + re.assign(s); +} + +int +main() +{ + test01(); + return 0; +}; diff --git a/libstdc++-v3/testsuite/28_regex/basic_regex/assign/wchar_t/string_op.cc b/libstdc++-v3/testsuite/28_regex/basic_regex/assign/wchar_t/string_op.cc new file mode 100644 index 000000000..43704af2b --- /dev/null +++ b/libstdc++-v3/testsuite/28_regex/basic_regex/assign/wchar_t/string_op.cc @@ -0,0 +1,45 @@ +// { dg-do compile } +// { dg-options "-std=gnu++0x" } + +// 2007-03-12 Stephen M. Webb +// +// Copyright (C) 2010 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 +// . + +// [28.8.3] class template basic_regex assign() + +#include +#include +#include + +// Tests basic_regex assignment operator from a C++ string; +void test01() +{ + bool test __attribute__((unused)) = true; + typedef std::basic_regex test_type; + + std::wstring s(L"a*b"); + test_type re; + re = s; +} + +int +main() +{ + test01(); + return 0; +}; diff --git a/libstdc++-v3/testsuite/28_regex/basic_regex/ctors/47724.cc b/libstdc++-v3/testsuite/28_regex/basic_regex/ctors/47724.cc new file mode 100644 index 000000000..7a744bbd8 --- /dev/null +++ b/libstdc++-v3/testsuite/28_regex/basic_regex/ctors/47724.cc @@ -0,0 +1,34 @@ +// { dg-options "-std=gnu++0x" } + +// Copyright (C) 2011 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 +// . + +// PR libstdc++/47724 + +#include + +void test01() +{ + std::regex s("^$"); +} + +int +main() +{ + test01(); + return 0; +}; diff --git a/libstdc++-v3/testsuite/28_regex/basic_regex/ctors/basic/cstring.cc b/libstdc++-v3/testsuite/28_regex/basic_regex/ctors/basic/cstring.cc new file mode 100644 index 000000000..b91453c0e --- /dev/null +++ b/libstdc++-v3/testsuite/28_regex/basic_regex/ctors/basic/cstring.cc @@ -0,0 +1,37 @@ +// { dg-do compile } +// { dg-options "-std=c++0x" } + +// 2007-03-12 Stephen M. Webb +// +// Copyright (C) 2007, 2009 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 +// . + +// 7.8.2 basic_regex constructors + +#include + +void +test01() +{ + std::regex re("(a|b)*abb", std::regex::basic); +} + +int main() +{ + test01(); + return 0; +} diff --git a/libstdc++-v3/testsuite/28_regex/basic_regex/ctors/basic/pstring_char.cc b/libstdc++-v3/testsuite/28_regex/basic_regex/ctors/basic/pstring_char.cc new file mode 100644 index 000000000..2f011fe52 --- /dev/null +++ b/libstdc++-v3/testsuite/28_regex/basic_regex/ctors/basic/pstring_char.cc @@ -0,0 +1,42 @@ +// { dg-do run } +// { dg-options "-std=gnu++0x" } + +// 2007-03-12 Stephen M. Webb +// +// Copyright (C) 2010 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 +// . + +// [28.8.2] class template basic_regex constructor + +#include +#include + +// Tests Pascal-style counted-string constructor of the basic_regex class. +void test01() +{ + const char* cs = "aab"; + std::regex re(cs, 3, std::regex::basic); + + VERIFY( re.flags() & std::regex_constants::basic ); +} + +int +main() +{ + test01(); + return 0; +}; diff --git a/libstdc++-v3/testsuite/28_regex/basic_regex/ctors/basic/pstring_wchar_t.cc b/libstdc++-v3/testsuite/28_regex/basic_regex/ctors/basic/pstring_wchar_t.cc new file mode 100644 index 000000000..89deef6f1 --- /dev/null +++ b/libstdc++-v3/testsuite/28_regex/basic_regex/ctors/basic/pstring_wchar_t.cc @@ -0,0 +1,44 @@ +// { dg-do run } +// { dg-options "-std=c++0x" } + +// 2007-03-12 Stephen M. Webb +// +// Copyright (C) 2010 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 +// . + +// [28.8.2] class template basic_regex constructor + +#include +#include + +// Tests Pascal-style counted-string constructor of the basic_regex class. +void test01() +{ + bool test __attribute__((unused)) = true; + + const wchar_t* cs = L"aab"; + std::wregex re(cs, 3, std::wregex::basic); + + VERIFY( re.flags() & std::regex_constants::basic ); +} + +int +main() +{ + test01(); + return 0; +}; diff --git a/libstdc++-v3/testsuite/28_regex/basic_regex/ctors/basic/string_range_01_02_03.cc b/libstdc++-v3/testsuite/28_regex/basic_regex/ctors/basic/string_range_01_02_03.cc new file mode 100644 index 000000000..70ae2fa2a --- /dev/null +++ b/libstdc++-v3/testsuite/28_regex/basic_regex/ctors/basic/string_range_01_02_03.cc @@ -0,0 +1,51 @@ +// { dg-options "-std=gnu++0x" } + +// +// 2010-06-16 Stephen M. Webb +// +// Copyright (C) 2010, 2011 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 +// . + +// 28.8.2 basic_regex ctor +// Tests for invalid range expression + +#include +#include + +void +test01() +{ + bool test __attribute__((unused)) = true; + + try + { + std::regex re("a\\{1,2,3\\}", std::regex::basic); + } + catch (std::regex_error& ex) + { + VERIFY( ex.code() == std::regex_constants::error_brace ); + } +} + + +int +main() +{ + test01(); + return 0; +} + diff --git a/libstdc++-v3/testsuite/28_regex/basic_regex/ctors/char/cstring.cc b/libstdc++-v3/testsuite/28_regex/basic_regex/ctors/char/cstring.cc new file mode 100644 index 000000000..ac87e4d69 --- /dev/null +++ b/libstdc++-v3/testsuite/28_regex/basic_regex/ctors/char/cstring.cc @@ -0,0 +1,42 @@ +// { dg-do compile } +// { dg-options "-std=gnu++0x" } + +// 2007-03-12 Stephen M. Webb +// +// Copyright (C) 2010 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 +// . + +// [28.8.2] class template basic_regex constructor + +#include +#include + +// Tests C-style null-terminated-string constructor of the basic_regex class. +void test01() +{ + typedef std::basic_regex test_type; + + const char* cs = "aab"; + test_type re(cs); +} + +int +main() +{ + test01(); + return 0; +}; diff --git a/libstdc++-v3/testsuite/28_regex/basic_regex/ctors/char/cstring_awk.cc b/libstdc++-v3/testsuite/28_regex/basic_regex/ctors/char/cstring_awk.cc new file mode 100644 index 000000000..8b93fe7a7 --- /dev/null +++ b/libstdc++-v3/testsuite/28_regex/basic_regex/ctors/char/cstring_awk.cc @@ -0,0 +1,37 @@ +// { dg-do compile } +// { dg-options "-std=c++0x" } + +// 2007-03-12 Stephen M. Webb +// +// Copyright (C) 2007, 2009 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 +// . + +// 7.8.2 basic_regex constructors + +#include + +void +test01() +{ + std::regex re("(a|b)*abb", std::regex::awk); +} + +int main() +{ + test01(); + return 0; +} diff --git a/libstdc++-v3/testsuite/28_regex/basic_regex/ctors/char/cstring_ecma.cc b/libstdc++-v3/testsuite/28_regex/basic_regex/ctors/char/cstring_ecma.cc new file mode 100644 index 000000000..6c72736c5 --- /dev/null +++ b/libstdc++-v3/testsuite/28_regex/basic_regex/ctors/char/cstring_ecma.cc @@ -0,0 +1,37 @@ +// { dg-do compile } +// { dg-options "-std=c++0x" } + +// 2007-03-12 Stephen M. Webb +// +// Copyright (C) 2007, 2009 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 +// . + +// 7.8.2 basic_regex constructors + +#include + +void +test01() +{ + std::regex re("(a|b)*abb"); +} + +int main() +{ + test01(); + return 0; +} diff --git a/libstdc++-v3/testsuite/28_regex/basic_regex/ctors/char/cstring_egrep.cc b/libstdc++-v3/testsuite/28_regex/basic_regex/ctors/char/cstring_egrep.cc new file mode 100644 index 000000000..f38a9b870 --- /dev/null +++ b/libstdc++-v3/testsuite/28_regex/basic_regex/ctors/char/cstring_egrep.cc @@ -0,0 +1,37 @@ +// { dg-do compile } +// { dg-options "-std=c++0x" } + +// 2007-03-12 Stephen M. Webb +// +// Copyright (C) 2007, 2009 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 +// . + +// 7.8.2 basic_regex constructors + +#include + +void +test01() +{ + std::regex re("(a|b)*abb", std::regex::egrep); +} + +int main() +{ + test01(); + return 0; +} diff --git a/libstdc++-v3/testsuite/28_regex/basic_regex/ctors/char/cstring_grep.cc b/libstdc++-v3/testsuite/28_regex/basic_regex/ctors/char/cstring_grep.cc new file mode 100644 index 000000000..458f6d21c --- /dev/null +++ b/libstdc++-v3/testsuite/28_regex/basic_regex/ctors/char/cstring_grep.cc @@ -0,0 +1,39 @@ +// { dg-do compile } +// { dg-options "-std=c++0x" } + +// 2007-03-12 Stephen M. Webb +// +// Copyright (C) 2007, 2009 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 +// . + +// 7.8.2 basic_regex constructors + +#include + +void +test01() +{ + using std::regex; + + regex re("(a|b)*abb", regex::grep); +} + +int main() +{ + test01(); + return 0; +} diff --git a/libstdc++-v3/testsuite/28_regex/basic_regex/ctors/char/default.cc b/libstdc++-v3/testsuite/28_regex/basic_regex/ctors/char/default.cc new file mode 100644 index 000000000..b7c6f410c --- /dev/null +++ b/libstdc++-v3/testsuite/28_regex/basic_regex/ctors/char/default.cc @@ -0,0 +1,47 @@ +// { dg-do compile } +// { dg-options "-std=gnu++0x" } + +// 2007-03-12 Stephen M. Webb +// +// Copyright (C) 2010 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 +// . + +// [28.8.2] class template basic_regex constructor + +#include +#include + +// Tests default constructor of the basic_regex class. +void test01() +{ + typedef std::basic_regex test_type; + + // default constructor + test_type re; + + // Check for required typedefs + typedef test_type::value_type value_type; + typedef test_type::flag_type flag_type; + typedef test_type::locale_type locale_type; +} + +int +main() +{ + test01(); + return 0; +}; diff --git a/libstdc++-v3/testsuite/28_regex/basic_regex/ctors/char/range.cc b/libstdc++-v3/testsuite/28_regex/basic_regex/ctors/char/range.cc new file mode 100644 index 000000000..027a92784 --- /dev/null +++ b/libstdc++-v3/testsuite/28_regex/basic_regex/ctors/char/range.cc @@ -0,0 +1,42 @@ +// { dg-do compile } +// { dg-options "-std=gnu++0x" } + +// 2007-03-12 Stephen M. Webb +// +// Copyright (C) 2010 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 +// . + +// [28.8.2] class template basic_regex constructor + +#include +#include + +// Tests range constructor of the basic_regex class. +void test01() +{ + typedef std::basic_regex test_type; + + char s[] = "a+b|c"; + test_type re(s, s + 5); +} + +int +main() +{ + test01(); + return 0; +}; diff --git a/libstdc++-v3/testsuite/28_regex/basic_regex/ctors/copy_char.cc b/libstdc++-v3/testsuite/28_regex/basic_regex/ctors/copy_char.cc new file mode 100644 index 000000000..4ed5f92c8 --- /dev/null +++ b/libstdc++-v3/testsuite/28_regex/basic_regex/ctors/copy_char.cc @@ -0,0 +1,45 @@ +// { dg-options "-std=c++0x" } + +// 2010-07-07 Stephen M. Webb +// +// Copyright (C) 2010 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 +// . + +// [28.8.2](11) class template basic_regex constructors + +#include +#include + +// Tests copy constructor of the basic_regex class. +void test01() +{ + typedef std::basic_regex test_type; + + test_type src_re("aaba"); + + test_type target_re(src_re); + + VERIFY( target_re.flags() == src_re.flags() ); + VERIFY( target_re.mark_count() == src_re.mark_count() ); +} + +int +main() +{ + test01(); + return 0; +}; diff --git a/libstdc++-v3/testsuite/28_regex/basic_regex/ctors/extended/cstring.cc b/libstdc++-v3/testsuite/28_regex/basic_regex/ctors/extended/cstring.cc new file mode 100644 index 000000000..691b8c7f5 --- /dev/null +++ b/libstdc++-v3/testsuite/28_regex/basic_regex/ctors/extended/cstring.cc @@ -0,0 +1,43 @@ +// { dg-do compile } +// { dg-options "-std=c++0x" } + +// 2007-03-12 Stephen M. Webb +// +// Copyright (C) 2007, 2009 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 +// . + +// 7.8.2 basic_regex constructors + +#include +#include + +void +test01() +{ + bool test __attribute__((unused)) = true; + + std::regex re("(wee|week)(knights|night)", std::regex::extended); + + VERIFY( re.flags() == std::regex::extended ); + VERIFY( re.mark_count() == 0 ); +} + +int main() +{ + test01(); + return 0; +} diff --git a/libstdc++-v3/testsuite/28_regex/basic_regex/ctors/extended/string_range_01_02_03.cc b/libstdc++-v3/testsuite/28_regex/basic_regex/ctors/extended/string_range_01_02_03.cc new file mode 100644 index 000000000..a6dddbaa1 --- /dev/null +++ b/libstdc++-v3/testsuite/28_regex/basic_regex/ctors/extended/string_range_01_02_03.cc @@ -0,0 +1,51 @@ +// { dg-options "-std=gnu++0x" } + +// +// 2010-06-16 Stephen M. Webb +// +// Copyright (C) 2010, 2011 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 +// . + +// 28.8.2 basic_regex ctor +// Tests for invalid range expression + +#include +#include + +void +test01() +{ + bool test __attribute__((unused)) = true; + + try + { + std::regex re("a{1,2,3}", std::regex::extended); + } + catch (std::regex_error& ex) + { + VERIFY( ex.code() == std::regex_constants::error_brace ); + } +} + + +int +main() +{ + test01(); + return 0; +} + diff --git a/libstdc++-v3/testsuite/28_regex/basic_regex/ctors/move_char.cc b/libstdc++-v3/testsuite/28_regex/basic_regex/ctors/move_char.cc new file mode 100644 index 000000000..ba056969c --- /dev/null +++ b/libstdc++-v3/testsuite/28_regex/basic_regex/ctors/move_char.cc @@ -0,0 +1,49 @@ +// { dg-options "-std=gnu++0x" } + +// 2010-07-07 Stephen M. Webb +// +// Copyright (C) 2010 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 +// . + +// [28.8.2](12-14) class template basic_regex constructors + +#include +#include +#include + +// Tests move constructor of the basic_regex class. +void test01() +{ + bool test __attribute__((unused)) = true; + typedef std::basic_regex test_type; + + test_type src_re("aaba"); + const unsigned mark_count = src_re.mark_count(); + const test_type::flag_type flags = src_re.flags(); + + test_type target_re = std::move(src_re); + + VERIFY( target_re.flags() == flags ); + VERIFY( target_re.mark_count() == mark_count ); +} + +int +main() +{ + test01(); + return 0; +}; diff --git a/libstdc++-v3/testsuite/28_regex/basic_regex/ctors/string_char.cc b/libstdc++-v3/testsuite/28_regex/basic_regex/ctors/string_char.cc new file mode 100644 index 000000000..f65d783a7 --- /dev/null +++ b/libstdc++-v3/testsuite/28_regex/basic_regex/ctors/string_char.cc @@ -0,0 +1,54 @@ +// { dg-do compile } +// { dg-options "-std=gnu++0x" } + +// 2007-03-12 Stephen M. Webb +// +// Copyright (C) 2010 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 +// . + +// [28.8.2] class template basic_regex constructor + +#include +#include +#include +#include + +// Tests C++ string constructor of the basic_regex class. +void test01() +{ + typedef std::basic_regex test_type; + + std::string s("a*b"); + test_type re(s); +} + +void test02() +{ + typedef std::basic_regex test_type; + typedef __gnu_test::tracker_allocator alloc_type; + + std::basic_string, alloc_type> s("a*b"); + test_type re(s); +} + +int +main() +{ + test01(); + test02(); + return 0; +}; diff --git a/libstdc++-v3/testsuite/28_regex/basic_regex/ctors/string_wchar_t.cc b/libstdc++-v3/testsuite/28_regex/basic_regex/ctors/string_wchar_t.cc new file mode 100644 index 000000000..b715195c3 --- /dev/null +++ b/libstdc++-v3/testsuite/28_regex/basic_regex/ctors/string_wchar_t.cc @@ -0,0 +1,56 @@ +// { dg-do compile } +// { dg-options "-std=gnu++0x" } + +// 2007-03-12 Stephen M. Webb +// +// Copyright (C) 2010 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 +// . + +// [28.8.2] class template basic_regex constructor + +#include +#include +#include +#include + +// Tests C++ string constructor of the basic_regex class. +void test01() +{ + bool test __attribute__((unused)) = true; + typedef std::basic_regex test_type; + + std::wstring s(L"a*b"); + test_type re(s); +} + +void test02() +{ + bool test __attribute__((unused)) = true; + typedef std::basic_regex test_type; + typedef __gnu_test::tracker_allocator alloc_type; + + std::basic_string, alloc_type> s(L"a*b"); + test_type re(s); +} + +int +main() +{ + test01(); + test02(); + return 0; +}; diff --git a/libstdc++-v3/testsuite/28_regex/basic_regex/ctors/wchar_t/cstring.cc b/libstdc++-v3/testsuite/28_regex/basic_regex/ctors/wchar_t/cstring.cc new file mode 100644 index 000000000..4dabf3996 --- /dev/null +++ b/libstdc++-v3/testsuite/28_regex/basic_regex/ctors/wchar_t/cstring.cc @@ -0,0 +1,43 @@ +// { dg-do compile } +// { dg-options "-std=gnu++0x" } + +// 2007-03-12 Stephen M. Webb +// +// Copyright (C) 2010 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 +// . + +// [28.8.2] class template basic_regex constructor + +#include +#include + +// Tests C-style null-terminated-string constructor of the basic_regex class. +void test01() +{ + bool test __attribute__((unused)) = true; + typedef std::basic_regex test_type; + + const wchar_t* cs = L"aab"; + test_type re(cs); +} + +int +main() +{ + test01(); + return 0; +}; diff --git a/libstdc++-v3/testsuite/28_regex/basic_regex/ctors/wchar_t/default.cc b/libstdc++-v3/testsuite/28_regex/basic_regex/ctors/wchar_t/default.cc new file mode 100644 index 000000000..a0f417402 --- /dev/null +++ b/libstdc++-v3/testsuite/28_regex/basic_regex/ctors/wchar_t/default.cc @@ -0,0 +1,48 @@ +// { dg-do compile } +// { dg-options "-std=gnu++0x" } + +// 2007-03-12 Stephen M. Webb +// +// Copyright (C) 2010 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 +// . + +// [28.8.2] class template basic_regex constructor + +#include +#include + +// Tests default constructor of the basic_regex class. +void test01() +{ + bool test __attribute__((unused)) = true; + typedef std::basic_regex test_type; + + // default constructor + test_type re; + + // Check for required typedefs + typedef test_type::value_type value_type; + typedef test_type::flag_type flag_type; + typedef test_type::locale_type locale_type; +} + +int +main() +{ + test01(); + return 0; +}; diff --git a/libstdc++-v3/testsuite/28_regex/basic_regex/ctors/wchar_t/range.cc b/libstdc++-v3/testsuite/28_regex/basic_regex/ctors/wchar_t/range.cc new file mode 100644 index 000000000..efc0597cc --- /dev/null +++ b/libstdc++-v3/testsuite/28_regex/basic_regex/ctors/wchar_t/range.cc @@ -0,0 +1,43 @@ +// { dg-do compile } +// { dg-options "-std=c++0x" } + +// 2007-03-12 Stephen M. Webb +// +// Copyright (C) 2010 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 +// . + +// [28.8.2] class template basic_regex constructor + +#include +#include + +// Tests range constructor of the basic_regex class. +void test01() +{ + bool test __attribute__((unused)) = true; + typedef std::basic_regex test_type; + + wchar_t s[] = L"a+b|c"; + test_type re(s, s + 5); +} + +int +main() +{ + test01(); + return 0; +}; diff --git a/libstdc++-v3/testsuite/28_regex/basic_regex/regex.cc b/libstdc++-v3/testsuite/28_regex/basic_regex/regex.cc new file mode 100644 index 000000000..8a803ede8 --- /dev/null +++ b/libstdc++-v3/testsuite/28_regex/basic_regex/regex.cc @@ -0,0 +1,37 @@ +// { dg-do compile } +// { dg-options "-std=c++0x" } + +// 2007-03-12 Stephen M. Webb +// +// Copyright (C) 2007, 2009, 2010 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 +// . + +// 7.4 typedef std::regex + +#include + +void +test01() +{ + std::regex re; +} + +int main() +{ + test01(); + return 0; +} diff --git a/libstdc++-v3/testsuite/28_regex/basic_regex/requirements/constexpr_data.cc b/libstdc++-v3/testsuite/28_regex/basic_regex/requirements/constexpr_data.cc new file mode 100644 index 000000000..5e6cc2e9f --- /dev/null +++ b/libstdc++-v3/testsuite/28_regex/basic_regex/requirements/constexpr_data.cc @@ -0,0 +1,73 @@ +// { dg-do compile } +// { dg-options "-std=gnu++0x" } + +// Copyright (C) 2010, 2011 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 +// . + +#include +#include + +namespace __gnu_test +{ + struct constexpr_member_data + { + template + void + operator()() + { + struct _Concept + { + void __constraint() + { + constexpr auto v1 __attribute__((unused)) + = _Ttesttype::icase; + constexpr auto v2 __attribute__((unused)) + = _Ttesttype::nosubs; + constexpr auto v3 __attribute__((unused)) + = _Ttesttype::optimize; + constexpr auto v4 __attribute__((unused)) + = _Ttesttype::collate; + constexpr auto v5 __attribute__((unused)) + = _Ttesttype::ECMAScript; + constexpr auto v6 __attribute__((unused)) + = _Ttesttype::basic; + constexpr auto v7 __attribute__((unused)) + = _Ttesttype::extended; + constexpr auto v8 __attribute__((unused)) + = _Ttesttype::awk; + constexpr auto v9 __attribute__((unused)) + = _Ttesttype::grep; + constexpr auto v10 __attribute__((unused)) + = _Ttesttype::egrep; + } + }; + + _Concept c; + c.__constraint(); + } + }; +} + +int main() +{ + __gnu_test::constexpr_member_data test; + test.operator()(); +#ifdef _GLIBCXX_USE_WCHAR_T + test.operator()(); +#endif + return 0; +} diff --git a/libstdc++-v3/testsuite/28_regex/constants/error_type.cc b/libstdc++-v3/testsuite/28_regex/constants/error_type.cc new file mode 100644 index 000000000..1841a4626 --- /dev/null +++ b/libstdc++-v3/testsuite/28_regex/constants/error_type.cc @@ -0,0 +1,54 @@ +// { dg-options "-std=c++0x" } +// { dg-do compile } +// +// 2009-06-17 Stephen M. Webb +// +// Copyright (C) 2009 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 +// . + +// 28.5.3 + +#include +#include + +void +test01() +{ + bool test __attribute__((unused)) = true; + + std::regex_constants::error_type err __attribute__((unused)); + + err = std::regex_constants::error_collate; + err = std::regex_constants::error_ctype; + err = std::regex_constants::error_escape; + err = std::regex_constants::error_backref; + err = std::regex_constants::error_brack; + err = std::regex_constants::error_paren; + err = std::regex_constants::error_brace; + err = std::regex_constants::error_badbrace; + err = std::regex_constants::error_range; + err = std::regex_constants::error_space; + err = std::regex_constants::error_badrepeat; + err = std::regex_constants::error_complexity; + err = std::regex_constants::error_stack; +} + +int main() +{ + test01(); + return 0; +} diff --git a/libstdc++-v3/testsuite/28_regex/constants/match_flag_type.cc b/libstdc++-v3/testsuite/28_regex/constants/match_flag_type.cc new file mode 100644 index 000000000..10635ff5f --- /dev/null +++ b/libstdc++-v3/testsuite/28_regex/constants/match_flag_type.cc @@ -0,0 +1,53 @@ +// { dg-options "-std=c++0x" } +// { dg-do compile } +// +// 2009-06-17 Stephen M. Webb +// +// Copyright (C) 2009 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 +// . + +// 28.5.1 + +#include +#include + +void +test01() +{ + bool test __attribute__((unused)) = true; + + std::regex_constants::match_flag_type flag = std::regex_constants::match_default; + + flag |= std::regex_constants::match_not_bol; + flag |= std::regex_constants::match_not_eol; + flag |= std::regex_constants::match_not_bow; + flag |= std::regex_constants::match_not_eow; + flag |= std::regex_constants::match_any; + flag |= std::regex_constants::match_not_null; + flag |= std::regex_constants::match_continuous; + flag |= std::regex_constants::match_prev_avail; + flag |= std::regex_constants::format_default; + flag |= std::regex_constants::format_sed; + flag |= std::regex_constants::format_no_copy; + flag |= std::regex_constants::format_first_only; +} + +int main() +{ + test01(); + return 0; +} diff --git a/libstdc++-v3/testsuite/28_regex/constants/syntax_option_type.cc b/libstdc++-v3/testsuite/28_regex/constants/syntax_option_type.cc new file mode 100644 index 000000000..1f9876cac --- /dev/null +++ b/libstdc++-v3/testsuite/28_regex/constants/syntax_option_type.cc @@ -0,0 +1,91 @@ +// { dg-options "-std=c++0x" } +// { dg-do compile } +// +// 2009-06-17 Stephen M. Webb +// +// Copyright (C) 2009 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 +// . + +// 28.5.1 + +#include + +void +test01() +{ + std::regex_constants::syntax_option_type option { }; + option = option | std::regex_constants::icase; + option = option | std::regex_constants::nosubs; + option = option | std::regex_constants::optimize; + option = option | std::regex_constants::collate; + option = option | std::regex_constants::ECMAScript; + option = option | std::regex_constants::basic; + option = option | std::regex_constants::extended; + option = option | std::regex_constants::awk; + option = option | std::regex_constants::grep; + option = option | std::regex_constants::egrep; +} + +void +test02() +{ + std::regex_constants::syntax_option_type option { }; + option = option & std::regex_constants::icase; + option = option & std::regex_constants::nosubs; + option = option & std::regex_constants::optimize; + option = option & std::regex_constants::collate; + option = option & std::regex_constants::ECMAScript; + option = option & std::regex_constants::basic; + option = option & std::regex_constants::extended; + option = option & std::regex_constants::awk; + option = option & std::regex_constants::grep; + option = option & std::regex_constants::egrep; +} + +void +test03() +{ + std::regex_constants::syntax_option_type option { }; + option = ~std::regex_constants::icase; + option = ~std::regex_constants::nosubs; + option = ~std::regex_constants::optimize; + option = ~std::regex_constants::collate; + option = ~std::regex_constants::ECMAScript; + option = ~std::regex_constants::basic; + option = ~std::regex_constants::extended; + option = ~std::regex_constants::awk; + option = ~std::regex_constants::grep; + option = ~std::regex_constants::egrep; + option = option; +} + +void +test04_constexpr() +{ + using namespace std::regex_constants; + constexpr auto a1 __attribute__((unused)) = icase | awk; + constexpr auto a2 __attribute__((unused)) = icase & awk; + constexpr auto a3 __attribute__((unused)) = ~grep; +} + +int main() +{ + test01(); + test02(); + test03(); + return 0; +} diff --git a/libstdc++-v3/testsuite/28_regex/headers/04_header/regex/std_c++0x_neg.cc b/libstdc++-v3/testsuite/28_regex/headers/04_header/regex/std_c++0x_neg.cc new file mode 100644 index 000000000..e8ddb77bb --- /dev/null +++ b/libstdc++-v3/testsuite/28_regex/headers/04_header/regex/std_c++0x_neg.cc @@ -0,0 +1,23 @@ +// { dg-do compile } +// { dg-options "-std=gnu++98" } + +// Copyright (C) 2007, 2009, 2010 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 +// . + +#include // { dg-excess-errors "In file included from" } + + diff --git a/libstdc++-v3/testsuite/28_regex/headers/regex/std_c++0x_neg.cc b/libstdc++-v3/testsuite/28_regex/headers/regex/std_c++0x_neg.cc new file mode 100644 index 000000000..21a98b8ae --- /dev/null +++ b/libstdc++-v3/testsuite/28_regex/headers/regex/std_c++0x_neg.cc @@ -0,0 +1,26 @@ +// { dg-do compile } +// { dg-options "-std=gnu++98" } + +// Copyright (C) 2007, 2009 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 +// . + +#include + +// { dg-error "upcoming ISO" "" { target *-*-* } 32 } + + + diff --git a/libstdc++-v3/testsuite/28_regex/init-list.cc b/libstdc++-v3/testsuite/28_regex/init-list.cc new file mode 100644 index 000000000..2a3aeaa31 --- /dev/null +++ b/libstdc++-v3/testsuite/28_regex/init-list.cc @@ -0,0 +1,48 @@ +// { dg-options "-std=gnu++0x" } +// { dg-do compile } + +// Copyright (C) 2008, 2009 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 +// . +// + +#include +#include + +using namespace std; + +int test01(void) +{ + bool test = true; + + regex r = { 'a', 'b', 'c' }; + cmatch res; + VERIFY(regex_match ("abc", res, r)); + VERIFY(!regex_match ("ab", res, r)); + + r = { 'd', 'e', 'f' }; + VERIFY(regex_match ("def", res, r)); + VERIFY(!regex_match ("abc", res, r)); + + return test; +} + +int main() +{ + __gnu_test::set_memory_limits(); + test01(); + return 0; +} diff --git a/libstdc++-v3/testsuite/28_regex/iterators/regex_iterator/ctors/char/default.cc b/libstdc++-v3/testsuite/28_regex/iterators/regex_iterator/ctors/char/default.cc new file mode 100644 index 000000000..2de4a0d09 --- /dev/null +++ b/libstdc++-v3/testsuite/28_regex/iterators/regex_iterator/ctors/char/default.cc @@ -0,0 +1,35 @@ +// { dg-do compile } +// { dg-options "-std=c++0x" } + +// +// 2010-06-10 Stephen M. Webb +// +// Copyright (C) 2010 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 +// . + +// 28.12.1 Class template regex_iterator + +#include + +void +test01() +{ + bool test __attribute__((unused)) = true; + std::regex_iterator it; + std::cregex_iterator cit; + std::sregex_iterator sit; +} diff --git a/libstdc++-v3/testsuite/28_regex/iterators/regex_iterator/ctors/wchar_t/default.cc b/libstdc++-v3/testsuite/28_regex/iterators/regex_iterator/ctors/wchar_t/default.cc new file mode 100644 index 000000000..33fb5baa8 --- /dev/null +++ b/libstdc++-v3/testsuite/28_regex/iterators/regex_iterator/ctors/wchar_t/default.cc @@ -0,0 +1,35 @@ +// { dg-do compile } +// { dg-options "-std=c++0x" } + +// +// 2010-06-10 Stephen M. Webb +// +// Copyright (C) 2010 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 +// . + +// 28.12.1 Class template regex_iterator + +#include + +void +test01() +{ + bool test __attribute__((unused)) = true; + std::regex_iterator it; + std::wcregex_iterator cit; + std::wsregex_iterator sit; +} diff --git a/libstdc++-v3/testsuite/28_regex/iterators/regex_iterator/typedefs.cc b/libstdc++-v3/testsuite/28_regex/iterators/regex_iterator/typedefs.cc new file mode 100644 index 000000000..8ad889950 --- /dev/null +++ b/libstdc++-v3/testsuite/28_regex/iterators/regex_iterator/typedefs.cc @@ -0,0 +1,40 @@ +// { dg-do compile } +// { dg-options "-std=c++0x" } + +// +// 2010-06-10 Stephen M. Webb +// +// Copyright (C) 2010 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 +// . + +// 28.12.1 Class template regex_iterator + +#include + +void +test01() +{ + bool test __attribute__((unused)) = true; + typedef std::regex_iterator it; + + typedef it::regex_type regex_type; + typedef it::value_type value_type; + typedef it::difference_type difference_type; + typedef it::pointer pointer; + typedef it::reference reference; + typedef it::iterator_category iterator_category; +} diff --git a/libstdc++-v3/testsuite/28_regex/iterators/regex_token_iterator/ctors/char/default.cc b/libstdc++-v3/testsuite/28_regex/iterators/regex_token_iterator/ctors/char/default.cc new file mode 100644 index 000000000..5105c7d87 --- /dev/null +++ b/libstdc++-v3/testsuite/28_regex/iterators/regex_token_iterator/ctors/char/default.cc @@ -0,0 +1,35 @@ +// { dg-do compile } +// { dg-options "-std=c++0x" } + +// +// 2010-06-10 Stephen M. Webb +// +// Copyright (C) 2010 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 +// . + +// 28.12.2 Class template regex_token_iterator + +#include + +void +test01() +{ + bool test __attribute__((unused)) = true; + std::regex_token_iterator it; + std::cregex_token_iterator cit; + std::sregex_token_iterator sit; +} diff --git a/libstdc++-v3/testsuite/28_regex/iterators/regex_token_iterator/ctors/wchar_t/default.cc b/libstdc++-v3/testsuite/28_regex/iterators/regex_token_iterator/ctors/wchar_t/default.cc new file mode 100644 index 000000000..fe918c80d --- /dev/null +++ b/libstdc++-v3/testsuite/28_regex/iterators/regex_token_iterator/ctors/wchar_t/default.cc @@ -0,0 +1,35 @@ +// { dg-do compile } +// { dg-options "-std=gnu++0x" } + +// +// 2010-06-10 Stephen M. Webb +// +// Copyright (C) 2010 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 +// . + +// 28.12.2 Class template regex_token_iterator + +#include + +void +test01() +{ + bool test __attribute__((unused)) = true; + std::regex_token_iterator it; + std::wcregex_token_iterator cit; + std::wsregex_token_iterator sit; +} diff --git a/libstdc++-v3/testsuite/28_regex/iterators/regex_token_iterator/typedefs.cc b/libstdc++-v3/testsuite/28_regex/iterators/regex_token_iterator/typedefs.cc new file mode 100644 index 000000000..d765ab2f4 --- /dev/null +++ b/libstdc++-v3/testsuite/28_regex/iterators/regex_token_iterator/typedefs.cc @@ -0,0 +1,40 @@ +// { dg-do compile } +// { dg-options "-std=c++0x" } + +// +// 2010-06-10 Stephen M. Webb +// +// Copyright (C) 2010 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 +// . + +// 28.12.2 Class template regex_token_iterator + +#include + +void +test01() +{ + bool test __attribute__((unused)) = true; + typedef std::regex_token_iterator it; + + typedef it::regex_type regex_type; + typedef it::value_type value_type; + typedef it::difference_type difference_type; + typedef it::pointer pointer; + typedef it::reference reference; + typedef it::iterator_category iterator_category; +} diff --git a/libstdc++-v3/testsuite/28_regex/match_results/ctors/char/default.cc b/libstdc++-v3/testsuite/28_regex/match_results/ctors/char/default.cc new file mode 100644 index 000000000..4c897d7a4 --- /dev/null +++ b/libstdc++-v3/testsuite/28_regex/match_results/ctors/char/default.cc @@ -0,0 +1,52 @@ +// { dg-options "-std=c++0x" } + +// 2009-06-10 Stephen M. Webb +// +// Copyright (C) 2009 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 +// . + +// C++0X [28.10.1] class template match_results constructor + +#include +#include + +// Tests default constructor of the match_result class. +void test01() +{ + bool test __attribute__((unused)) = true; + + std::cmatch cm; + VERIFY( cm.size() == 0 ); + VERIFY( cm.str() == std::cmatch::string_type() ); +} + +void test02() +{ + bool test __attribute__((unused)) = true; + + std::smatch sm; + VERIFY( sm.size() == 0 ); + VERIFY( sm.str() == std::smatch::string_type() ); +} + +int +main() +{ + test01(); + test02(); + return 0; +}; diff --git a/libstdc++-v3/testsuite/28_regex/match_results/ctors/wchar_t/default.cc b/libstdc++-v3/testsuite/28_regex/match_results/ctors/wchar_t/default.cc new file mode 100644 index 000000000..f8b3d45e8 --- /dev/null +++ b/libstdc++-v3/testsuite/28_regex/match_results/ctors/wchar_t/default.cc @@ -0,0 +1,52 @@ +// { dg-options "-std=c++0x" } + +// 2009-06-05 Stephen M. Webb +// +// Copyright (C) 2009 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 +// . + +// C++0X [28.10.1] class template match_results constructor + +#include +#include + +// Tests default constructor of the match_result class. +void test01() +{ + bool test __attribute__((unused)) = true; + + std::wcmatch cm; + VERIFY( cm.size() == 0 ); + VERIFY( cm.str() == std::wcmatch::string_type() ); +} + +void test02() +{ + bool test __attribute__((unused)) = true; + + std::wsmatch sm; + VERIFY( sm.size() == 0 ); + VERIFY( sm.str() == std::wsmatch::string_type() ); +} + +int +main() +{ + test01(); + test02(); + return 0; +}; diff --git a/libstdc++-v3/testsuite/28_regex/match_results/typedefs.cc b/libstdc++-v3/testsuite/28_regex/match_results/typedefs.cc new file mode 100644 index 000000000..02bdcdadb --- /dev/null +++ b/libstdc++-v3/testsuite/28_regex/match_results/typedefs.cc @@ -0,0 +1,44 @@ +// { dg-do compile } +// { dg-options "-std=c++0x" } + +// +// 2010-06-10 Stephen M. Webb +// +// Copyright (C) 2010 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 +// . + +// 28.10 Class template sub_match + +#include + +void +test01() +{ + bool test __attribute__((unused)) = true; + typedef std::match_results mr; + + typedef mr::value_type value_type; + typedef mr::const_reference const_reference; + typedef mr::reference reference; + typedef mr::const_iterator const_iterator; + typedef mr::iterator iterator; + typedef mr::difference_type difference_type; + typedef mr::size_type size_type; + typedef mr::allocator_type allocator_type; + typedef mr::char_type char_type; + typedef mr::string_type string_type; +} diff --git a/libstdc++-v3/testsuite/28_regex/range_access.cc b/libstdc++-v3/testsuite/28_regex/range_access.cc new file mode 100644 index 000000000..b913bc47c --- /dev/null +++ b/libstdc++-v3/testsuite/28_regex/range_access.cc @@ -0,0 +1,31 @@ +// { dg-do compile } +// { dg-options "-std=gnu++0x" } + +// Copyright (C) 2010 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 +// . + +// 24.6.5, range access [iterator.range] + +#include + +void +test01() +{ + std::smatch sm; + std::begin(sm); + std::end(sm); +} diff --git a/libstdc++-v3/testsuite/28_regex/regex_error/regex_error.cc b/libstdc++-v3/testsuite/28_regex/regex_error/regex_error.cc new file mode 100644 index 000000000..04fd71242 --- /dev/null +++ b/libstdc++-v3/testsuite/28_regex/regex_error/regex_error.cc @@ -0,0 +1,49 @@ +// { dg-options "-std=c++0x" } +// { dg-do compile } +// +// 2009-06-17 Stephen M. Webb +// +// Copyright (C) 2009 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 +// . + +// 28.6 [re.badexp] + +#include +#include + +void +test01() +{ + bool test __attribute__((unused)) = true; + + std::regex_error error(std::regex_constants::error_collate); + VERIFY(error.code() == std::regex_constants::error_collate); + + try + { + throw error; + } + catch (std::runtime_error& ex) + { + } +} + +int main() +{ + test01(); + return 0; +} diff --git a/libstdc++-v3/testsuite/28_regex/requirements/typedefs.cc b/libstdc++-v3/testsuite/28_regex/requirements/typedefs.cc new file mode 100644 index 000000000..072d5d07f --- /dev/null +++ b/libstdc++-v3/testsuite/28_regex/requirements/typedefs.cc @@ -0,0 +1,38 @@ +// { dg-do compile } +// { dg-options "-std=c++0x" } + +// +// 2010-02-17 Stephen M. Webb +// +// Copyright (C) 2010 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 +// . + +// 28.3 Requirements [re.req] +// 28.2 (4) Table 127 - Regular expression traits class requirements + +#include + +void +test01() +{ + typedef std::regex_traits traits; + + typedef traits::char_type char_type; + typedef traits::string_type string_type; + typedef traits::locale_type locale_type; + typedef traits::char_class_type char_class_type; +} diff --git a/libstdc++-v3/testsuite/28_regex/sub_match/cast_char.cc b/libstdc++-v3/testsuite/28_regex/sub_match/cast_char.cc new file mode 100644 index 000000000..6beb9c5cd --- /dev/null +++ b/libstdc++-v3/testsuite/28_regex/sub_match/cast_char.cc @@ -0,0 +1,49 @@ +// { dg-do compile } +// { dg-options "-std=c++0x" } + +// +// 2010-06-09 Stephen M. Webb +// +// Copyright (C) 2010 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 +// . + +// 28.9.1 [re.submatch.members] sub_match members + +#include +#include +#include + + +void +test01() +{ + bool test __attribute__((unused)) = true; + + typedef char value_type; + typedef std::basic_string string_type; + typedef std::sub_match sub_match_type; + value_type test_data[] = "cabbage"; + + sub_match_type sm; + sm.first = test_data + 0; + sm.second = test_data + sizeof(test_data)/sizeof(value_type); + sm.matched = true; + + string_type sm_string = sm; + + VERIFY( sm_string == string_type(test_data) ); +} diff --git a/libstdc++-v3/testsuite/28_regex/sub_match/cast_wchar_t.cc b/libstdc++-v3/testsuite/28_regex/sub_match/cast_wchar_t.cc new file mode 100644 index 000000000..6e29ac88c --- /dev/null +++ b/libstdc++-v3/testsuite/28_regex/sub_match/cast_wchar_t.cc @@ -0,0 +1,49 @@ +// { dg-do compile } +// { dg-options "-std=c++0x" } + +// +// 2010-06-09 Stephen M. Webb +// +// Copyright (C) 2010 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 +// . + +// 28.9.1 [re.submatch.members] sub_match members + +#include +#include +#include + + +void +test01() +{ + bool test __attribute__((unused)) = true; + + typedef wchar_t value_type; + typedef std::basic_string string_type; + typedef std::sub_match sub_match_type; + value_type test_data[] = L"cabbage"; + + sub_match_type sm; + sm.first = test_data + 0; + sm.second = test_data + sizeof(test_data)/sizeof(value_type); + sm.matched = true; + + string_type sm_string = sm; + + VERIFY( sm_string == string_type(test_data) ); +} diff --git a/libstdc++-v3/testsuite/28_regex/sub_match/length.cc b/libstdc++-v3/testsuite/28_regex/sub_match/length.cc new file mode 100644 index 000000000..fc12b920a --- /dev/null +++ b/libstdc++-v3/testsuite/28_regex/sub_match/length.cc @@ -0,0 +1,49 @@ +// { dg-do compile } +// { dg-options "-std=c++0x" } + +// +// 2010-06-09 Stephen M. Webb +// +// Copyright (C) 2010 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 +// . + +// 28.9.1 [re.submatch.members] sub_match members + +#include +#include + + +void +test01() +{ + bool test __attribute__((unused)) = true; + + typedef std::sub_match sm_t; + const char* test_data = "cabbage"; + sm_t::difference_type test_len = 3; + + sm_t sm1; + sm1.first = test_data + 0; + sm1.second = test_data + test_len; + sm1.matched = true; + + sm_t sm2; + sm2.matched = false; + + VERIFY( sm1.length() == test_len ); + VERIFY( sm2.length() == 0 ); +} diff --git a/libstdc++-v3/testsuite/28_regex/sub_match/typedefs.cc b/libstdc++-v3/testsuite/28_regex/sub_match/typedefs.cc new file mode 100644 index 000000000..c150da02d --- /dev/null +++ b/libstdc++-v3/testsuite/28_regex/sub_match/typedefs.cc @@ -0,0 +1,38 @@ +// { dg-do compile } +// { dg-options "-std=c++0x" } + +// +// 2010-06-07 Stephen M. Webb +// +// Copyright (C) 2010 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 +// . + +// 28.9 Class template sub_match + +#include + + +void +test01() +{ + typedef std::sub_match sm; + + typedef sm::value_type value_type; + typedef sm::difference_type difference_type; + typedef sm::iterator iterator; + typedef sm::string_type string_type; +} diff --git a/libstdc++-v3/testsuite/28_regex/traits/char/ctor.cc b/libstdc++-v3/testsuite/28_regex/traits/char/ctor.cc new file mode 100644 index 000000000..6f5a2f3ab --- /dev/null +++ b/libstdc++-v3/testsuite/28_regex/traits/char/ctor.cc @@ -0,0 +1,50 @@ +// { dg-do link } +// { dg-options "-std=gnu++0x" } + +// 2007-03-12 Stephen M. Webb +// +// Copyright (C) 2010 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 +// . + +// [28.7] class template regex_traits + +#include +#include + +// Tests default constructor of the regex_traits class. There is only the +// default constructor. +void test01() +{ + bool test __attribute__((unused)) = true; + typedef std::regex_traits test_type; + + // required default constructor + test_type t; + + // Check for required typedefs + typedef test_type::char_type char_type; + typedef test_type::string_type string_type; + typedef test_type::locale_type locale_type; + typedef test_type::char_class_type char_class_type; +} + +int +main() +{ + test01(); + return 0; +}; diff --git a/libstdc++-v3/testsuite/28_regex/traits/char/isctype.cc b/libstdc++-v3/testsuite/28_regex/traits/char/isctype.cc new file mode 100644 index 000000000..cb8664ca8 --- /dev/null +++ b/libstdc++-v3/testsuite/28_regex/traits/char/isctype.cc @@ -0,0 +1,48 @@ +// { dg-do run { xfail *-*-* } } +// { dg-options "-std=c++0x" } + +// +// 2010-06-23 Stephen M. Webb +// +// Copyright (C) 2010 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 +// . + +// 28.3 Requirements [re.req] +// 28.2(4) Table 127 - Regular expression traits class requirements +// 28.7(11) Class template regex_traits [re.traits] + +#include +#include + +void +test01() +{ + bool test __attribute__((unused)) = true; + typedef char CharT; + typedef std::regex_traits traits; + + char name[] = "lower"; + traits t; + + VERIFY( t.isctype('e', t.lookup_classname(name, name+sizeof(name)-1)) ); +} + +int main() +{ + test01(); + return 0; +} diff --git a/libstdc++-v3/testsuite/28_regex/traits/char/length.cc b/libstdc++-v3/testsuite/28_regex/traits/char/length.cc new file mode 100644 index 000000000..55406dd0d --- /dev/null +++ b/libstdc++-v3/testsuite/28_regex/traits/char/length.cc @@ -0,0 +1,49 @@ +// { dg-do run } +// { dg-options "-std=c++0x" } + +// +// 2010-02-17 Stephen M. Webb +// +// Copyright (C) 2010 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 +// . + +// 28.3 Requirements [re.req] +// 28.2 (4) Table 127 - Regular expression traits class requirements +// 28.7 Class template regex_traits [re.traits] +// 28.7 (3) static std::size_t length(const char_type* p); + +#include +#include + +void +test01() +{ + typedef char CharT; + typedef std::regex_traits traits; + bool test __attribute__((unused)) = true; + const CharT* p = ""; + + std::size_t i = traits::length(p); + + VERIFY( i == 0 ); +} + +int main() +{ + test01(); + return 0; +} diff --git a/libstdc++-v3/testsuite/28_regex/traits/char/lookup_classname.cc b/libstdc++-v3/testsuite/28_regex/traits/char/lookup_classname.cc new file mode 100644 index 000000000..49ffb511a --- /dev/null +++ b/libstdc++-v3/testsuite/28_regex/traits/char/lookup_classname.cc @@ -0,0 +1,54 @@ +// { dg-do run { xfail *-*-* } } +// { dg-options "-std=c++0x" } + +// +// 2010-06-23 Stephen M. Webb +// +// Copyright (C) 2010 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 +// . + +// 28.3 Requirements [re.req] +// 28.2(4) Table 127 - Regular expression traits class requirements +// 28.7(9) Class template regex_traits [re.traits] + +#include +#include + +void +test01() +{ + bool test __attribute__((unused)) = true; + typedef char CharT; + typedef std::regex_traits traits; + + char n1[] = "lower"; + char n2[] = "alpha"; + traits t; + + traits::char_class_type c1 = t.lookup_classname(n1, n1+sizeof(n1)-1); + VERIFY( c1 != 0 ); + + traits::char_class_type c2 = t.lookup_classname(n1, n1+sizeof(n1)-1, true); + traits::char_class_type c3 = t.lookup_classname(n2, n2+sizeof(n2)-1, true); + VERIFY( c2 == c3 ); +} + +int main() +{ + test01(); + return 0; +} diff --git a/libstdc++-v3/testsuite/28_regex/traits/char/lookup_collatename.cc b/libstdc++-v3/testsuite/28_regex/traits/char/lookup_collatename.cc new file mode 100644 index 000000000..58eb5878d --- /dev/null +++ b/libstdc++-v3/testsuite/28_regex/traits/char/lookup_collatename.cc @@ -0,0 +1,50 @@ +// { dg-do run { xfail *-*-* } } +// { dg-options "-std=c++0x" } + +// +// 2010-06-23 Stephen M. Webb +// +// Copyright (C) 2010 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 +// . + +// 28.3 Requirements [re.req] +// 28.2 (4) Table 127 - Regular expression traits class requirements +// 28.7 (8) Class template regex_traits [re.traits] + +#include +#include + +void +test01() +{ + bool test __attribute__((unused)) = true; + typedef char CharT; + typedef std::regex_traits traits; + + char name[] = "ll"; + traits t; + + traits::string_type sname = t.lookup_collatename(name, name+sizeof(name)-1); + + VERIFY( !sname.empty() ); +} + +int main() +{ + test01(); + return 0; +} diff --git a/libstdc++-v3/testsuite/28_regex/traits/char/transform.cc b/libstdc++-v3/testsuite/28_regex/traits/char/transform.cc new file mode 100644 index 000000000..1481dcfbb --- /dev/null +++ b/libstdc++-v3/testsuite/28_regex/traits/char/transform.cc @@ -0,0 +1,51 @@ +// { dg-do run } +// { dg-options "-std=c++0x" } + +// +// 2010-02-17 Stephen M. Webb +// +// Copyright (C) 2010 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 +// . + +// 28.3 Requirements [re.req] +// 28.2 (4) Table 127 - Regular expression traits class requirements +// 28.7 Class template regex_traits [re.traits] + +#include +#include +#include + +void +test01() +{ + bool test __attribute__((unused)) = true; + typedef char CharT; + typedef std::regex_traits traits; + + traits t; + traits::string_type G = "abc"; + traits::string_type H = "def"; + + VERIFY( G < H ); + VERIFY( t.transform(G.begin(), G.end()) < t.transform(H.begin(), H.end()) ); +} + +int main() +{ + test01(); + return 0; +} diff --git a/libstdc++-v3/testsuite/28_regex/traits/char/transform_primary.cc b/libstdc++-v3/testsuite/28_regex/traits/char/transform_primary.cc new file mode 100644 index 000000000..7de8904b4 --- /dev/null +++ b/libstdc++-v3/testsuite/28_regex/traits/char/transform_primary.cc @@ -0,0 +1,55 @@ +// { dg-options "-std=c++0x" } +// { dg-do run { xfail *-*-* } } + +// +// 2010-02-17 Stephen M. Webb +// +// Copyright (C) 2010 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 +// . + +// 28.3 Requirements [re.req] +// 28.2 (4) Table 127 - Regular expression traits class requirements +// 28.7 Class template regex_traits [re.traits] + +#include +#include +#include + +void +test01() +{ + bool test __attribute__((unused)) = true; + typedef char CharT; + typedef std::regex_traits traits; + + traits t; + traits::string_type G = "abc"; + traits::string_type H = "def"; + traits::string_type J = "ABC"; + + VERIFY( G < H ); + VERIFY( t.transform_primary(G.begin(), G.end()) < t.transform_primary(H.begin(), H.end()) ); + + VERIFY( G == H ); + VERIFY( t.transform_primary(G.begin(), G.end()) == t.transform_primary(J.begin(), J.end()) ); +} + +int main() +{ + test01(); + return 0; +} diff --git a/libstdc++-v3/testsuite/28_regex/traits/char/translate.cc b/libstdc++-v3/testsuite/28_regex/traits/char/translate.cc new file mode 100644 index 000000000..2dbbba396 --- /dev/null +++ b/libstdc++-v3/testsuite/28_regex/traits/char/translate.cc @@ -0,0 +1,49 @@ +// { dg_do run } +// { dg-options "-std=c++0x" } + +// +// 2010-02-17 Stephen M. Webb +// +// Copyright (C) 2010 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 +// . + +// 28.3 Requirements [re.req] +// 28.2 (4) Table 127 - Regular expression traits class requirements +// 28.7 Class template regex_traits [re.traits] +// 28.7 (3) static std::size_t length(const char_type* p); + +#include +#include + +void +test01() +{ + bool test __attribute__((unused)) = true; + typedef char CharT; + + std::regex_traits t; + CharT c = 'a'; + CharT d = 'a'; + + VERIFY( t.translate(c) == t.translate(d) ); +} + +int main() +{ + test01(); + return 0; +} diff --git a/libstdc++-v3/testsuite/28_regex/traits/char/translate_nocase.cc b/libstdc++-v3/testsuite/28_regex/traits/char/translate_nocase.cc new file mode 100644 index 000000000..4c963ddd3 --- /dev/null +++ b/libstdc++-v3/testsuite/28_regex/traits/char/translate_nocase.cc @@ -0,0 +1,46 @@ +// { dg-do run } +// { dg-options "-std=gnu++0x" } + +// 2007-03-12 Stephen M. Webb +// +// Copyright (C) 2010 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 +// . + +// [28.7] class template regex_traits (5) translate_nocase + +#include +#include + +// Verifies the workings of the regex_traits translate_nocase function. +void test01() +{ + bool test __attribute__((unused)) = true; + typedef char CharT; + + std::regex_traits t; + CharT c = 'a'; + CharT C = 'A'; + + VERIFY( t.translate_nocase(c) == t.translate_nocase(C) ); +} + +int +main() +{ + test01(); + return 0; +}; diff --git a/libstdc++-v3/testsuite/28_regex/traits/char/value.cc b/libstdc++-v3/testsuite/28_regex/traits/char/value.cc new file mode 100644 index 000000000..f0535acb2 --- /dev/null +++ b/libstdc++-v3/testsuite/28_regex/traits/char/value.cc @@ -0,0 +1,49 @@ +// { dg-do run } +// { dg-options "-std=gnu++0x" } + +// 2008-08-11 Stephen M. Webb +// +// Copyright (C) 2010 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 +// . + +// [28.7] class template regex_traits value() function + +#include +#include + +// Tests the value() function of the regex_traits class. +void test01() +{ + bool test __attribute__((unused)) = true; + std::regex_traits t; + VERIFY( t.value('7', 8) == 7 ); + VERIFY( t.value('7', 10) == 7 ); + VERIFY( t.value('7', 16) == 7 ); + VERIFY( t.value('9', 8) == -1 ); + VERIFY( t.value('9', 10) == 9 ); + VERIFY( t.value('9', 16) == 9 ); + VERIFY( t.value('d', 8) == -1 ); + VERIFY( t.value('d', 10) == -1 ); + VERIFY( t.value('d', 16) == 13 ); +} + +int +main() +{ + test01(); + return 0; +}; diff --git a/libstdc++-v3/testsuite/28_regex/traits/wchar_t/ctor.cc b/libstdc++-v3/testsuite/28_regex/traits/wchar_t/ctor.cc new file mode 100644 index 000000000..39caf432d --- /dev/null +++ b/libstdc++-v3/testsuite/28_regex/traits/wchar_t/ctor.cc @@ -0,0 +1,49 @@ +// { dg-do link } +// { dg-options "-std=gnu++0x" } + +// 2007-03-12 Stephen M. Webb +// +// Copyright (C) 2010 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 +// . + +// [28.7] class template regex_traits + +#include +#include + +// Tests default constructor of the regex_traits class. There is only the +// default constructor. +void test01() +{ + typedef std::regex_traits test_type; + + // required default constructor + test_type t; + + // Check for required typedefs + typedef test_type::char_type char_type; + typedef test_type::string_type string_type; + typedef test_type::locale_type locale_type; + typedef test_type::char_class_type char_class_type; +} + +int +main() +{ + test01(); + return 0; +}; diff --git a/libstdc++-v3/testsuite/28_regex/traits/wchar_t/length.cc b/libstdc++-v3/testsuite/28_regex/traits/wchar_t/length.cc new file mode 100644 index 000000000..c3cd7b60d --- /dev/null +++ b/libstdc++-v3/testsuite/28_regex/traits/wchar_t/length.cc @@ -0,0 +1,49 @@ +// { dg-do run } +// { dg-options "-std=c++0x" } + +// +// 2010-02-17 Stephen M. Webb +// +// Copyright (C) 2010 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 +// . + +// 28.3 Requirements [re.req] +// 28.2 (4) Table 127 - Regular expression traits class requirements +// 28.7 Class template regex_traits [re.traits] +// 28.7 (3) static std::size_t length(const char_type* p); + +#include +#include + +void +test01() +{ + typedef wchar_t CharT; + typedef std::regex_traits traits; + bool test __attribute__((unused)) = true; + const CharT* p = L""; + + std::size_t i = traits::length(p); + + VERIFY( i == 0 ); +} + +int main() +{ + test01(); + return 0; +} diff --git a/libstdc++-v3/testsuite/28_regex/traits/wchar_t/transform.cc b/libstdc++-v3/testsuite/28_regex/traits/wchar_t/transform.cc new file mode 100644 index 000000000..c1f7af44d --- /dev/null +++ b/libstdc++-v3/testsuite/28_regex/traits/wchar_t/transform.cc @@ -0,0 +1,51 @@ +// { dg-do run } +// { dg-options "-std=c++0x" } + +// +// 2010-02-17 Stephen M. Webb +// +// Copyright (C) 2010 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 +// . + +// 28.3 Requirements [re.req] +// 28.2 (4) Table 127 - Regular expression traits class requirements +// 28.7 Class template regex_traits [re.traits] + +#include +#include +#include + +void +test01() +{ + bool test __attribute__((unused)) = true; + typedef wchar_t CharT; + typedef std::regex_traits traits; + + traits t; + traits::string_type G = L"abc"; + traits::string_type H = L"def"; + + VERIFY( G < H ); + VERIFY( t.transform(G.begin(), G.end()) < t.transform(H.begin(), H.end()) ); +} + +int main() +{ + test01(); + return 0; +} diff --git a/libstdc++-v3/testsuite/28_regex/traits/wchar_t/translate.cc b/libstdc++-v3/testsuite/28_regex/traits/wchar_t/translate.cc new file mode 100644 index 000000000..962c38152 --- /dev/null +++ b/libstdc++-v3/testsuite/28_regex/traits/wchar_t/translate.cc @@ -0,0 +1,49 @@ +// { dg-do run } +// { dg-options "-std=c++0x" } + +// +// 2010-02-17 Stephen M. Webb +// +// Copyright (C) 2010 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 +// . + +// 28.3 Requirements [re.req] +// 28.2 (4) Table 127 - Regular expression traits class requirements +// 28.7 Class template regex_traits [re.traits] +// 28.7 (3) static std::size_t length(const char_type* p); + +#include +#include + +void +test01() +{ + bool test __attribute__((unused)) = true; + typedef wchar_t CharT; + + std::regex_traits t; + CharT c = L'a'; + CharT d = L'a'; + + VERIFY( t.translate(c) == t.translate(d) ); +} + +int main() +{ + test01(); + return 0; +} diff --git a/libstdc++-v3/testsuite/28_regex/traits/wchar_t/translate_nocase.cc b/libstdc++-v3/testsuite/28_regex/traits/wchar_t/translate_nocase.cc new file mode 100644 index 000000000..5602cf001 --- /dev/null +++ b/libstdc++-v3/testsuite/28_regex/traits/wchar_t/translate_nocase.cc @@ -0,0 +1,46 @@ +// { dg-do run } +// { dg-options "-std=gnu++0x" } + +// 2007-03-12 Stephen M. Webb +// +// Copyright (C) 2010 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 +// . + +// [28.7] class template regex_traits (5) translate_nocase + +#include +#include + +// Verifies the workings of the regex_traits translate_nocase function. +void test01() +{ + bool test __attribute__((unused)) = true; + typedef wchar_t CharT; + + std::regex_traits t; + CharT c = L'a'; + CharT C = L'A'; + + VERIFY( t.translate_nocase(c) == t.translate_nocase(C) ); +} + +int +main() +{ + test01(); + return 0; +}; diff --git a/libstdc++-v3/testsuite/28_regex/traits/wchar_t/value.cc b/libstdc++-v3/testsuite/28_regex/traits/wchar_t/value.cc new file mode 100644 index 000000000..f0535acb2 --- /dev/null +++ b/libstdc++-v3/testsuite/28_regex/traits/wchar_t/value.cc @@ -0,0 +1,49 @@ +// { dg-do run } +// { dg-options "-std=gnu++0x" } + +// 2008-08-11 Stephen M. Webb +// +// Copyright (C) 2010 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 +// . + +// [28.7] class template regex_traits value() function + +#include +#include + +// Tests the value() function of the regex_traits class. +void test01() +{ + bool test __attribute__((unused)) = true; + std::regex_traits t; + VERIFY( t.value('7', 8) == 7 ); + VERIFY( t.value('7', 10) == 7 ); + VERIFY( t.value('7', 16) == 7 ); + VERIFY( t.value('9', 8) == -1 ); + VERIFY( t.value('9', 10) == 9 ); + VERIFY( t.value('9', 16) == 9 ); + VERIFY( t.value('d', 8) == -1 ); + VERIFY( t.value('d', 10) == -1 ); + VERIFY( t.value('d', 16) == 13 ); +} + +int +main() +{ + test01(); + return 0; +}; -- cgit v1.2.3