/Frameworks/OJUnit/OJTestResult.j

http://github.com/hammerdr/OJTest · Unknown · 130 lines · 107 code · 23 blank · 0 comment · 0 complexity · 4effbf891cfa217ee7922da92707b5a2 MD5 · raw file

  1. @import <Foundation/Foundation.j>
  2. @import "OJTestFailure.j"
  3. @implementation OJTestResult : CPObject
  4. {
  5. CPArray _failures;
  6. CPArray _errors;
  7. CPArray _listeners;
  8. int _runTests;
  9. BOOL _stop;
  10. }
  11. - (id)init
  12. {
  13. if (self = [super init])
  14. {
  15. _failures = [];
  16. _errors = [];
  17. _listeners = [];
  18. _runTests = 0;
  19. _stop = NO;
  20. }
  21. return self;
  22. }
  23. - (void)addError:(CPException)error forTest:(OJTest)aTest
  24. {
  25. [_failures addObject:[[OJTestFailure alloc] initWithTest:aTest exception:error]];
  26. for (var i = 0; i < _listeners.length; i++)
  27. [_listeners[i] addError:error forTest:aTest];
  28. }
  29. - (void)addFailure:(CPException)failure forTest:(OJTest)aTest
  30. {
  31. [_errors addObject:[[OJTestFailure alloc] initWithTest:aTest exception:failure]];
  32. for (var i = 0; i < _listeners.length; i++)
  33. [_listeners[i] addFailure:failure forTest:aTest];
  34. }
  35. - (void)startTest:(OJTest)aTest
  36. {
  37. _runTests += [aTest countTestCases];
  38. for (var i = 0; i < _listeners.length; i++)
  39. [_listeners[i] startTest:aTest];
  40. }
  41. - (void)endTest:(OJTest)aTest
  42. {
  43. for (var i = 0; i < _listeners.length; i++)
  44. [_listeners[i] endTest:aTest];
  45. }
  46. - (void)run:(OJTestCase)aTest
  47. {
  48. [self startTest:aTest];
  49. try
  50. {
  51. [aTest runBare];
  52. }
  53. catch (e)
  54. {
  55. // if not objj object, toll-free bridge to CPException
  56. if (!e.isa) {
  57. CPLog.warn("toll-free bridging e="+e+" to CPException")
  58. e.isa = CPException;
  59. }
  60. if ([e name] == AssertionFailedError)
  61. [self addFailure:e forTest:aTest];
  62. else
  63. [self addError:e forTest:aTest];
  64. }
  65. [self endTest:aTest];
  66. }
  67. - (void)addListener:(OJTestListener)listener
  68. {
  69. [_listeners addObject:listener];
  70. }
  71. - (void)removeListener:(OJTestListener)listener
  72. {
  73. [_listeners removeObject:listener];
  74. }
  75. - (int)runCount
  76. {
  77. return _runTests;
  78. }
  79. - (BOOL)shouldStop
  80. {
  81. return _stop;
  82. }
  83. - (void)stop
  84. {
  85. _stop = YES;
  86. }
  87. - (int)failureCount
  88. {
  89. return [_failures count];
  90. }
  91. - (CPArray)failures
  92. {
  93. return _failures;
  94. }
  95. - (int)errorCount
  96. {
  97. return [_errors count];
  98. }
  99. - (CPArray)errors
  100. {
  101. return _errors;
  102. }
  103. - (BOOL)wasSuccessful
  104. {
  105. return [self failureCount] == 0 && [self errorCount] == 0;
  106. }
  107. @end