res.beginTest();
beginTx(pm, task, threadId, txId);
int oid = getOid(cdctx, (task.txToExecute.length==0), getNbSucc());
C c1 = (C) pm.getObjectById(cdctx.oidsC[oid], false);
C c2 = (C) pm.getObjectById(cdctx.oidsC[oid+1], false);
C c3 = (C) pm.getObjectById(cdctx.oidsC[oid+2], false);
D d1 = (D) pm.getObjectById(cdctx.oidsD[oid], false);
D d2 = (D) pm.getObjectById(cdctx.oidsD[oid+1], false);
D d3 = (D) pm.getObjectById(cdctx.oidsD[oid+2], false);
c1.getDs().add(d1);
assertTrue(d1.getCs().contains(c1));
c1.getDs().add(d2);
assertTrue(d2.getCs().contains(c1));
c2.getDs().add(d1);
assertTrue(d1.getCs().contains(c2));
c2.getDs().add(d2);
assertTrue(d2.getCs().contains(c2));
c2.getDs().add(d3);
assertTrue(d3.getCs().contains(c2));
c3.getDs().add(d2);
assertTrue(d2.getCs().contains(c3));
c3.getDs().add(d3);
assertTrue(d3.getCs().contains(c3));
c1.getDs().add(d3);
assertTrue(d3.getCs().contains(c1));
c1.getDs().remove(d1);
assertTrue(!d1.getCs().contains(c1));
d2.getCs().remove(c2);
assertTrue(!c2.getDs().contains(d2));
c1.setDs(c2.getDs());
commitTx(pm, task, threadId, txId);
assertTrue(c1.getDs().contains(d1));
assertTrue(!c1.getDs().contains(d2));
assertTrue(c1.getDs().contains(d3));
assertTrue(c2.getDs().contains(d1));
assertTrue(!c2.getDs().contains(d2));
assertTrue(c2.getDs().contains(d3));
assertTrue(!c3.getDs().contains(d1));
assertTrue(c3.getDs().contains(d2));
assertTrue(c3.getDs().contains(d3));
assertTrue(d1.getCs().contains(c1));
assertTrue(d1.getCs().contains(c2));
assertTrue(!d1.getCs().contains(c3));