123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130 |
- #import "RLMTestCase.h"
- #import "RLMObjectSchema_Private.h"
- #pragma mark - Test Objects
- @interface IndexedObject : RLMObject
- @property NSString *stringCol;
- @property NSInteger integerCol;
- @property int intCol;
- @property long longCol;
- @property long long longlongCol;
- @property BOOL boolCol;
- @property NSDate *dateCol;
- @property NSNumber<RLMInt> *optionalIntCol;
- @property NSNumber<RLMBool> *optionalBoolCol;
- @property float floatCol;
- @property double doubleCol;
- @property NSData *dataCol;
- @property NSNumber<RLMFloat> *optionalFloatCol;
- @property NSNumber<RLMDouble> *optionalDoubleCol;
- @end
- @implementation IndexedObject
- + (NSArray *)indexedProperties {
- return @[@"stringCol", @"integerCol", @"intCol", @"longCol", @"longlongCol",
- @"boolCol", @"dateCol", @"optionalIntCol", @"optionalBoolCol"];
- }
- @end
- #pragma mark - Tests
- @interface ObjectSchemaTests : RLMTestCase
- @end
- @implementation ObjectSchemaTests
- - (void)testDescription {
- RLMObjectSchema *objectSchema = [RLMObjectSchema schemaForObjectClass:[PrimaryStringObject class]];
- XCTAssertEqualObjects(objectSchema.description, @"PrimaryStringObject {\n"
- @"\tstringCol {\n"
- @"\t\ttype = string;\n"
- @"\t\tobjectClassName = (null);\n"
- @"\t\tlinkOriginPropertyName = (null);\n"
- @"\t\tindexed = YES;\n"
- @"\t\tisPrimary = YES;\n"
- @"\t\tarray = NO;\n"
- @"\t\toptional = NO;\n"
- @"\t}\n"
- @"\tintCol {\n"
- @"\t\ttype = int;\n"
- @"\t\tobjectClassName = (null);\n"
- @"\t\tlinkOriginPropertyName = (null);\n"
- @"\t\tindexed = NO;\n"
- @"\t\tisPrimary = NO;\n"
- @"\t\tarray = NO;\n"
- @"\t\toptional = NO;\n"
- @"\t}\n"
- @"}");
- }
- - (void)testObjectForKeyedSubscript {
- RLMObjectSchema *objectSchema = [RLMObjectSchema schemaForObjectClass:[PrimaryStringObject class]];
- XCTAssertEqualObjects(objectSchema[@"stringCol"].name, @"stringCol");
- XCTAssertEqualObjects(objectSchema[@"intCol"].name, @"intCol");
- XCTAssertNil(objectSchema[@"missing"]);
- }
- - (void)testPrimaryKeyProperty {
- RLMObjectSchema *objectSchema = [RLMObjectSchema schemaForObjectClass:[PrimaryStringObject class]];
- XCTAssertEqualObjects(objectSchema.primaryKeyProperty.name, @"stringCol");
- objectSchema = [RLMObjectSchema schemaForObjectClass:[StringObject class]];
- XCTAssertNil(objectSchema.primaryKeyProperty);
- }
- #pragma mark - Schema Discovery
- - (void)testIgnoredUnsupportedProperty {
- RLMObjectSchema *objectSchema = [RLMObjectSchema schemaForObjectClass:[IgnoredURLObject class]];
- XCTAssertEqual(1U, objectSchema.properties.count);
- XCTAssertEqualObjects(objectSchema.properties[0].name, @"name");
- }
- - (void)testReadOnlyPropertiesImplicitlyIgnored {
- RLMObjectSchema *objectSchema = [RLMObjectSchema schemaForObjectClass:[ReadOnlyPropertyObject class]];
- XCTAssertEqual(1U, objectSchema.properties.count);
- XCTAssertEqualObjects(objectSchema.properties[0].name, @"readOnlyPropertyMadeReadWriteInClassExtension");
- }
- - (void)testIndex {
- RLMObjectSchema *schema = [RLMObjectSchema schemaForObjectClass:[IndexedObject class]];
- XCTAssertTrue(schema[@"stringCol"].indexed);
- XCTAssertTrue(schema[@"integerCol"].indexed);
- XCTAssertTrue(schema[@"intCol"].indexed);
- XCTAssertTrue(schema[@"longCol"].indexed);
- XCTAssertTrue(schema[@"longlongCol"].indexed);
- XCTAssertTrue(schema[@"boolCol"].indexed);
- XCTAssertTrue(schema[@"dateCol"].indexed);
- XCTAssertTrue(schema[@"optionalIntCol"].indexed);
- XCTAssertTrue(schema[@"optionalBoolCol"].indexed);
- XCTAssertFalse(schema[@"floatCol"].indexed);
- XCTAssertFalse(schema[@"doubleCol"].indexed);
- XCTAssertFalse(schema[@"dataCol"].indexed);
- XCTAssertFalse(schema[@"optionalFloatCol"].indexed);
- XCTAssertFalse(schema[@"optionalDoubleCol"].indexed);
- }
- @end
|