forked from boostorg/regex
merged changes in regex5 branch
[SVN r26692]
This commit is contained in:
75
test/regress/test_regex_replace.hpp
Normal file
75
test/regress/test_regex_replace.hpp
Normal file
@ -0,0 +1,75 @@
|
||||
/*
|
||||
*
|
||||
* Copyright (c) 2004
|
||||
* Dr John Maddock
|
||||
*
|
||||
* Use, modification and distribution are subject to the
|
||||
* Boost Software License, Version 1.0. (See accompanying file
|
||||
* LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
* LOCATION: see http://www.boost.org for most recent version.
|
||||
* FILE test_regex_replace.hpp
|
||||
* VERSION see <boost/version.hpp>
|
||||
* DESCRIPTION: Declares tests for regex search and replace.
|
||||
*/
|
||||
|
||||
#ifndef BOOST_REGEX_REGRESS_REGEX_REPLACE_HPP
|
||||
#define BOOST_REGEX_REGRESS_REGEX_REPLACE_HPP
|
||||
#include "info.hpp"
|
||||
|
||||
template<class charT, class traits>
|
||||
void test_regex_replace(boost::basic_regex<charT, traits>& r)
|
||||
{
|
||||
typedef std::basic_string<charT> string_type;
|
||||
const string_type& search_text = test_info<charT>::search_text();
|
||||
boost::regex_constants::match_flag_type opts = test_info<charT>::match_options();
|
||||
const string_type& format_string = test_info<charT>::format_string();
|
||||
const string_type& result_string = test_info<charT>::result_string();
|
||||
|
||||
string_type result = boost::regex_replace(search_text, r, format_string, opts);
|
||||
if(result != result_string)
|
||||
{
|
||||
BOOST_REGEX_TEST_ERROR("regex_replace generated an incorrect string result", charT);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
struct test_regex_replace_tag{};
|
||||
|
||||
template<class charT, class traits>
|
||||
void test(boost::basic_regex<charT, traits>& r, const test_regex_replace_tag&)
|
||||
{
|
||||
const std::basic_string<charT>& expression = test_info<charT>::expression();
|
||||
boost::regex_constants::syntax_option_type syntax_options = test_info<charT>::syntax_options();
|
||||
try{
|
||||
r.assign(expression, syntax_options);
|
||||
if(r.status())
|
||||
{
|
||||
BOOST_REGEX_TEST_ERROR("Expression did not compile when it should have done, error code = " << r.status(), charT);
|
||||
}
|
||||
test_regex_replace(r);
|
||||
}
|
||||
catch(const boost::bad_expression& e)
|
||||
{
|
||||
BOOST_REGEX_TEST_ERROR("Expression did not compile when it should have done: " << e.what(), charT);
|
||||
}
|
||||
catch(const std::runtime_error& r)
|
||||
{
|
||||
BOOST_REGEX_TEST_ERROR("Received an unexpected std::runtime_error: " << r.what(), charT);
|
||||
}
|
||||
catch(const std::exception& r)
|
||||
{
|
||||
BOOST_REGEX_TEST_ERROR("Received an unexpected std::exception: " << r.what(), charT);
|
||||
}
|
||||
catch(...)
|
||||
{
|
||||
BOOST_REGEX_TEST_ERROR("Received an unexpected exception of unknown type", charT);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
#endif
|
||||
|
Reference in New Issue
Block a user