diff options
3 files changed, 46 insertions, 4 deletions
diff --git a/libcxx/test/std/re/re.alg/re.alg.match/exponential.pass.cpp b/libcxx/test/std/re/re.alg/re.alg.match/exponential.pass.cpp index cadbc2cc200..f23bef36ec1 100644 --- a/libcxx/test/std/re/re.alg/re.alg.match/exponential.pass.cpp +++ b/libcxx/test/std/re/re.alg/re.alg.match/exponential.pass.cpp @@ -21,18 +21,20 @@  #include <regex>  #include <cassert> +#include "test_macros.h"  int main() {    for (std::regex_constants::syntax_option_type op :         {std::regex::ECMAScript, std::regex::extended, std::regex::egrep,          std::regex::awk}) {      try { -      std::regex_match( +      bool b = std::regex_match(            "aaaaaaaaaaaaaaaaaaaa",            std::regex(                "a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?aaaaaaaaaaaaaaaaaaaa",                op)); -      assert(false); +      LIBCPP_ASSERT(false); +      assert(b);      } catch (const std::regex_error &e) {        assert(e.code() == std::regex_constants::error_complexity);      } diff --git a/libcxx/test/std/re/re.alg/re.alg.replace/exponential.pass.cpp b/libcxx/test/std/re/re.alg/re.alg.replace/exponential.pass.cpp new file mode 100644 index 00000000000..715aa0affe4 --- /dev/null +++ b/libcxx/test/std/re/re.alg/re.alg.replace/exponential.pass.cpp @@ -0,0 +1,38 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +// <regex> +// UNSUPPORTED: libcpp-no-exceptions + +// template <class OutputIterator, class BidirectionalIterator, +//           class traits, class charT, class ST, class SA> +//     OutputIterator +//     regex_replace(OutputIterator out, +//                   BidirectionalIterator first, BidirectionalIterator last, +//                   const basic_regex<charT, traits>& e, +//                   const basic_string<charT, ST, SA>& fmt, +//                   regex_constants::match_flag_type flags = +//                                              regex_constants::match_default); + +#include <regex> +#include <cassert> + +#include "test_macros.h" + +int main() +{ +    try { +        std::regex re("a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?aaaaaaaaaaaaaaaaaaaa"); +        const char s[] = "aaaaaaaaaaaaaaaaaaaa"; +        std::string r = std::regex_replace(s, re, "123-&", std::regex_constants::format_sed); +        LIBCPP_ASSERT(false); +        assert(r == "123-aaaaaaaaaaaaaaaaaaaa"); +    } catch (const std::regex_error &e) { +      assert(e.code() == std::regex_constants::error_complexity); +    } +} diff --git a/libcxx/test/std/re/re.alg/re.alg.search/exponential.pass.cpp b/libcxx/test/std/re/re.alg/re.alg.search/exponential.pass.cpp index 381aec155ec..6de3bbffd67 100644 --- a/libcxx/test/std/re/re.alg/re.alg.search/exponential.pass.cpp +++ b/libcxx/test/std/re/re.alg/re.alg.search/exponential.pass.cpp @@ -21,18 +21,20 @@  #include <regex>  #include <cassert> +#include "test_macros.h"  int main() {    for (std::regex_constants::syntax_option_type op :         {std::regex::ECMAScript, std::regex::extended, std::regex::egrep,          std::regex::awk}) {      try { -      std::regex_search( +      bool b = std::regex_search(            "aaaaaaaaaaaaaaaaaaaa",            std::regex(                "a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?aaaaaaaaaaaaaaaaaaaa",                op)); -      assert(false); +      LIBCPP_ASSERT(false); +      assert(b);      } catch (const std::regex_error &e) {        assert(e.code() == std::regex_constants::error_complexity);      }  | 

