Files
Catch2/src/catch2/internal/catch_wildcard_pattern.cpp
T

48 lines
1.7 KiB
C++
Raw Normal View History

// Copyright Catch2 Authors
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file LICENSE_1_0.txt or copy at
// https://www.boost.org/LICENSE_1_0.txt)
// SPDX-License-Identifier: BSL-1.0
2020-03-30 10:34:21 +02:00
#include <catch2/internal/catch_wildcard_pattern.hpp>
#include <catch2/internal/catch_enforce.hpp>
#include <catch2/internal/catch_string_manip.hpp>
2017-07-19 10:13:47 +02:00
namespace Catch {
WildcardPattern::WildcardPattern( std::string const& pattern,
2020-08-18 13:44:37 +02:00
CaseSensitive caseSensitivity )
2017-07-19 10:13:47 +02:00
: m_caseSensitivity( caseSensitivity ),
m_pattern( normaliseString( pattern ) )
2017-07-19 10:13:47 +02:00
{
if( startsWith( m_pattern, '*' ) ) {
m_pattern = m_pattern.substr( 1 );
m_wildcard = WildcardAtStart;
}
if( endsWith( m_pattern, '*' ) ) {
m_pattern = m_pattern.substr( 0, m_pattern.size()-1 );
m_wildcard = static_cast<WildcardPosition>( m_wildcard | WildcardAtEnd );
}
}
bool WildcardPattern::matches( std::string const& str ) const {
switch( m_wildcard ) {
case NoWildcard:
return m_pattern == normaliseString( str );
2017-07-19 10:13:47 +02:00
case WildcardAtStart:
return endsWith( normaliseString( str ), m_pattern );
2017-07-19 10:13:47 +02:00
case WildcardAtEnd:
return startsWith( normaliseString( str ), m_pattern );
2017-07-19 10:13:47 +02:00
case WildcardAtBothEnds:
return contains( normaliseString( str ), m_pattern );
2017-07-19 10:13:47 +02:00
default:
CATCH_INTERNAL_ERROR( "Unknown enum" );
}
}
std::string WildcardPattern::normaliseString( std::string const& str ) const {
return trim( m_caseSensitivity == CaseSensitive::No ? toLower( str ) : str );
2017-07-19 10:13:47 +02:00
}
}