DSL.m 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  1. #import <Nimble/DSL.h>
  2. #if __has_include("Nimble-Swift.h")
  3. #import "Nimble-Swift.h"
  4. #else
  5. #import <Nimble/Nimble-Swift.h>
  6. #endif
  7. NS_ASSUME_NONNULL_BEGIN
  8. NIMBLE_EXPORT NIMBLE_OVERLOADABLE NMBExpectation *__nonnull NMB_expect(id __nullable(^actualBlock)(void), NSString *__nonnull file, NSUInteger line) {
  9. return [[NMBExpectation alloc] initWithActualBlock:actualBlock
  10. negative:NO
  11. file:file
  12. line:line];
  13. }
  14. NIMBLE_EXPORT NMBExpectation *NMB_expectAction(void(^actualBlock)(void), NSString *file, NSUInteger line) {
  15. return NMB_expect(^id{
  16. actualBlock();
  17. return nil;
  18. }, file, line);
  19. }
  20. NIMBLE_EXPORT void NMB_failWithMessage(NSString *msg, NSString *file, NSUInteger line) {
  21. return [NMBExpectation failWithMessage:msg file:file line:line];
  22. }
  23. NIMBLE_EXPORT id<NMBMatcher> NMB_beAnInstanceOf(Class expectedClass) {
  24. return [NMBObjCMatcher beAnInstanceOfMatcher:expectedClass];
  25. }
  26. NIMBLE_EXPORT id<NMBMatcher> NMB_beAKindOf(Class expectedClass) {
  27. return [NMBObjCMatcher beAKindOfMatcher:expectedClass];
  28. }
  29. NIMBLE_EXPORT NIMBLE_OVERLOADABLE NMBObjCBeCloseToMatcher *NMB_beCloseTo(NSNumber *expectedValue) {
  30. return [NMBObjCMatcher beCloseToMatcher:expectedValue within:0.001];
  31. }
  32. NIMBLE_EXPORT id<NMBMatcher> NMB_beginWith(id itemElementOrSubstring) {
  33. return [NMBObjCMatcher beginWithMatcher:itemElementOrSubstring];
  34. }
  35. NIMBLE_EXPORT NIMBLE_OVERLOADABLE id<NMBMatcher> NMB_beGreaterThan(NSNumber *expectedValue) {
  36. return [NMBObjCMatcher beGreaterThanMatcher:expectedValue];
  37. }
  38. NIMBLE_EXPORT NIMBLE_OVERLOADABLE id<NMBMatcher> NMB_beGreaterThanOrEqualTo(NSNumber *expectedValue) {
  39. return [NMBObjCMatcher beGreaterThanOrEqualToMatcher:expectedValue];
  40. }
  41. NIMBLE_EXPORT id<NMBMatcher> NMB_beIdenticalTo(id expectedInstance) {
  42. return [NMBObjCMatcher beIdenticalToMatcher:expectedInstance];
  43. }
  44. NIMBLE_EXPORT id<NMBMatcher> NMB_be(id expectedInstance) {
  45. return [NMBObjCMatcher beIdenticalToMatcher:expectedInstance];
  46. }
  47. NIMBLE_EXPORT NIMBLE_OVERLOADABLE id<NMBMatcher> NMB_beLessThan(NSNumber *expectedValue) {
  48. return [NMBObjCMatcher beLessThanMatcher:expectedValue];
  49. }
  50. NIMBLE_EXPORT NIMBLE_OVERLOADABLE id<NMBMatcher> NMB_beLessThanOrEqualTo(NSNumber *expectedValue) {
  51. return [NMBObjCMatcher beLessThanOrEqualToMatcher:expectedValue];
  52. }
  53. NIMBLE_EXPORT id<NMBMatcher> NMB_beTruthy() {
  54. return [NMBObjCMatcher beTruthyMatcher];
  55. }
  56. NIMBLE_EXPORT id<NMBMatcher> NMB_beFalsy() {
  57. return [NMBObjCMatcher beFalsyMatcher];
  58. }
  59. NIMBLE_EXPORT id<NMBMatcher> NMB_beTrue() {
  60. return [NMBObjCMatcher beTrueMatcher];
  61. }
  62. NIMBLE_EXPORT id<NMBMatcher> NMB_beFalse() {
  63. return [NMBObjCMatcher beFalseMatcher];
  64. }
  65. NIMBLE_EXPORT id<NMBMatcher> NMB_beNil() {
  66. return [NMBObjCMatcher beNilMatcher];
  67. }
  68. NIMBLE_EXPORT id<NMBMatcher> NMB_beEmpty() {
  69. return [NMBObjCMatcher beEmptyMatcher];
  70. }
  71. NIMBLE_EXPORT id<NMBMatcher> NMB_containWithNilTermination(id itemOrSubstring, ...) {
  72. NSMutableArray *itemOrSubstringArray = [NSMutableArray array];
  73. if (itemOrSubstring) {
  74. [itemOrSubstringArray addObject:itemOrSubstring];
  75. va_list args;
  76. va_start(args, itemOrSubstring);
  77. id next;
  78. while ((next = va_arg(args, id))) {
  79. [itemOrSubstringArray addObject:next];
  80. }
  81. va_end(args);
  82. }
  83. return [NMBObjCMatcher containMatcher:itemOrSubstringArray];
  84. }
  85. NIMBLE_EXPORT id<NMBMatcher> NMB_containElementSatisfying(BOOL(^predicate)(id)) {
  86. return [NMBObjCMatcher containElementSatisfyingMatcher:predicate];
  87. }
  88. NIMBLE_EXPORT id<NMBMatcher> NMB_endWith(id itemElementOrSubstring) {
  89. return [NMBObjCMatcher endWithMatcher:itemElementOrSubstring];
  90. }
  91. NIMBLE_EXPORT NIMBLE_OVERLOADABLE id<NMBMatcher> NMB_equal(__nullable id expectedValue) {
  92. return [NMBObjCMatcher equalMatcher:expectedValue];
  93. }
  94. NIMBLE_EXPORT NIMBLE_OVERLOADABLE id<NMBMatcher> NMB_haveCount(id expectedValue) {
  95. return [NMBObjCMatcher haveCountMatcher:expectedValue];
  96. }
  97. NIMBLE_EXPORT id<NMBMatcher> NMB_match(id expectedValue) {
  98. return [NMBObjCMatcher matchMatcher:expectedValue];
  99. }
  100. NIMBLE_EXPORT id<NMBMatcher> NMB_allPass(id expectedValue) {
  101. return [NMBObjCMatcher allPassMatcher:expectedValue];
  102. }
  103. NIMBLE_EXPORT id<NMBMatcher> NMB_satisfyAnyOfWithMatchers(id matchers) {
  104. return [NMBObjCMatcher satisfyAnyOfMatcher:matchers];
  105. }
  106. NIMBLE_EXPORT id<NMBMatcher> NMB_satisfyAllOfWithMatchers(id matchers) {
  107. return [NMBObjCMatcher satisfyAllOfMatcher:matchers];
  108. }
  109. NIMBLE_EXPORT NMBObjCRaiseExceptionMatcher *NMB_raiseException() {
  110. return [NMBObjCMatcher raiseExceptionMatcher];
  111. }
  112. NIMBLE_EXPORT NMBWaitUntilTimeoutBlock NMB_waitUntilTimeoutBuilder(NSString *file, NSUInteger line) {
  113. return ^(NSTimeInterval timeout, void (^ _Nonnull action)(void (^ _Nonnull)(void))) {
  114. [NMBWait untilTimeout:timeout file:file line:line action:action];
  115. };
  116. }
  117. NIMBLE_EXPORT NMBWaitUntilBlock NMB_waitUntilBuilder(NSString *file, NSUInteger line) {
  118. return ^(void (^ _Nonnull action)(void (^ _Nonnull)(void))) {
  119. [NMBWait untilFile:file line:line action:action];
  120. };
  121. }
  122. NS_ASSUME_NONNULL_END