????????12??????1???????????
????????????棬?????????л??????????????????????????????????????????????????CGPoint??CGSize?????????????13?ж?UMView??size??origin?????????OCHamcrest?????????и?????????κ????CGPoint??CGSize??????????????????????????????????????????????????????????????
????#pragma mark - UMView
????HC_assertThat(NSStringFromCGSize(self.view.size)??
????HC_equalToSize(self.view.frame.size));
????HC_assertThat(NSStringFromCGPoint(self.view.origin)??
????HC_equalToPoint(CGPointMake(self.view.frame.origin.x?? self.
????view.frame.origin.y)));
????????13??UMView???????????
??????????????????????????μ???????iOS?????е???????????&????????????????????????????????????????????????????????н????
????OCHamcrest??????????????????????????????????????????????????struct??????CGPoint??????????????????????14?ж??????????????——OBJC_EXPORT id HC_equalToPoint(CGPoint point)?? ??CGPoint???????????У???????CGPoint????????????????????????????????????????????????????????CGPoint???б?????????????????????????????????????κ??????????????????????CGPoint??
???????????????????????????SHORTHAND????????????????в???????????籾???е????????????????????????????????????SHORTHAND??????
????#import
????OBJC_EXPORT id HC_equalToPoint(CGPoint point);
????#ifdef HC_SHORTHAND
????#define equalToPoint HC_equalToPoint
????#endif
????@interface HCIsEqualToPoint : HCBaseMatcher
????+ (id)equalToPoint:(CGPoint)point;
????- (id)initWithPoint:(CGPoint)point;
????@property (nonatomic?? assign)       CGFloat     x;
????@property (nonatomic?? assign)       CGFloat     y;
????@end
????????14???????????HC_equalToPoint????
?????????????????У????????????????????????????????????????ж?????????????????????????????????????????????????????????????ж????????????????????????????????λ?????λ?á??????????subviews????????ж????????????????????????????????????????????????????????????15??matches:?????У????????????????itemУ?????????????????????CGPoint?????????????????????и???????????????????????????????£??????????????????У?飬???У?????????????????????????????ж?????

 

#import "HCIsEqualToPoint.h"
#import
id  HC_equalToPoint(CGPoint point)
{
return [HCIsEqualToPoint equalToPoint:point];
}
@implementation HCIsEqualToPoint
+ (id)equalToPoint:(CGPoint)point
{
return [[self alloc] initWithPoint:point];
}
- (id)initWithPoint:(CGPoint)point
{
self = [super init];
if (self) {
self.x = point.x;
self.y = point.y;
}
return self;
}
- (BOOL)matches:(id)item
{
if (! [item isKindOfClass:[NSString class]]) {
return NO;
}
CGPoint point = CGPointFromString((NSString *)item);
return (point.x == self.x && point.y == self.y);
}
- (void)describeTo:(id)description
{
[description appendText:@"Point not equaled."];
}
@end

????????15???????????HC_equalToPoint???
?????????????????????
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????URL????UMViewController???????????????UMViewController???????????????????????????????URL?????????????URL??????Query????URL???????????URL??????Query??乲???????????????????????????????4???????????????16???????в????