summaryrefslogtreecommitdiffstats
path: root/libcxx/test/re/re.regex/re.regex.construct
diff options
context:
space:
mode:
Diffstat (limited to 'libcxx/test/re/re.regex/re.regex.construct')
-rw-r--r--libcxx/test/re/re.regex/re.regex.construct/bad_escape.pass.cpp32
1 files changed, 20 insertions, 12 deletions
diff --git a/libcxx/test/re/re.regex/re.regex.construct/bad_escape.pass.cpp b/libcxx/test/re/re.regex/re.regex.construct/bad_escape.pass.cpp
index 75845a232c4..9455527412b 100644
--- a/libcxx/test/re/re.regex/re.regex.construct/bad_escape.pass.cpp
+++ b/libcxx/test/re/re.regex/re.regex.construct/bad_escape.pass.cpp
@@ -17,21 +17,29 @@
#include <regex>
#include <cassert>
-int main()
+static bool error_escape_thrown(const char *pat)
{
- // Correct: Exception thrown for invalid escape char in a character class
+ bool result = false;
try {
- std::regex char_class_escape("[\\a]");
- assert(false);
+ std::regex re(pat);
} catch (std::regex_error &ex) {
- assert(ex.code() == std::regex_constants::error_escape);
+ result = (ex.code() == std::regex_constants::error_escape);
}
+ return result;
+}
+
+int main()
+{
+ assert(error_escape_thrown("[\\a]"));
+ assert(error_escape_thrown("\\a"));
+
+ assert(error_escape_thrown("[\\e]"));
+ assert(error_escape_thrown("\\e"));
+
+ assert(error_escape_thrown("[\\c:]"));
+ assert(error_escape_thrown("\\c:"));
+ assert(error_escape_thrown("\\c"));
+ assert(!error_escape_thrown("[\\cA]"));
+ assert(!error_escape_thrown("\\cA"));
- // Failure: No exception thrown for invalid escape char in this case.
- try {
- std::regex escape("\\a");
- assert(false);
- } catch (std::regex_error &ex) {
- assert(ex.code() == std::regex_constants::error_escape);
- }
}
OpenPOWER on IntegriCloud