• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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)14 static inline NSData *DataFromCStr(const char *str) {
15   return [NSData dataWithBytes:str length:strlen(str)];
16 }
17 
_DataFromBytesInternal(int32_t unused,...)18 static 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