81 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			C++
		
	
	
	
			
		
		
	
	
			81 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			C++
		
	
	
	
| /*
 | |
|  *  Created by Phil Nash on 08/02/2017.
 | |
|  *  Copyright (c) 2017 Two Blue Cubes Ltd. All rights reserved.
 | |
|  *
 | |
|  * Distributed under 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)
 | |
|  */
 | |
| #ifndef TWOBLUECUBES_CATCH_MATCHERS_STRING_H_INCLUDED
 | |
| #define TWOBLUECUBES_CATCH_MATCHERS_STRING_H_INCLUDED
 | |
| 
 | |
| #include "catch_matchers.h"
 | |
| 
 | |
| #include <string>
 | |
| 
 | |
| namespace Catch {
 | |
| namespace Matchers {
 | |
| 
 | |
|     namespace StdString {
 | |
| 
 | |
|         struct CasedString
 | |
|         {
 | |
|             CasedString( std::string const& str, CaseSensitive::Choice caseSensitivity );
 | |
|             std::string adjustString( std::string const& str ) const;
 | |
|             std::string caseSensitivitySuffix() const;
 | |
| 
 | |
|             CaseSensitive::Choice m_caseSensitivity;
 | |
|             std::string m_str;
 | |
|         };
 | |
| 
 | |
|         struct StringMatcherBase : MatcherBase<std::string> {
 | |
|             StringMatcherBase( std::string const& operation, CasedString const& comparator );
 | |
|             std::string describe() const override;
 | |
| 
 | |
|             CasedString m_comparator;
 | |
|             std::string m_operation;
 | |
|         };
 | |
| 
 | |
|         struct EqualsMatcher : StringMatcherBase {
 | |
|             EqualsMatcher( CasedString const& comparator );
 | |
|             bool match( std::string const& source ) const override;
 | |
|         };
 | |
|         struct ContainsMatcher : StringMatcherBase {
 | |
|             ContainsMatcher( CasedString const& comparator );
 | |
|             bool match( std::string const& source ) const override;
 | |
|         };
 | |
|         struct StartsWithMatcher : StringMatcherBase {
 | |
|             StartsWithMatcher( CasedString const& comparator );
 | |
|             bool match( std::string const& source ) const override;
 | |
|         };
 | |
|         struct EndsWithMatcher : StringMatcherBase {
 | |
|             EndsWithMatcher( CasedString const& comparator );
 | |
|             bool match( std::string const& source ) const override;
 | |
|         };
 | |
| 
 | |
|         struct RegexMatcher : MatcherBase<std::string> {
 | |
|             RegexMatcher( std::string regex, CaseSensitive::Choice caseSensitivity );
 | |
|             bool match( std::string const& matchee ) const override;
 | |
|             std::string describe() const override;
 | |
| 
 | |
|         private:
 | |
|             std::string m_regex;
 | |
|             CaseSensitive::Choice m_caseSensitivity;
 | |
|         };
 | |
| 
 | |
|     } // namespace StdString
 | |
| 
 | |
| 
 | |
|     // The following functions create the actual matcher objects.
 | |
|     // This allows the types to be inferred
 | |
| 
 | |
|     StdString::EqualsMatcher Equals( std::string const& str, CaseSensitive::Choice caseSensitivity = CaseSensitive::Yes );
 | |
|     StdString::ContainsMatcher Contains( std::string const& str, CaseSensitive::Choice caseSensitivity = CaseSensitive::Yes );
 | |
|     StdString::EndsWithMatcher EndsWith( std::string const& str, CaseSensitive::Choice caseSensitivity = CaseSensitive::Yes );
 | |
|     StdString::StartsWithMatcher StartsWith( std::string const& str, CaseSensitive::Choice caseSensitivity = CaseSensitive::Yes );
 | |
|     StdString::RegexMatcher Matches( std::string const& regex, CaseSensitive::Choice caseSensitivity = CaseSensitive::Yes );
 | |
| 
 | |
| } // namespace Matchers
 | |
| } // namespace Catch
 | |
| 
 | |
| #endif // TWOBLUECUBES_CATCH_MATCHERS_STRING_H_INCLUDED
 |