123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409 |
- ////////////////////////////////////////////////////////////////////////////
- //
- // Copyright 2014 Realm Inc.
- //
- // Licensed under the Apache License, Version 2.0 (the "License");
- // you may not use this file except in compliance with the License.
- // You may obtain a copy of the License at
- //
- // http://www.apache.org/licenses/LICENSE-2.0
- //
- // Unless required by applicable law or agreed to in writing, software
- // distributed under the License is distributed on an "AS IS" BASIS,
- // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- // See the License for the specific language governing permissions and
- // limitations under the License.
- //
- ////////////////////////////////////////////////////////////////////////////
- #import "RLMTestObjects.h"
- #import <Realm/RLMObject_Private.h>
- #pragma mark - Abstract Objects
- #pragma mark -
- #pragma mark OneTypeObjects
- @implementation StringObject
- @end
- @implementation IntObject
- @end
- @implementation AllIntSizesObject
- @end
- @implementation FloatObject
- @end
- @implementation DoubleObject
- @end
- @implementation BoolObject
- @end
- @implementation DateObject
- @end
- @implementation BinaryObject
- @end
- @implementation UTF8Object
- @end
- @implementation IndexedStringObject
- + (NSArray *)indexedProperties {
- return @[@"stringCol"];
- }
- @end
- @implementation LinkStringObject
- @end
- @implementation LinkIndexedStringObject
- @end
- @implementation RequiredPropertiesObject
- + (NSArray *)requiredProperties {
- return @[@"stringCol", @"binaryCol"];
- }
- @end
- @implementation IgnoredURLObject
- + (NSArray *)ignoredProperties {
- return @[@"url"];
- }
- @end
- #pragma mark AllTypesObject
- @implementation AllTypesObject
- + (NSDictionary *)linkingObjectsProperties
- {
- return @{ @"linkingObjectsCol": [RLMPropertyDescriptor descriptorWithClass:LinkToAllTypesObject.class propertyName:@"allTypesCol"] };
- }
- + (NSArray *)requiredProperties
- {
- return @[@"stringCol", @"dateCol", @"binaryCol"];
- }
- @end
- @implementation ArrayOfAllTypesObject
- @end
- @implementation LinkToAllTypesObject
- @end
- @implementation AllOptionalTypes
- @end
- @implementation AllPrimitiveArrays
- + (NSArray *)requiredProperties {
- return @[@"intObj", @"floatObj", @"doubleObj", @"boolObj", @"stringObj", @"dateObj", @"dataObj"];
- }
- @end
- @implementation AllOptionalPrimitiveArrays
- @end
- @implementation AllOptionalTypesPK
- + (NSString *)primaryKey {
- return @"pk";
- }
- + (NSDictionary *)defaultPropertyValues {
- return @{@"pk": NSUUID.UUID.UUIDString};
- }
- @end
- #pragma mark - Real Life Objects
- #pragma mark -
- #pragma mark EmployeeObject
- @implementation EmployeeObject
- @end
- #pragma mark CompanyObject
- @implementation CompanyObject
- @end
- @implementation PrimaryEmployeeObject
- + (NSString *)primaryKey {
- return @"name";
- }
- @end
- @implementation LinkToPrimaryEmployeeObject
- @end
- @implementation PrimaryCompanyObject
- + (NSString *)primaryKey {
- return @"name";
- }
- @end
- @implementation ArrayOfPrimaryCompanies
- @end
- #pragma mark LinkToCompanyObject
- @implementation LinkToCompanyObject
- @end
- #pragma mark DogObject
- @class OwnerObject;
- @implementation DogObject
- + (NSDictionary *)linkingObjectsProperties
- {
- return @{ @"owners": [RLMPropertyDescriptor descriptorWithClass:OwnerObject.class propertyName:@"dog"] };
- }
- @end
- #pragma mark OwnerObject
- @implementation OwnerObject
- - (BOOL)isEqual:(id)other
- {
- return [self isEqualToObject:other];
- }
- @end
- #pragma mark - Specific Use Objects
- #pragma mark -
- #pragma mark CustomAccessorsObject
- @implementation CustomAccessorsObject
- @end
- #pragma mark BaseClassStringObject
- @implementation BaseClassStringObject
- @end
- #pragma mark CircleObject
- @implementation CircleObject
- @end
- #pragma mark CircleArrayObject
- @implementation CircleArrayObject
- @end
- #pragma mark ArrayPropertyObject
- @implementation ArrayPropertyObject
- @end
- #pragma mark DynamicObject
- @implementation DynamicObject
- @end
- #pragma mark AggregateObject
- @implementation AggregateObject
- @end
- @implementation AggregateArrayObject
- @end
- #pragma mark PrimaryStringObject
- @implementation PrimaryStringObject
- + (NSString *)primaryKey {
- return @"stringCol";
- }
- + (NSArray *)requiredProperties {
- return @[@"stringCol"];
- }
- @end
- @implementation PrimaryNullableStringObject
- + (NSString *)primaryKey {
- return @"stringCol";
- }
- @end
- @implementation PrimaryIntObject
- + (NSString *)primaryKey {
- return @"intCol";
- }
- @end
- @implementation PrimaryInt64Object
- + (NSString *)primaryKey {
- return @"int64Col";
- }
- @end
- @implementation PrimaryNullableIntObject
- + (NSString *)primaryKey {
- return @"optIntCol";
- }
- @end
- #pragma mark ReadOnlyPropertyObject
- @interface ReadOnlyPropertyObject ()
- @property (readwrite) int readOnlyPropertyMadeReadWriteInClassExtension;
- @end
- @implementation ReadOnlyPropertyObject
- - (NSNumber *)readOnlyUnsupportedProperty {
- return nil;
- }
- @end
- #pragma mark IntegerArrayPropertyObject
- @implementation IntegerArrayPropertyObject
- @end
- @implementation NumberObject
- @end
- @implementation NumberDefaultsObject
- + (NSDictionary *)defaultPropertyValues {
- return @{@"intObj" : @1,
- @"floatObj" : @2.2f,
- @"doubleObj" : @3.3,
- @"boolObj" : @NO};
- }
- @end
- @implementation RequiredNumberObject
- + (NSArray *)requiredProperties {
- return @[@"intObj", @"floatObj", @"doubleObj", @"boolObj"];
- }
- @end
- #pragma mark CustomInitializerObject
- @implementation CustomInitializerObject
- - (instancetype)init {
- self = [super init];
- if (self) {
- self.stringCol = @"test";
- }
- return self;
- }
- @end
- #pragma mark AbstractObject
- @implementation AbstractObject
- @end
- #pragma mark PersonObject
- @implementation PersonObject
- + (NSDictionary *)linkingObjectsProperties
- {
- return @{ @"parents": [RLMPropertyDescriptor descriptorWithClass:PersonObject.class propertyName:@"children"] };
- }
- - (BOOL)isEqual:(id)other
- {
- if (![other isKindOfClass:[PersonObject class]]) {
- return NO;
- }
- PersonObject *otherPerson = other;
- return [self.name isEqual:otherPerson.name] && self.age == otherPerson.age && [self.children isEqual:otherPerson.children];
- }
- @end
- @implementation RenamedProperties1
- + (NSString *)_realmObjectName {
- return @"Renamed Properties";
- }
- + (NSDictionary *)_realmColumnNames {
- return @{@"propA": @"prop 1",
- @"propB": @"prop 2"};
- }
- + (NSDictionary *)linkingObjectsProperties {
- return @{@"linking1": [RLMPropertyDescriptor descriptorWithClass:LinkToRenamedProperties1.class propertyName:@"linkA"],
- @"linking2": [RLMPropertyDescriptor descriptorWithClass:LinkToRenamedProperties2.class propertyName:@"linkD"]};
- }
- @end
- @implementation RenamedProperties2
- + (NSString *)_realmObjectName {
- return @"Renamed Properties";
- }
- + (NSDictionary *)_realmColumnNames {
- return @{@"propC": @"prop 1",
- @"propD": @"prop 2"};
- }
- + (NSDictionary *)linkingObjectsProperties {
- return @{@"linking1": [RLMPropertyDescriptor descriptorWithClass:LinkToRenamedProperties1.class propertyName:@"linkA"],
- @"linking2": [RLMPropertyDescriptor descriptorWithClass:LinkToRenamedProperties2.class propertyName:@"linkD"]};
- }
- @end
- @implementation LinkToRenamedProperties1
- + (NSString *)_realmObjectName {
- return @"Link To Renamed Properties";
- }
- + (NSDictionary *)_realmColumnNames {
- return @{@"linkA": @"Link A",
- @"linkB": @"Link B"};
- }
- @end
- @implementation LinkToRenamedProperties2
- + (NSString *)_realmObjectName {
- return @"Link To Renamed Properties";
- }
- + (NSDictionary *)_realmColumnNames {
- return @{@"linkC": @"Link A",
- @"linkD": @"Link B"};
- }
- @end
- @implementation RenamedPrimaryKey
- + (NSString *)primaryKey {
- return @"pk";
- }
- + (NSDictionary *)_realmColumnNames {
- return @{@"pk": @"Primary Key",
- @"value": @"Value"};
- }
- @end
- #pragma mark FakeObject
- @implementation FakeObject
- + (Class)objectUtilClass:(BOOL)isSwift { return RLMObjectUtilClass(isSwift); }
- + (NSArray *)ignoredProperties { return nil; }
- + (NSArray *)indexedProperties { return nil; }
- + (NSString *)primaryKey { return nil; }
- + (NSArray *)requiredProperties { return nil; }
- + (NSDictionary *)linkingObjectsProperties { return nil; }
- + (BOOL)shouldIncludeInDefaultSchema { return NO; }
- + (NSString *)_realmObjectName { return nil; }
- + (NSDictionary *)_realmColumnNames { return nil; }
- @end
- #pragma mark ComputedPropertyNotExplicitlyIgnoredObject
- @implementation ComputedPropertyNotExplicitlyIgnoredObject
- - (NSURL *)URL {
- return [NSURL URLWithString:self._URLBacking];
- }
- - (void)setURL:(NSURL *)URL {
- self._URLBacking = URL.absoluteString;
- }
- @end
|