mirror of https://github.com/catchorg/Catch2.git
parent
38b05f1400
commit
0afd52b98d
|
@ -34,10 +34,18 @@ namespace Matchers {
|
||||||
MatcherUntypedBase& operator = ( MatcherUntypedBase const& );
|
MatcherUntypedBase& operator = ( MatcherUntypedBase const& );
|
||||||
};
|
};
|
||||||
|
|
||||||
template<typename ObjectT, typename ComparatorT = ObjectT>
|
template<typename ObjectT>
|
||||||
struct MatcherBase : MatcherUntypedBase {
|
struct MatcherMethod {
|
||||||
|
|
||||||
virtual bool match( ObjectT const& arg ) const = 0;
|
virtual bool match( ObjectT const& arg ) const = 0;
|
||||||
|
};
|
||||||
|
template<typename PtrT>
|
||||||
|
struct MatcherMethod<PtrT*> {
|
||||||
|
virtual bool match( PtrT* arg ) const = 0;
|
||||||
|
};
|
||||||
|
|
||||||
|
template<typename ObjectT, typename ComparatorT = ObjectT>
|
||||||
|
struct MatcherBase : MatcherUntypedBase, MatcherMethod<ObjectT> {
|
||||||
|
|
||||||
|
|
||||||
MatchAllOf<ComparatorT> operator && ( MatcherBase const& other ) const;
|
MatchAllOf<ComparatorT> operator && ( MatcherBase const& other ) const;
|
||||||
MatchAnyOf<ComparatorT> operator || ( MatcherBase const& other ) const;
|
MatchAnyOf<ComparatorT> operator || ( MatcherBase const& other ) const;
|
||||||
|
|
|
@ -105,64 +105,67 @@ namespace Catch {
|
||||||
namespace Impl {
|
namespace Impl {
|
||||||
namespace NSStringMatchers {
|
namespace NSStringMatchers {
|
||||||
|
|
||||||
template<typename MatcherT>
|
struct StringHolder : MatcherBase<NSString*>{
|
||||||
struct StringHolder : MatcherImpl<MatcherT, NSString*>{
|
|
||||||
StringHolder( NSString* substr ) : m_substr( [substr copy] ){}
|
StringHolder( NSString* substr ) : m_substr( [substr copy] ){}
|
||||||
StringHolder( StringHolder const& other ) : m_substr( [other.m_substr copy] ){}
|
StringHolder( StringHolder const& other ) : m_substr( [other.m_substr copy] ){}
|
||||||
StringHolder() {
|
StringHolder() {
|
||||||
arcSafeRelease( m_substr );
|
arcSafeRelease( m_substr );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
virtual bool match( NSString* arg ) const CATCH_OVERRIDE {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
NSString* m_substr;
|
NSString* m_substr;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct Equals : StringHolder<Equals> {
|
struct Equals : StringHolder {
|
||||||
Equals( NSString* substr ) : StringHolder( substr ){}
|
Equals( NSString* substr ) : StringHolder( substr ){}
|
||||||
|
|
||||||
virtual bool match( ExpressionType const& str ) const {
|
virtual bool match( NSString* str ) const CATCH_OVERRIDE {
|
||||||
return (str != nil || m_substr == nil ) &&
|
return (str != nil || m_substr == nil ) &&
|
||||||
[str isEqualToString:m_substr];
|
[str isEqualToString:m_substr];
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual std::string toString() const {
|
virtual std::string describe() const CATCH_OVERRIDE {
|
||||||
return "equals string: " + Catch::toString( m_substr );
|
return "equals string: " + Catch::toString( m_substr );
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
struct Contains : StringHolder<Contains> {
|
struct Contains : StringHolder {
|
||||||
Contains( NSString* substr ) : StringHolder( substr ){}
|
Contains( NSString* substr ) : StringHolder( substr ){}
|
||||||
|
|
||||||
virtual bool match( ExpressionType const& str ) const {
|
virtual bool match( NSString* str ) const {
|
||||||
return (str != nil || m_substr == nil ) &&
|
return (str != nil || m_substr == nil ) &&
|
||||||
[str rangeOfString:m_substr].location != NSNotFound;
|
[str rangeOfString:m_substr].location != NSNotFound;
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual std::string toString() const {
|
virtual std::string describe() const CATCH_OVERRIDE {
|
||||||
return "contains string: " + Catch::toString( m_substr );
|
return "contains string: " + Catch::toString( m_substr );
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
struct StartsWith : StringHolder<StartsWith> {
|
struct StartsWith : StringHolder {
|
||||||
StartsWith( NSString* substr ) : StringHolder( substr ){}
|
StartsWith( NSString* substr ) : StringHolder( substr ){}
|
||||||
|
|
||||||
virtual bool match( ExpressionType const& str ) const {
|
virtual bool match( NSString* str ) const {
|
||||||
return (str != nil || m_substr == nil ) &&
|
return (str != nil || m_substr == nil ) &&
|
||||||
[str rangeOfString:m_substr].location == 0;
|
[str rangeOfString:m_substr].location == 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual std::string toString() const {
|
virtual std::string describe() const CATCH_OVERRIDE {
|
||||||
return "starts with: " + Catch::toString( m_substr );
|
return "starts with: " + Catch::toString( m_substr );
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
struct EndsWith : StringHolder<EndsWith> {
|
struct EndsWith : StringHolder {
|
||||||
EndsWith( NSString* substr ) : StringHolder( substr ){}
|
EndsWith( NSString* substr ) : StringHolder( substr ){}
|
||||||
|
|
||||||
virtual bool match( ExpressionType const& str ) const {
|
virtual bool match( NSString* str ) const {
|
||||||
return (str != nil || m_substr == nil ) &&
|
return (str != nil || m_substr == nil ) &&
|
||||||
[str rangeOfString:m_substr].location == [str length] - [m_substr length];
|
[str rangeOfString:m_substr].location == [str length] - [m_substr length];
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual std::string toString() const {
|
virtual std::string describe() const CATCH_OVERRIDE {
|
||||||
return "ends with: " + Catch::toString( m_substr );
|
return "ends with: " + Catch::toString( m_substr );
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in New Issue