KWItNode.m 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. //
  2. // Licensed under the terms in License.txt
  3. //
  4. // Copyright 2010 Allen Ding. All rights reserved.
  5. //
  6. #import "KWItNode.h"
  7. #import "KWExampleNodeVisitor.h"
  8. #import "KWExample.h"
  9. #import "KWVerifying.h"
  10. #import "KWContextNode.h"
  11. @interface KWItNode ()
  12. @property (nonatomic, weak) KWContextNode *context;
  13. @end
  14. @implementation KWItNode
  15. #pragma mark - Initializing
  16. + (id)itNodeWithCallSite:(KWCallSite *)aCallSite
  17. description:(NSString *)aDescription
  18. context:(KWContextNode *)context
  19. block:(void (^)(void))block {
  20. KWItNode *itNode = [[self alloc] initWithCallSite:aCallSite description:aDescription block:block];
  21. itNode.context = context;
  22. return itNode;
  23. }
  24. #pragma mark - Accepting Visitors
  25. - (void)acceptExampleNodeVisitor:(id<KWExampleNodeVisitor>)aVisitor {
  26. [aVisitor visitItNode:self];
  27. }
  28. #pragma mark - Runtime Description support
  29. - (NSString *)description {
  30. NSString *description = [super description];
  31. if (description == nil) {
  32. description = [self.example generateDescriptionForAnonymousItNode];
  33. }
  34. return description;
  35. }
  36. #pragma mark - Accessing the context stack
  37. - (NSArray *)contextStack {
  38. NSMutableArray *contextStack = [NSMutableArray array];
  39. KWContextNode *currentContext = _context;
  40. while (currentContext) {
  41. [contextStack addObject:currentContext];
  42. currentContext = currentContext.parentContext;
  43. }
  44. return contextStack;
  45. }
  46. @end