Пользовательский сопоставитель OCHamcrest с аргументом примитивной функции
Я пытаюсь написать свой HCMatcher
что я могу использовать просто для некоторых утверждений при работе с коллекцией объектов.
В настоящее время мой метод испытаний делает это:
__block int totalNumberOfCells = 0;
[configurations enumerateObjectsUsingBlock:^(Layout *layout, NSUInteger idx, BOOL *stop) {
totalNumberOfCells += [layout numberOfCells];
}];
assertThatInt(totalNumberOfCells, is(equalToInt(3)));
Я собираюсь сделать такое утверждение во многих местах, поэтому я хочу упростить его до чего-то вроде этого:
assertThat(configurations, hasTotalNumberOfFeedItemCells(3));
Вот моя попытка создать мой собственный OCHamcrest matcher:
@interface HasTotalNumberOfFeedItemCells : HCBaseMatcher {
NSInteger correctNumberOfCells;
}
- (id)initWithCorrectNumberOfCells:(NSInteger)num;
@end
OBJC_EXPORT id <HCMatcher> hasTotalNumberOfFeedItemCells(int num);
@implementation HasTotalNumberOfFeedItemCells
- (id)initWithCorrectNumberOfCells:(NSInteger)num {
self = [super init];
if (self) {
correctNumberOfCells = num;
}
return self;
}
- (BOOL)matches:(id)item {
__block int totalNumberOfCells = 0;
[item enumerateObjectsUsingBlock:^(Layout *layout, NSUInteger idx, BOOL *stop) {
totalNumberOfCells += [layout numberOfCells];
}];
return totalNumberOfCells == correctNumberOfCells;
}
- (void)describeTo:(id <HCDescription>)description {
[description appendText:@"ZOMG"];
}
@end
id <HCMatcher> hasTotalNumberOfFeedItemCells(int num){
return [[HasTotalNumberOfFeedItemCells alloc] initWithCorrectNumberOfCells:num];
}
Когда я пытаюсь использовать hasTotalNumberOfFeedItemCells()
Функция я получаю предупреждения и ошибки сборки говоря:
- Неявное объявление функции hasTotalNumberOfFeedItemCells недопустимо в C99
- Неявное преобразование int в id запрещено в ARC
- Конфликтующие типы для 'hasTotalNumberOfFeedItemCells'
Любая помощь будет высоко ценится.