123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- //
- // Licensed under the terms in License.txt
- //
- // Copyright 2014 Allen Ding. All rights reserved.
- //
- #import "KWSharedExampleRegistry.h"
- #import "KWSharedExample.h"
- @interface KWSharedExampleRegistry ()
- @property (nonatomic, strong) NSMutableDictionary *sharedExamples;
- @end
- @implementation KWSharedExampleRegistry
- #pragma mark - Initializing
- + (instancetype)sharedRegistry {
- static KWSharedExampleRegistry *sharedRegistry = nil;
- static dispatch_once_t onceToken;
- dispatch_once(&onceToken, ^{
- sharedRegistry = [self new];
- });
- return sharedRegistry;
- }
- - (id)init {
- self = [super init];
- if (self) {
- _sharedExamples = [NSMutableDictionary dictionary];
- }
- return self;
- }
- #pragma mark - Public Interface
- - (KWSharedExample *)sharedExampleForName:(NSString *)name {
- [self raiseIfSharedExampleNotRegistered:name];
- return [_sharedExamples objectForKey:name];
- }
- - (void)registerSharedExample:(KWSharedExample *)sharedExample {
- [self raiseIfSharedExampleAlreadyRegistered:sharedExample];
- [_sharedExamples setObject:sharedExample forKey:sharedExample.name];
- }
- #pragma mark - Internal Methods
- - (void)raiseIfSharedExampleNotRegistered:(NSString *)name {
- if (![_sharedExamples objectForKey:name]) {
- [NSException raise:NSInternalInconsistencyException
- format:@"Kiwi shared example error: No shared example registered for '%@'",
- name];
- }
- }
- - (void)raiseIfSharedExampleAlreadyRegistered:(KWSharedExample *)sharedExample {
- if ([_sharedExamples objectForKey:sharedExample.name]) {
- [NSException raise:NSInternalInconsistencyException
- format:@"Kiwi shared example error: Shared example already registered for '%@'",
- sharedExample.name];
- }
- }
- @end
|