97 lines
3.2 KiB
Mathematica
97 lines
3.2 KiB
Mathematica
|
@import XCTest;
|
||
|
|
||
|
@interface NSDictionaryBlocksKitTest : XCTestCase
|
||
|
|
||
|
@end
|
||
|
|
||
|
@implementation NSDictionaryBlocksKitTest {
|
||
|
NSDictionary *_subject;
|
||
|
NSInteger _total;
|
||
|
}
|
||
|
|
||
|
- (void)setUp {
|
||
|
_subject = @{
|
||
|
@"1": @(1),
|
||
|
@"2": @(2),
|
||
|
@"3": @(3),
|
||
|
};
|
||
|
_total = 0;
|
||
|
}
|
||
|
|
||
|
- (void)tearDown {
|
||
|
_subject = nil;
|
||
|
}
|
||
|
|
||
|
- (void)testMatch {
|
||
|
BOOL (^validationBlock)(id, id) = ^(id key, id value) {
|
||
|
self->_total += [value intValue] + [key intValue];
|
||
|
BOOL select = [value intValue] < 3 ? YES : NO;
|
||
|
return select;
|
||
|
};
|
||
|
NSDictionary *selected = [_subject wmf_match:validationBlock];
|
||
|
XCTAssertEqual(_total, (NSInteger)2, @"2*1 = %ld", (long)_total);
|
||
|
XCTAssertEqualObjects(selected, @(1), @"selected value is %@", selected);
|
||
|
}
|
||
|
|
||
|
- (void)testSelect {
|
||
|
BOOL (^validationBlock)(id, id) = ^(id key, id value) {
|
||
|
self->_total += [value intValue] + [key intValue];
|
||
|
BOOL select = [value intValue] < 3 ? YES : NO;
|
||
|
return select;
|
||
|
};
|
||
|
NSDictionary *selected = [_subject wmf_select:validationBlock];
|
||
|
XCTAssertEqual(_total, (NSInteger)12, @"2*(1+2+3) = %ld", (long)_total);
|
||
|
NSDictionary *target = @{ @"1": @(1),
|
||
|
@"2": @(2) };
|
||
|
XCTAssertEqualObjects(selected, target, @"selected dictionary is %@", selected);
|
||
|
}
|
||
|
|
||
|
- (void)testSelectedNone {
|
||
|
BOOL (^validationBlock)(id, id) = ^(id key, id value) {
|
||
|
self->_total += [value intValue] + [key intValue];
|
||
|
BOOL select = [value intValue] > 4 ? YES : NO;
|
||
|
return select;
|
||
|
};
|
||
|
NSDictionary *selected = [_subject wmf_select:validationBlock];
|
||
|
XCTAssertEqual(_total, (NSInteger)12, @"2*(1+2+3) = %ld", (long)_total);
|
||
|
XCTAssertTrue(selected.count == 0, @"none item is selected");
|
||
|
}
|
||
|
|
||
|
- (void)testReject {
|
||
|
BOOL (^validationBlock)(id, id) = ^(id key, id value) {
|
||
|
self->_total += [value intValue] + [key intValue];
|
||
|
BOOL reject = [value intValue] < 3 ? YES : NO;
|
||
|
return reject;
|
||
|
};
|
||
|
NSDictionary *rejected = [_subject wmf_reject:validationBlock];
|
||
|
XCTAssertEqual(_total, (NSInteger)12, @"2*(1+2+3) = %ld", (long)_total);
|
||
|
NSDictionary *target = @{ @"3": @(3) };
|
||
|
XCTAssertEqualObjects(rejected, target, @"dictionary after rejection is %@", rejected);
|
||
|
}
|
||
|
|
||
|
- (void)testRejectedAll {
|
||
|
BOOL (^validationBlock)(id, id) = ^(id key, id value) {
|
||
|
self->_total += [value intValue] + [key intValue];
|
||
|
BOOL reject = [value intValue] < 4 ? YES : NO;
|
||
|
return reject;
|
||
|
};
|
||
|
NSDictionary *rejected = [_subject wmf_reject:validationBlock];
|
||
|
XCTAssertEqual(_total, (NSInteger)12, @"2*(1+2+3) = %ld", (long)_total);
|
||
|
XCTAssertTrue(rejected.count == 0, @"all items are selected");
|
||
|
}
|
||
|
|
||
|
- (void)testMap {
|
||
|
id (^transformBlock)(id, id) = ^id(id key, id value) {
|
||
|
self->_total += [value intValue] + [key intValue];
|
||
|
return @(self->_total);
|
||
|
};
|
||
|
NSDictionary *transformed = [_subject wmf_map:transformBlock];
|
||
|
XCTAssertEqual(_total, (NSInteger)12, @"2*(1+2+3) = %ld", (long)_total);
|
||
|
NSDictionary *target = @{ @"1": @(2),
|
||
|
@"2": @(6),
|
||
|
@"3": @(12) };
|
||
|
XCTAssertEqualObjects(transformed, target, @"transformed dictionary is %@", transformed);
|
||
|
}
|
||
|
|
||
|
@end
|