Search in sources :

Example 86 with AllJavaTypes

use of io.realm.entities.AllJavaTypes in project realm-java by realm.

the class LinkingObjectsManagedTests method basic_multipleBacklinksObject.

// Setting multiple object links creates multiple backlinks
@Test
public void basic_multipleBacklinksObject() {
    realm.beginTransaction();
    AllJavaTypes child = realm.createObject(AllJavaTypes.class, 1);
    AllJavaTypes parent1 = realm.createObject(AllJavaTypes.class, 2);
    AllJavaTypes parent2 = realm.createObject(AllJavaTypes.class, 3);
    parent1.setFieldObject(child);
    parent2.setFieldObject(child);
    realm.commitTransaction();
    assertEquals(2, child.getObjectParents().size());
}
Also used : AllJavaTypes(io.realm.entities.AllJavaTypes) Test(org.junit.Test)

Example 87 with AllJavaTypes

use of io.realm.entities.AllJavaTypes in project realm-java by realm.

the class LinkingObjectsManagedTests method notification_onDeleteModelObject.

// A listener registered on the backlinked object should be called when a backlinked object is deleted
@Test
@RunTestInLooperThread
public void notification_onDeleteModelObject() {
    final Realm looperThreadRealm = looperThread.realm;
    looperThreadRealm.beginTransaction();
    AllJavaTypes child = looperThreadRealm.createObject(AllJavaTypes.class, 10);
    AllJavaTypes parent = looperThreadRealm.createObject(AllJavaTypes.class, 1);
    parent.setFieldObject(child);
    looperThreadRealm.commitTransaction();
    final AtomicInteger counter = new AtomicInteger(0);
    RealmChangeListener<AllJavaTypes> listener = new RealmChangeListener<AllJavaTypes>() {

        @Override
        public void onChange(AllJavaTypes object) {
            counter.incrementAndGet();
        }
    };
    child.addChangeListener(listener);
    looperThreadRealm.beginTransaction();
    looperThreadRealm.where(AllJavaTypes.class).equalTo("fieldId", 1).findAll().deleteAllFromRealm();
    looperThreadRealm.commitTransaction();
    verifyPostConditions(looperThreadRealm, new PostConditions() {

        public void run(Realm realm) {
            assertEquals(1, looperThreadRealm.where(AllJavaTypes.class).findAll().size());
            assertEquals(1, counter.get());
        }
    }, child, parent);
}
Also used : AtomicInteger(java.util.concurrent.atomic.AtomicInteger) AllJavaTypes(io.realm.entities.AllJavaTypes) RunTestInLooperThread(io.realm.rule.RunTestInLooperThread) Test(org.junit.Test)

Example 88 with AllJavaTypes

use of io.realm.entities.AllJavaTypes in project realm-java by realm.

the class LinkingObjectsManagedTests method notification_notSentAfterUnregisterListenerModelObject.

// A listener registered on the backlinked object should not be called after the listener is removed
@Test
@RunTestInLooperThread
public void notification_notSentAfterUnregisterListenerModelObject() {
    final Realm looperThreadRealm = looperThread.realm;
    looperThreadRealm.beginTransaction();
    AllJavaTypes child = looperThreadRealm.createObject(AllJavaTypes.class, 10);
    looperThreadRealm.commitTransaction();
    RealmChangeListener<AllJavaTypes> listener = new RealmChangeListener<AllJavaTypes>() {

        @Override
        public void onChange(AllJavaTypes object) {
            fail("Not expecting notification after unregister");
        }
    };
    child.addChangeListener(listener);
    child.removeChangeListener(listener);
    looperThreadRealm.beginTransaction();
    AllJavaTypes parent = looperThreadRealm.createObject(AllJavaTypes.class, 1);
    parent.setFieldObject(child);
    looperThreadRealm.commitTransaction();
    verifyPostConditions(looperThreadRealm, new PostConditions() {

        public void run(Realm realm) {
            assertEquals(2, looperThreadRealm.where(AllJavaTypes.class).findAll().size());
        }
    }, child, parent);
}
Also used : AllJavaTypes(io.realm.entities.AllJavaTypes) RunTestInLooperThread(io.realm.rule.RunTestInLooperThread) Test(org.junit.Test)

