main
1//
2// KWUserDefinedMatcher.h
3// Kiwi
4//
5// Created by Luke Redpath on 16/06/2011.
6// Copyright 2011 Allen Ding. All rights reserved.
7//
8
9#import <Foundation/Foundation.h>
10#import "KWMatcher.h"
11
12typedef BOOL (^KWUserDefinedMatcherBlock)();
13
14@interface KWUserDefinedMatcher : KWMatcher
15{
16 KWUserDefinedMatcherBlock matcherBlock;
17 SEL selector;
18 NSInvocation *invocation;
19 NSString *failureMessageForShould;
20 NSString *failureMessageForShouldNot;
21}
22@property (nonatomic, assign) SEL selector;
23@property (nonatomic, copy) NSString *failureMessageForShould;
24@property (nonatomic, copy) NSString *failureMessageForShouldNot;
25@property (nonatomic, assign) KWUserDefinedMatcherBlock matcherBlock;
26@property (nonatomic, copy) NSString *description;
27
28+ (id)matcherWithSubject:(id)aSubject block:(KWUserDefinedMatcherBlock)aBlock;
29- (id)initWithSubject:(id)aSubject block:(KWUserDefinedMatcherBlock)aBlock;
30- (void)setSubject:(id)aSubject;
31@end
32
33#pragma mark -
34
35typedef NSString * (^KWUserDefinedMatcherMessageBlock)(id);
36
37@interface KWUserDefinedMatcherBuilder : NSObject
38{
39 KWUserDefinedMatcher *matcher;
40 KWUserDefinedMatcherMessageBlock failureMessageForShouldBlock;
41 KWUserDefinedMatcherMessageBlock failureMessageForShouldNotBlock;
42 NSString *description;
43}
44@property (nonatomic, readonly) NSString *key;
45
46+ (id)builder;
47+ (id)builderForSelector:(SEL)aSelector;
48- (id)initWithSelector:(SEL)aSelector;
49
50#pragma mark -
51#pragma mark Configuring The Matcher
52
53- (void)match:(KWUserDefinedMatcherBlock)block;
54- (void)failureMessageForShould:(KWUserDefinedMatcherMessageBlock)block;
55- (void)failureMessageForShouldNot:(KWUserDefinedMatcherMessageBlock)block;
56- (void)description:(NSString *)description;
57
58#pragma mark -
59#pragma mark Buiding The Matcher
60
61- (KWUserDefinedMatcher *)buildMatcherWithSubject:(id)subject;
62@end