@@ -287,6 +287,49 @@ - (void)testUnmanaged {
287
287
__unused ArrayPropertyObject *obj = [[ArrayPropertyObject alloc ] initWithValue: @[@" n" , @[], @[[[IntObject alloc ] initWithValue: @[@1 ]]]]];
288
288
}
289
289
290
+ - (void )testUnmanagedComparision {
291
+ RLMRealm *realm = [self realmWithTestPath ];
292
+
293
+ ArrayPropertyObject *array = [[ArrayPropertyObject alloc ] init ];
294
+ ArrayPropertyObject *array2 = [[ArrayPropertyObject alloc ] init ];
295
+
296
+ array.name = @" name" ;
297
+ array2.name = @" name2" ;
298
+ XCTAssertNotNil (array.array , @" RLMArray property should get created on access" );
299
+ XCTAssertNotNil (array2.array , @" RLMArray property should get created on access" );
300
+ XCTAssertTrue ([array.array isEqual: array2.array], @" Empty arrays should be equal" );
301
+
302
+ XCTAssertNil (array.array .firstObject , @" No objects added yet" );
303
+ XCTAssertNil (array2.array .lastObject , @" No objects added yet" );
304
+
305
+ StringObject *obj1 = [[StringObject alloc ] init ];
306
+ obj1.stringCol = @" a" ;
307
+ StringObject *obj2 = [[StringObject alloc ] init ];
308
+ obj2.stringCol = @" b" ;
309
+ StringObject *obj3 = [[StringObject alloc ] init ];
310
+ obj3.stringCol = @" c" ;
311
+ [array.array addObject: obj1];
312
+ [array.array addObject: obj2];
313
+ [array.array addObject: obj3];
314
+
315
+ [array2.array addObject: obj1];
316
+ [array2.array addObject: obj2];
317
+ [array2.array addObject: obj3];
318
+
319
+ XCTAssertTrue ([array.array isEqual: array2.array], @" Arrays should be equal" );
320
+ [array2.array removeLastObject ];
321
+ XCTAssertFalse ([array.array isEqual: array2.array], @" Arrays should not be equal" );
322
+ [array2.array addObject: obj3];
323
+ XCTAssertTrue ([array.array isEqual: array2.array], @" Arrays should be equal" );
324
+
325
+ [realm beginWriteTransaction ];
326
+ [realm addObject: array];
327
+ [realm commitWriteTransaction ];
328
+
329
+ XCTAssertFalse ([array.array isEqual: array2.array], @" Comparing a managed array to an unmanaged one should fail" );
330
+ XCTAssertFalse ([array2.array isEqual: array.array], @" Comparing a managed array to an unmanaged one should fail" );
331
+ }
332
+
290
333
- (void )testUnmanagedPrimitive {
291
334
AllPrimitiveArrays *obj = [[AllPrimitiveArrays alloc ] init ];
292
335
XCTAssertTrue ([obj.intObj isKindOfClass: [RLMArray class ]]);
0 commit comments