forked from catchorg/Catch2
		
	
		
			
				
	
	
		
			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
 |