/*
* Copyright 2007-2014 Glencoe Software, Inc. All rights reserved.
* Use is subject to license terms supplied in LICENSE.txt
*/
package ome.services.blitz.test.utests;
import static omero.rtypes.rdouble;
import static omero.rtypes.rstring;
import static ome.formats.model.UnitsFactory.makePower;
import java.util.HashMap;
import java.util.Map;
import junit.framework.TestCase;
import ome.model.containers.Dataset;
import ome.model.containers.Project;
import ome.model.core.Image;
import ome.model.core.Pixels;
import ome.model.meta.Experimenter;
import ome.model.meta.ExperimenterGroup;
import ome.units.UNITS;
import omero.model.ArcI;
import omero.model.ChannelI;
import omero.model.DatasetI;
import omero.model.DatasetImageLink;
import omero.model.EventI;
import omero.model.ExperimenterGroupI;
import omero.model.ExperimenterI;
import omero.model.ImageI;
import omero.model.PixelsI;
import omero.model.ProjectI;
import omero.util.IceMapper;
import org.testng.annotations.Test;
public class ModelTest extends TestCase {
@Test(groups = "ticket:636")
public void testInheritanceInConcreteClasses() throws Exception {
ArcI arcI = new ArcI();
// arcI.unload();
arcI.setPower(makePower(1.0f, UNITS.WATT));
}
@Test
public void testMapper() throws Exception {
Experimenter e = new Experimenter();
e.setOmeName("hi");
e.setLdap(false);
e.linkExperimenterGroup(new ExperimenterGroup("foo", false));
IceMapper mapper = new IceMapper();
ExperimenterI ei = (ExperimenterI) mapper.map(e);
assertEquals(new Integer(1), new Integer(ei
.sizeOfGroupExperimenterMap()));
}
@Test
public void testCopyObject() throws Exception {
Experimenter e = new Experimenter();
e.setOmeName("hi");
e.setLdap(false);
e.linkExperimenterGroup(new ExperimenterGroup("foo", false));
ExperimenterI ei = new ExperimenterI();
ei.copyObject(e, new IceMapper());
// This may not hold without being called from the top level mapper
// method
// assertEquals(new Integer(1), new
// Integer(ei.sizeOfGroupExperimenterMap()));
Pixels p = new Pixels();
Image i = new Image();
p.setImage(i);
p.getDetails().setOwner(e);
new PixelsI().copyObject(p, new IceMapper());
}
@Test
public void testFillObject() throws Exception {
ExperimenterI ei = new ExperimenterI();
ei.setOmeName(rstring("name"));
ei.linkExperimenterGroup(new ExperimenterGroupI());
Experimenter e = (Experimenter) ei.fillObject(new IceMapper());
assertEquals(new Integer(1),
new Integer(e.sizeOfGroupExperimenterMap()));
PixelsI p = new PixelsI();
ImageI i = new ImageI();
p.setImage(i);
p.getDetails().setOwner(ei);
p.fillObject(new IceMapper());
}
@Test
public void testCounts() throws Exception {
Map<Long, Long> counts = new HashMap<Long, Long>();
counts.put(1L, 1L);
class CExperimenter extends Experimenter {
CExperimenter(Map<Long, Long> counts) {
setAnnotationLinksCountPerOwner(counts);
}
}
Experimenter e = new CExperimenter(counts);
ExperimenterI ei = new ExperimenterI();
ei.copyObject(e, new IceMapper());
Map<Long, Long> countsi = ei.getAnnotationLinksCountPerOwner();
assertEquals(new Long(1L), countsi.get(1L));
}
@Test
public void testLoadedness1() throws Exception {
ExperimenterGroup g = new ExperimenterGroup();
Experimenter e = new Experimenter();
Project p = new Project();
p.getDetails().setOwner(e);
e.linkExperimenterGroup(g);
assertEquals(1, e.sizeOfGroupExperimenterMap());
IceMapper mapper = new IceMapper();
ProjectI pi = (ProjectI) mapper.handleOutput(Project.class, p);
ExperimenterI ei = (ExperimenterI) pi.getDetails().getOwner();
assertEquals(1, e.sizeOfGroupExperimenterMap());
}
@Test
public void testLoadedness2() throws Exception {
ExperimenterGroup g = new ExperimenterGroup();
Experimenter e = new Experimenter();
e.linkExperimenterGroup(g);
Project p = new Project();
p.getDetails().setOwner(e);
p.getDetails().setGroup(g);
Dataset d = new Dataset();
d.getDetails().setOwner(e);
d.getDetails().setGroup(g);
p.linkDataset(d); // Adding an extra object
assertEquals(1, e.sizeOfGroupExperimenterMap());
IceMapper mapper = new IceMapper();
ProjectI pi = (ProjectI) mapper.handleOutput(Project.class, p);
ExperimenterI ei = (ExperimenterI) pi.getDetails().getOwner();
ExperimenterGroupI gi = (ExperimenterGroupI) pi.getDetails().getGroup();
assertEquals(1, ei.sizeOfGroupExperimenterMap());
assertEquals(1, gi.sizeOfGroupExperimenterMap());
}
@Test
public void testLoadedness3() throws Exception {
Experimenter e = new Experimenter();
e.putAt(Experimenter.GROUPEXPERIMENTERMAP, null);
Project p = new Project();
p.getDetails().setOwner(e);
assertEquals(-1, e.sizeOfGroupExperimenterMap());
IceMapper mapper = new IceMapper();
ProjectI pi = (ProjectI) mapper.handleOutput(Project.class, p);
ExperimenterI ei = (ExperimenterI) pi.getDetails().getOwner();
assertEquals(-1, ei.sizeOfGroupExperimenterMap());
}
@Test
public void testRemoval() throws Exception {
omero.model.Image i = new ImageI();
assertEquals(0, i.sizeOfDatasetLinks());
DatasetImageLink link = i.linkDataset(new DatasetI());
assertEquals(1, i.sizeOfDatasetLinks());
i.removeDatasetImageLink(link);
assertEquals(0, i.sizeOfDatasetLinks());
link = i.linkDataset(new DatasetI());
assertEquals(1, i.sizeOfDatasetLinks());
i.removeDatasetImageLinkFromBoth(link, true);
assertEquals(0, i.sizeOfDatasetLinks());
omero.model.Dataset d = new DatasetI();
i.linkDataset(d);
assertEquals(1, i.sizeOfDatasetLinks());
i.unlinkDataset(d);
assertEquals(0, i.sizeOfDatasetLinks());
}
@Test
public void testReloading() throws Exception {
// This is our "real" graph
omero.model.Image i = new ImageI(1L, true);
i.getDetails().setUpdateEvent(new EventI(1L, false));
omero.model.Dataset d = new DatasetI(1L, true);
d.getDetails().setUpdateEvent(new EventI(1L, false));
i.linkDataset(d);
assertEquals(1, i.sizeOfDatasetLinks());
i.unloadDatasetLinks();
assertEquals(-1, i.sizeOfDatasetLinks());
// We shouldn't be able to reload from just any image
omero.model.Image badId = new ImageI(666L, true);
badId.getDetails().setUpdateEvent(new EventI(1L, false));
omero.model.Image badUp = new ImageI(1L, true);
badUp.getDetails().setUpdateEvent(new EventI(0L, false));
try {
i.reloadDatasetLinks(badId);
fail();
} catch (omero.ClientError ce) {
// good
}
try {
i.reloadDatasetLinks(badUp);
fail();
} catch (omero.ClientError ce) {
// good
}
// From this we want to reload
omero.model.Image i2 = new ImageI(1L, true);
i2.getDetails().setUpdateEvent(new EventI(1L, false));
omero.model.Dataset d2 = new DatasetI(1L, true);
i2.linkDataset(d2);
assertEquals(1, i2.sizeOfDatasetLinks());
i.reloadDatasetLinks(i2);
assertEquals(1, i.sizeOfDatasetLinks());
assertEquals(-1, i2.sizeOfDatasetLinks());
}
@Test(groups = "ticket:2547")
public void testOrderedCollectionsTicket2547() {
PixelsI pixels = new PixelsI();
ChannelI channel0 = new ChannelI();
ChannelI channel1 = new ChannelI();
pixels.addChannel(channel0);
assertEquals(1, pixels.sizeOfChannels());
ChannelI old = (ChannelI) pixels.setChannel(0, channel1);
assertEquals(old, channel0);
assertEquals(1, pixels.sizeOfChannels());
}
}