1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- /*
- * 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
|