1 // Protocol Buffers - Google's data interchange format 2 // Copyright 2008 Google Inc. All rights reserved. 3 // 4 // Use of this source code is governed by a BSD-style 5 // license that can be found in the LICENSE file or at 6 // https://developers.google.com/open-source/licenses/bsd 7 8 #import <XCTest/XCTest.h> 9 10 #import "GPBExtensionRegistry.h" 11 #import "objectivec/Tests/MapUnittest.pbobjc.h" 12 #import "objectivec/Tests/Unittest.pbobjc.h" 13 DataFromCStr(const char * str)14static inline NSData *DataFromCStr(const char *str) { 15 return [NSData dataWithBytes:str length:strlen(str)]; 16 } 17 _DataFromBytesInternal(int32_t unused,...)18static inline NSData *_DataFromBytesInternal(int32_t unused, ...) { 19 NSMutableData *values = [NSMutableData dataWithCapacity:0]; 20 va_list list; 21 va_start(list, unused); 22 int32_t n; 23 while ((n = va_arg(list, int32_t)) != 256) { 24 NSCAssert(n >= 0 && n < 256, @"Only 8 bit values"); 25 uint8_t u = (uint8_t)n; 26 [values appendBytes:&u length:1]; 27 } 28 va_end(list); 29 return values; 30 } 31 32 #define DataFromBytes(...) _DataFromBytesInternal(0, __VA_ARGS__, 256) 33 34 // Helper for uses of C arrays in tests cases. 35 #ifndef GPBARRAYSIZE 36 #define GPBARRAYSIZE(a) ((sizeof(a) / sizeof((a[0])))) 37 #endif // GPBARRAYSIZE 38 39 // The number of repetitions of any repeated objects inside of test messages. 40 extern const uint32_t kGPBDefaultRepeatCount; 41 42 @interface GPBTestCase : XCTestCase 43 44 - (void)setAllFields:(TestAllTypes *)message repeatedCount:(uint32_t)count; 45 - (void)clearAllFields:(TestAllTypes *)message; 46 - (void)setAllExtensions:(TestAllExtensions *)message repeatedCount:(uint32_t)count; 47 - (void)setPackedFields:(TestPackedTypes *)message repeatedCount:(uint32_t)count; 48 - (void)setUnpackedFields:(TestUnpackedTypes *)message repeatedCount:(uint32_t)count; 49 - (void)setPackedExtensions:(TestPackedExtensions *)message repeatedCount:(uint32_t)count; 50 - (void)setUnpackedExtensions:(TestUnpackedExtensions *)message repeatedCount:(uint32_t)count; 51 - (void)setAllMapFields:(TestMap *)message numEntries:(uint32_t)count; 52 53 - (TestAllTypes *)allSetRepeatedCount:(uint32_t)count; 54 - (TestAllExtensions *)allExtensionsSetRepeatedCount:(uint32_t)count; 55 - (TestPackedTypes *)packedSetRepeatedCount:(uint32_t)count; 56 - (TestPackedExtensions *)packedExtensionsSetRepeatedCount:(uint32_t)count; 57 58 - (void)assertAllFieldsSet:(TestAllTypes *)message repeatedCount:(uint32_t)count; 59 - (void)assertAllExtensionsSet:(TestAllExtensions *)message repeatedCount:(uint32_t)count; 60 - (void)assertRepeatedFieldsModified:(TestAllTypes *)message repeatedCount:(uint32_t)count; 61 - (void)assertRepeatedExtensionsModified:(TestAllExtensions *)message repeatedCount:(uint32_t)count; 62 - (void)assertExtensionsClear:(TestAllExtensions *)message; 63 - (void)assertClear:(TestAllTypes *)message; 64 - (void)assertPackedFieldsSet:(TestPackedTypes *)message repeatedCount:(uint32_t)count; 65 - (void)assertPackedExtensionsSet:(TestPackedExtensions *)message repeatedCount:(uint32_t)count; 66 67 - (void)modifyRepeatedExtensions:(TestAllExtensions *)message; 68 - (void)modifyRepeatedFields:(TestAllTypes *)message; 69 70 - (GPBExtensionRegistry *)extensionRegistry; 71 72 - (NSData *)getDataFileNamed:(NSString *)name dataToWrite:(NSData *)dataToWrite; 73 74 - (void)assertAllFieldsKVCMatch:(TestAllTypes *)message; 75 - (void)setAllFieldsViaKVC:(TestAllTypes *)message repeatedCount:(uint32_t)count; 76 - (void)assertClearKVC:(TestAllTypes *)message; 77 78 @end 79