Example 89 with AllJavaTypes

use of io.realm.entities.AllJavaTypes in project realm-java by realm.

the class LinkingObjectsManagedTests method query_startWithBacklink.

// Query on a field descriptor starting with a backlink
// The test objects are:
//             gen1
//             / \
//         gen2A gen2B
//           \\   //
//            gen3
//  /  = object ref
//  // = list ref
@Test
@Ignore
public void query_startWithBacklink() {
    realm.beginTransaction();
    AllJavaTypes gen1 = realm.createObject(AllJavaTypes.class, 10);
    AllJavaTypes gen2A = realm.createObject(AllJavaTypes.class, 1);
    gen2A.setFieldObject(gen1);
    AllJavaTypes gen2B = realm.createObject(AllJavaTypes.class, 2);
    gen2B.setFieldObject(gen1);
    AllJavaTypes gen3 = realm.createObject(AllJavaTypes.class, 3);
    RealmList<AllJavaTypes> parents = gen3.getFieldList();
    parents.add(gen2A);
    parents.add(gen2B);
    realm.commitTransaction();
    RealmResults<AllJavaTypes> result = realm.where(AllJavaTypes.class).greaterThan("objectParents.fieldId", 1).findAll();
    assertEquals(1, result.size());
    assertTrue(result.contains(gen2B));
}
Also used : AllJavaTypes(io.realm.entities.AllJavaTypes) Ignore(org.junit.Ignore) Test(org.junit.Test)

Example 90 with AllJavaTypes

use of io.realm.entities.AllJavaTypes in project realm-java by realm.

the class LinkingObjectsUnmanagedTests method copyFromRealm.

// When unmanaged, an object's backlinks fields have their initialized value (probably null).
@Test
public void copyFromRealm() {
    realm.beginTransaction();
    AllJavaTypes child = realm.createObject(AllJavaTypes.class, 1);
    AllJavaTypes parent = realm.createObject(AllJavaTypes.class, 2);
    parent.setFieldObject(child);
    realm.commitTransaction();
    assertEquals(1, child.getObjectParents().size());
    assertEquals(parent, child.getObjectParents().first());
    AllJavaTypes unmanagedChild = realm.copyFromRealm(child);
    assertEquals(new AllJavaTypes().getObjectParents(), unmanagedChild.getObjectParents());
}
Also used : AllJavaTypes(io.realm.entities.AllJavaTypes) Test(org.junit.Test)

Aggregations

AllJavaTypes (io.realm.entities.AllJavaTypes)90 Test (org.junit.Test)78 UiThreadTest (android.support.test.annotation.UiThreadTest)24 RunTestInLooperThread (io.realm.rule.RunTestInLooperThread)10 AtomicInteger (java.util.concurrent.atomic.AtomicInteger)6 Date (java.util.Date)5 RealmException (io.realm.exceptions.RealmException)4 Ignore (org.junit.Ignore)3 CountDownLatch (java.util.concurrent.CountDownLatch)2 ExecutionException (java.util.concurrent.ExecutionException)2 ExecutorService (java.util.concurrent.ExecutorService)2 ExpectedException (org.junit.rules.ExpectedException)2 Pair (android.util.Pair)1 CyclicType (io.realm.entities.CyclicType)1 Dog (io.realm.entities.Dog)1 NonLatinFieldNames (io.realm.entities.NonLatinFieldNames)1 PrimaryKeyAsString (io.realm.entities.PrimaryKeyAsString)1 RealmPrimaryKeyConstraintException (io.realm.exceptions.RealmPrimaryKeyConstraintException)1 RunInLooperThread (io.realm.rule.RunInLooperThread)1 Field (java.lang.reflect.Field)1