RLMTestObjects.h 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463
  1. ////////////////////////////////////////////////////////////////////////////
  2. //
  3. // Copyright 2014 Realm Inc.
  4. //
  5. // Licensed under the Apache License, Version 2.0 (the "License");
  6. // you may not use this file except in compliance with the License.
  7. // You may obtain a copy of the License at
  8. //
  9. // http://www.apache.org/licenses/LICENSE-2.0
  10. //
  11. // Unless required by applicable law or agreed to in writing, software
  12. // distributed under the License is distributed on an "AS IS" BASIS,
  13. // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  14. // See the License for the specific language governing permissions and
  15. // limitations under the License.
  16. //
  17. ////////////////////////////////////////////////////////////////////////////
  18. #import <Realm/Realm.h>
  19. #if __has_extension(objc_generics)
  20. #define RLM_GENERIC_ARRAY(CLASS) RLMArray<CLASS *><CLASS>
  21. #else
  22. #define RLM_GENERIC_ARRAY(CLASS) RLMArray<CLASS>
  23. #endif
  24. #pragma mark - Abstract Objects
  25. #pragma mark -
  26. #pragma mark SingleTypeObjects
  27. @interface StringObject : RLMObject
  28. @property NSString *stringCol;
  29. @end
  30. @interface IntObject : RLMObject
  31. @property int intCol;
  32. @end
  33. @interface AllIntSizesObject : RLMObject
  34. // int8_t not supported due to being ambiguous with BOOL
  35. @property int16_t int16;
  36. @property int32_t int32;
  37. @property int64_t int64;
  38. @end
  39. @interface FloatObject : RLMObject
  40. @property float floatCol;
  41. @end
  42. @interface DoubleObject : RLMObject
  43. @property double doubleCol;
  44. @end
  45. @interface BoolObject : RLMObject
  46. @property BOOL boolCol;
  47. @end
  48. @interface DateObject : RLMObject
  49. @property NSDate *dateCol;
  50. @end
  51. @interface BinaryObject : RLMObject
  52. @property NSData *binaryCol;
  53. @end
  54. @interface UTF8Object : RLMObject
  55. @property NSString *柱колоéнǢкƱаم;
  56. @end
  57. @interface IndexedStringObject : RLMObject
  58. @property NSString *stringCol;
  59. @end
  60. RLM_ARRAY_TYPE(StringObject)
  61. RLM_ARRAY_TYPE(IntObject)
  62. @interface LinkStringObject : RLMObject
  63. @property StringObject *objectCol;
  64. @end
  65. @interface LinkIndexedStringObject : RLMObject
  66. @property IndexedStringObject *objectCol;
  67. @end
  68. @interface RequiredPropertiesObject : RLMObject
  69. @property NSString *stringCol;
  70. @property NSData *binaryCol;
  71. @property NSDate *dateCol;
  72. @end
  73. @interface IgnoredURLObject : RLMObject
  74. @property NSString *name;
  75. @property NSURL *url;
  76. @end
  77. #pragma mark AllTypesObject
  78. @interface AllTypesObject : RLMObject
  79. @property BOOL boolCol;
  80. @property int intCol;
  81. @property float floatCol;
  82. @property double doubleCol;
  83. @property NSString *stringCol;
  84. @property NSData *binaryCol;
  85. @property NSDate *dateCol;
  86. @property bool cBoolCol;
  87. @property int64_t longCol;
  88. @property StringObject *objectCol;
  89. @property (readonly) RLMLinkingObjects *linkingObjectsCol;
  90. @end
  91. RLM_ARRAY_TYPE(AllTypesObject)
  92. @interface LinkToAllTypesObject : RLMObject
  93. @property AllTypesObject *allTypesCol;
  94. @end
  95. @interface ArrayOfAllTypesObject : RLMObject
  96. @property RLM_GENERIC_ARRAY(AllTypesObject) *array;
  97. @end
  98. @interface AllOptionalTypes : RLMObject
  99. @property NSNumber<RLMInt> *intObj;
  100. @property NSNumber<RLMFloat> *floatObj;
  101. @property NSNumber<RLMDouble> *doubleObj;
  102. @property NSNumber<RLMBool> *boolObj;
  103. @property NSString *string;
  104. @property NSData *data;
  105. @property NSDate *date;
  106. @end
  107. @interface AllOptionalTypesPK : RLMObject
  108. @property int pk;
  109. @property NSNumber<RLMInt> *intObj;
  110. @property NSNumber<RLMFloat> *floatObj;
  111. @property NSNumber<RLMDouble> *doubleObj;
  112. @property NSNumber<RLMBool> *boolObj;
  113. @property NSString *string;
  114. @property NSData *data;
  115. @property NSDate *date;
  116. @end
  117. @interface AllPrimitiveArrays : RLMObject
  118. @property RLMArray<RLMInt> *intObj;
  119. @property RLMArray<RLMFloat> *floatObj;
  120. @property RLMArray<RLMDouble> *doubleObj;
  121. @property RLMArray<RLMBool> *boolObj;
  122. @property RLMArray<RLMString> *stringObj;
  123. @property RLMArray<RLMDate> *dateObj;
  124. @property RLMArray<RLMData> *dataObj;
  125. @end
  126. @interface AllOptionalPrimitiveArrays : RLMObject
  127. @property RLMArray<RLMInt> *intObj;
  128. @property RLMArray<RLMFloat> *floatObj;
  129. @property RLMArray<RLMDouble> *doubleObj;
  130. @property RLMArray<RLMBool> *boolObj;
  131. @property RLMArray<RLMString> *stringObj;
  132. @property RLMArray<RLMDate> *dateObj;
  133. @property RLMArray<RLMData> *dataObj;
  134. @end
  135. #pragma mark - Real Life Objects
  136. #pragma mark -
  137. #pragma mark EmployeeObject
  138. @interface EmployeeObject : RLMObject
  139. @property NSString *name;
  140. @property int age;
  141. @property BOOL hired;
  142. @end
  143. RLM_ARRAY_TYPE(EmployeeObject)
  144. #pragma mark CompanyObject
  145. @interface CompanyObject : RLMObject
  146. @property NSString *name;
  147. @property RLM_GENERIC_ARRAY(EmployeeObject) *employees;
  148. @end
  149. #pragma mark LinkToCompanyObject
  150. @interface LinkToCompanyObject : RLMObject
  151. @property CompanyObject *company;
  152. @end
  153. #pragma mark DogObject
  154. @interface DogObject : RLMObject
  155. @property NSString *dogName;
  156. @property int age;
  157. @property (readonly) RLMLinkingObjects *owners;
  158. @end
  159. RLM_ARRAY_TYPE(DogObject)
  160. @interface DogArrayObject : RLMObject
  161. @property RLM_GENERIC_ARRAY(DogObject) *dogs;
  162. @end
  163. #pragma mark OwnerObject
  164. @interface OwnerObject : RLMObject
  165. @property NSString *name;
  166. @property DogObject *dog;
  167. @end
  168. #pragma mark - Specific Use Objects
  169. #pragma mark -
  170. #pragma mark CustomAccessorsObject
  171. @interface CustomAccessorsObject : RLMObject
  172. @property (getter = getThatName) NSString *name;
  173. @property (setter = setTheInt:) int age;
  174. @end
  175. #pragma mark BaseClassStringObject
  176. @interface BaseClassStringObject : RLMObject
  177. @property int intCol;
  178. @end
  179. @interface BaseClassStringObject ()
  180. @property NSString *stringCol;
  181. @end
  182. #pragma mark CircleObject
  183. @interface CircleObject : RLMObject
  184. @property NSString *data;
  185. @property CircleObject *next;
  186. @end
  187. RLM_ARRAY_TYPE(CircleObject);
  188. #pragma mark CircleArrayObject
  189. @interface CircleArrayObject : RLMObject
  190. @property RLM_GENERIC_ARRAY(CircleObject) *circles;
  191. @end
  192. #pragma mark ArrayPropertyObject
  193. @interface ArrayPropertyObject : RLMObject
  194. @property NSString *name;
  195. @property RLM_GENERIC_ARRAY(StringObject) *array;
  196. @property RLM_GENERIC_ARRAY(IntObject) *intArray;
  197. @end
  198. #pragma mark DynamicObject
  199. @interface DynamicObject : RLMObject
  200. @property NSString *stringCol;
  201. @property int intCol;
  202. @end
  203. #pragma mark AggregateObject
  204. @interface AggregateObject : RLMObject
  205. @property int intCol;
  206. @property float floatCol;
  207. @property double doubleCol;
  208. @property BOOL boolCol;
  209. @property NSDate *dateCol;
  210. @end
  211. RLM_ARRAY_TYPE(AggregateObject)
  212. @interface AggregateArrayObject : RLMObject
  213. @property RLMArray<AggregateObject *><AggregateObject> *array;
  214. @end
  215. #pragma mark PrimaryStringObject
  216. @interface PrimaryStringObject : RLMObject
  217. @property NSString *stringCol;
  218. @property int intCol;
  219. @end
  220. @interface PrimaryNullableStringObject : RLMObject
  221. @property NSString *stringCol;
  222. @property int intCol;
  223. @end
  224. @interface PrimaryIntObject : RLMObject
  225. @property int intCol;
  226. @end
  227. RLM_ARRAY_TYPE(PrimaryIntObject);
  228. @interface PrimaryInt64Object : RLMObject
  229. @property int64_t int64Col;
  230. @end
  231. @interface PrimaryNullableIntObject : RLMObject
  232. @property NSNumber<RLMInt> *optIntCol;
  233. @property int value;
  234. @end
  235. @interface ReadOnlyPropertyObject : RLMObject
  236. @property (readonly) NSNumber *readOnlyUnsupportedProperty;
  237. @property (readonly) int readOnlySupportedProperty;
  238. @property (readonly) int readOnlyPropertyMadeReadWriteInClassExtension;
  239. @end
  240. #pragma mark IntegerArrayPropertyObject
  241. @interface IntegerArrayPropertyObject : RLMObject
  242. @property NSInteger number;
  243. @property RLM_GENERIC_ARRAY(IntObject) *array;
  244. @end
  245. @interface NumberObject : RLMObject
  246. @property NSNumber<RLMInt> *intObj;
  247. @property NSNumber<RLMFloat> *floatObj;
  248. @property NSNumber<RLMDouble> *doubleObj;
  249. @property NSNumber<RLMBool> *boolObj;
  250. @end
  251. @interface NumberDefaultsObject : NumberObject
  252. @end
  253. @interface RequiredNumberObject : RLMObject
  254. @property NSNumber<RLMInt> *intObj;
  255. @property NSNumber<RLMFloat> *floatObj;
  256. @property NSNumber<RLMDouble> *doubleObj;
  257. @property NSNumber<RLMBool> *boolObj;
  258. @end
  259. #pragma mark CustomInitializerObject
  260. @interface CustomInitializerObject : RLMObject
  261. @property NSString *stringCol;
  262. @end
  263. #pragma mark AbstractObject
  264. @interface AbstractObject : RLMObject
  265. @end
  266. #pragma mark PersonObject
  267. @class PersonObject;
  268. RLM_ARRAY_TYPE(PersonObject);
  269. @interface PersonObject : RLMObject
  270. @property NSString *name;
  271. @property NSInteger age;
  272. @property RLMArray<PersonObject> *children;
  273. @property (readonly) RLMLinkingObjects *parents;
  274. @end
  275. @interface PrimaryEmployeeObject : EmployeeObject
  276. @end
  277. RLM_ARRAY_TYPE(PrimaryEmployeeObject);
  278. @interface LinkToPrimaryEmployeeObject : RLMObject
  279. @property PrimaryEmployeeObject *wrapped;
  280. @end
  281. @interface PrimaryCompanyObject : RLMObject
  282. @property NSString *name;
  283. @property RLM_GENERIC_ARRAY(PrimaryEmployeeObject) *employees;
  284. @property PrimaryEmployeeObject *intern;
  285. @property LinkToPrimaryEmployeeObject *wrappedIntern;
  286. @end
  287. RLM_ARRAY_TYPE(PrimaryCompanyObject);
  288. @interface ArrayOfPrimaryCompanies : RLMObject
  289. @property RLM_GENERIC_ARRAY(PrimaryCompanyObject) *companies;
  290. @end
  291. #pragma mark ComputedPropertyNotExplicitlyIgnoredObject
  292. @interface ComputedPropertyNotExplicitlyIgnoredObject : RLMObject
  293. @property NSString *_URLBacking;
  294. @property NSURL *URL;
  295. @end
  296. @interface RenamedProperties1 : RLMObject
  297. @property (nonatomic) int propA;
  298. @property (nonatomic) NSString *propB;
  299. @property (readonly, nonatomic) RLMLinkingObjects *linking1;
  300. @property (readonly, nonatomic) RLMLinkingObjects *linking2;
  301. @end
  302. @interface RenamedProperties2 : RLMObject
  303. @property (nonatomic) int propC;
  304. @property (nonatomic) NSString *propD;
  305. @property (readonly, nonatomic) RLMLinkingObjects *linking1;
  306. @property (readonly, nonatomic) RLMLinkingObjects *linking2;
  307. @end
  308. RLM_ARRAY_TYPE(RenamedProperties1)
  309. RLM_ARRAY_TYPE(RenamedProperties2)
  310. @interface LinkToRenamedProperties1 : RLMObject
  311. @property (nonatomic) RenamedProperties1 *linkA;
  312. @property (nonatomic) RenamedProperties2 *linkB;
  313. @property (nonatomic) RLM_GENERIC_ARRAY(RenamedProperties1) *array;
  314. @end
  315. @interface LinkToRenamedProperties2 : RLMObject
  316. @property (nonatomic) RenamedProperties2 *linkC;
  317. @property (nonatomic) RenamedProperties1 *linkD;
  318. @property (nonatomic) RLM_GENERIC_ARRAY(RenamedProperties2) *array;
  319. @end
  320. @interface RenamedPrimaryKey : RLMObject
  321. @property (nonatomic) int pk;
  322. @property (nonatomic) int value;
  323. @end
  324. #pragma mark FakeObject
  325. @interface FakeObject : NSObject
  326. @end