Sha256: 8aa82b4730f74a9b35ab699aa77ddd703a0a79e9b810cd30af28de8fc1f3a2f4

Contents?: true

Size: 1.98 KB

Versions: 6

Compression:

Stored size: 1.98 KB

Contents

#import "SPTSharedExampleGroups.h"
#import "SPTExampleGroup.h"
#import "SPTXCTestCase.h"
#import "SpectaUtility.h"
#import <objc/runtime.h>

NSMutableDictionary *globalSharedExampleGroups = nil;
BOOL initialized = NO;

@implementation SPTSharedExampleGroups

+ (void)initialize {
  Class SPTSharedExampleGroupsClass = [SPTSharedExampleGroups class];
  if ([self class] == SPTSharedExampleGroupsClass) {
    if (!initialized) {
      initialized = YES;
      globalSharedExampleGroups = [[NSMutableDictionary alloc] init];

      Class *classes = NULL;
      int numClasses = objc_getClassList(NULL, 0);

      if (numClasses > 0) {
        classes = (Class *)malloc(sizeof(Class) * numClasses);
        numClasses = objc_getClassList(classes, numClasses);

        Class klass, superClass;
        for(uint i = 0; i < numClasses; i++) {
          klass = classes[i];
          superClass = class_getSuperclass(klass);
          if (superClass == SPTSharedExampleGroupsClass) {
            [klass defineSharedExampleGroups];
          }
        }

        free(classes);
      }
    }
  }
}

+ (void)addSharedExampleGroupWithName:(NSString *)name block:(SPTDictionaryBlock)block exampleGroup:(SPTExampleGroup *)exampleGroup {
  (exampleGroup == nil ? globalSharedExampleGroups : exampleGroup.sharedExamples)[name] = [block copy];
}

+ (SPTDictionaryBlock)sharedExampleGroupWithName:(NSString *)name exampleGroup:(SPTExampleGroup *)exampleGroup {
  SPTDictionaryBlock sharedExampleGroup = nil;
  while (exampleGroup != nil) {
    if ((sharedExampleGroup = exampleGroup.sharedExamples[name])) {
      return sharedExampleGroup;
    }
    exampleGroup = exampleGroup.parent;
  }
  return globalSharedExampleGroups[name];
}

+ (void)defineSharedExampleGroups {}

+ (void)recordFailureWithDescription:(NSString *)description inFile:(NSString *)filename atLine:(NSUInteger)lineNumber expected:(BOOL)expected {
  [SPTCurrentTestCase recordFailureWithDescription:description inFile:filename atLine:lineNumber expected:expected];
}

@end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
second_curtain-0.6.0 Demo/Pods/Specta/src/SPTSharedExampleGroups.m
second_curtain-0.5.0 Demo/Pods/Specta/src/SPTSharedExampleGroups.m
second_curtain-0.4.0 Demo/Pods/Specta/src/SPTSharedExampleGroups.m
second_curtain-0.3.0 Demo/Pods/Specta/src/SPTSharedExampleGroups.m
second_curtain-0.2.4 Demo/Pods/Specta/src/SPTSharedExampleGroups.m
second_curtain-0.2.3 Demo/Pods/Specta/src/SPTSharedExampleGroups.m