OCMArg.h 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. /*
  2. * Copyright (c) 2009-2015 Erik Doernenburg and contributors
  3. *
  4. * Licensed under the Apache License, Version 2.0 (the "License"); you may
  5. * not use these files except in compliance with the License. You may obtain
  6. * a copy of the License at
  7. *
  8. * http://www.apache.org/licenses/LICENSE-2.0
  9. *
  10. * Unless required by applicable law or agreed to in writing, software
  11. * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
  12. * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
  13. * License for the specific language governing permissions and limitations
  14. * under the License.
  15. */
  16. #import <Foundation/Foundation.h>
  17. @interface OCMArg : NSObject
  18. // constraining arguments
  19. + (id)any;
  20. + (SEL)anySelector;
  21. + (void *)anyPointer;
  22. + (id __autoreleasing *)anyObjectRef;
  23. + (id)isNil;
  24. + (id)isNotNil;
  25. + (id)isEqual:(id)value;
  26. + (id)isNotEqual:(id)value;
  27. + (id)isKindOfClass:(Class)cls;
  28. + (id)checkWithSelector:(SEL)selector onObject:(id)anObject;
  29. + (id)checkWithBlock:(BOOL (^)(id obj))block;
  30. // manipulating arguments
  31. + (id *)setTo:(id)value;
  32. + (void *)setToValue:(NSValue *)value;
  33. // internal use only
  34. + (id)resolveSpecialValues:(NSValue *)value;
  35. @end
  36. #define OCMOCK_ANY [OCMArg any]
  37. #if defined(__GNUC__) && !defined(__STRICT_ANSI__)
  38. #define OCMOCK_VALUE(variable) \
  39. ({ __typeof__(variable) __v = (variable); [NSValue value:&__v withObjCType:@encode(__typeof__(__v))]; })
  40. #else
  41. #define OCMOCK_VALUE(variable) [NSValue value:&variable withObjCType:@encode(__typeof__(variable))]
  42. #endif