//===--- FoundationBridge.h -------------------------------------*- C++ -*-===// // // This source file is part of the Swift.org open source project // // Copyright (c) 2014 - 2017 Apple Inc. and the Swift project authors // Licensed under Apache License v2.0 with Runtime Library Exception // // See https://swift.org/LICENSE.txt for license information // See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors // //===----------------------------------------------------------------------===// #import NS_ASSUME_NONNULL_BEGIN typedef NS_ENUM(NSInteger, ObjectBehaviorAction) { ObjectBehaviorActionRetain, ObjectBehaviorActionCopy, ObjectBehaviorActionMutableCopy }; // NOTE: this class is NOT meant to be used in threaded contexts. @interface ObjectBehaviorVerifier : NSObject @property (readonly) BOOL wasRetained; @property (readonly) BOOL wasCopied; @property (readonly) BOOL wasMutableCopied; - (void)appendAction:(ObjectBehaviorAction)action; - (void)enumerate:(void (^)(ObjectBehaviorAction))block; - (void)reset; - (void)dump; @end #pragma mark - NSData verification @interface ImmutableDataVerifier : NSData { ObjectBehaviorVerifier *_verifier; NSData *_data; } @property (readonly) ObjectBehaviorVerifier *verifier; @end @interface MutableDataVerifier : NSMutableData { ObjectBehaviorVerifier *_verifier; NSMutableData *_data; } @property (readonly) ObjectBehaviorVerifier *verifier; @end void takesData(NSData *object); NSData *returnsData(); BOOL identityOfData(NSData *data); #pragma mark - NSCalendar verification @interface CalendarBridgingTester : NSObject - (NSCalendar *)autoupdatingCurrentCalendar; - (BOOL)verifyAutoupdatingCalendar:(NSCalendar *)calendar; @end @interface TimeZoneBridgingTester : NSObject - (NSTimeZone *)autoupdatingCurrentTimeZone; - (BOOL)verifyAutoupdatingTimeZone:(NSTimeZone *)tz; @end @interface LocaleBridgingTester : NSObject - (NSLocale *)autoupdatingCurrentLocale; - (BOOL)verifyAutoupdatingLocale:(NSLocale *)locale; @end #pragma mark - NSNumber verification @interface NumberBridgingTester : NSObject - (BOOL)verifyKeysInRange:(NSRange)range existInDictionary:(NSDictionary *)dictionary; @end #pragma mark - NSString bridging static inline NSString *getNSStringEqualTestString() { return [NSString stringWithUTF8String:"2166002315@874404110.1042078977"]; } static inline BOOL NSStringBridgeTestEqual(NSString * _Nonnull a, NSString * _Nonnull b) { return [a isEqual:b]; } static inline NSString *getNSStringWithUnpairedSurrogate() { unichar chars[16] = { 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0x0020, 0xD800 }; return [NSString stringWithCharacters:chars length:1]; } NS_ASSUME_NONNULL_END