/* * $Id$ * * Copyright 2006 University of Dundee. All rights reserved. * Use is subject to license terms supplied in LICENSE.txt */ package ome.services.blitz.test.utests; import static omero.rtypes.rarray; import static omero.rtypes.rbool; import static omero.rtypes.rclass; import static omero.rtypes.rdouble; import static omero.rtypes.rfloat; import static omero.rtypes.rint; import static omero.rtypes.rlist; import static omero.rtypes.rlong; import static omero.rtypes.robject; import static omero.rtypes.rset; import static omero.rtypes.rstring; import static omero.rtypes.rtime; import java.sql.Timestamp; import java.util.Arrays; import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; import junit.framework.TestCase; import ome.model.annotations.AnnotationAnnotationLink; import ome.model.annotations.CommentAnnotation; import ome.model.containers.Dataset; import ome.model.containers.Project; import ome.model.containers.ProjectDatasetLink; import ome.model.core.Image; import ome.model.core.Pixels; import ome.model.display.CodomainMapContext; import ome.model.display.PlaneSlicingContext; import ome.model.display.RenderingDef; import ome.model.meta.Event; import ome.parameters.Parameters; import omero.RArray; import omero.RBool; import omero.RClass; import omero.RDouble; import omero.RFloat; import omero.RInt; import omero.RList; import omero.RLong; import omero.RObject; import omero.RSet; import omero.RString; import omero.RTime; import omero.RType; import omero.model.AnnotationAnnotationLinkI; import omero.model.CommentAnnotationI; import omero.model.DatasetI; import omero.model.EventI; import omero.model.IObject; import omero.model.ImageI; import omero.model.PlaneSlicingContextI; import omero.model.ProjectDatasetLinkI; import omero.model.ProjectI; import omero.sys.ParametersI; import omero.util.IceMapper; import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test; public class AdapterTest extends TestCase { Project p; Dataset d; Image i; Pixels pix; @Override @BeforeMethod protected void setUp() throws Exception { p = new Project(); d = new Dataset(); i = new Image(); pix = new Pixels(); } @Test public void test_simple() throws Exception { IceMapper mapper = new IceMapper(); ProjectI p_remote = (ProjectI) mapper.map(p); Project p_test = (Project) mapper.reverse(p_remote); } @Test public void test_with_values() throws Exception { p.setName("test"); IceMapper mapper = new IceMapper(); ProjectI p_remote = (ProjectI) mapper.map(p); Project p_test = (Project) mapper.reverse(p_remote); assertTrue("test".equals(p_remote.getName())); assertTrue("test".equals(p_test.getName())); } @Test public void test_with_collections() throws Exception { p.linkDataset(d); IceMapper mapper = new IceMapper(); ProjectI p_remote = (ProjectI) mapper.map(p); Project p_test = (Project) mapper.reverse(p_remote); assertTrue(p_remote.copyDatasetLinks().size() == 1); assertTrue(p_test.sizeOfDatasetLinks() == 1); } @Test public void test_complex() throws Exception { p.linkDataset(d); d.linkImage(i); i.addPixels(pix); IceMapper mapper = new IceMapper(); ProjectI p_remote = (ProjectI) mapper.map(p); Project p_test = (Project) mapper.reverse(p_remote); assertTrue(p_remote.copyDatasetLinks().size() == 1); assertTrue(p_test.sizeOfDatasetLinks() == 1); ProjectDatasetLinkI pdl_remote = (ProjectDatasetLinkI) p_remote .copyDatasetLinks().get(0); ProjectDatasetLink pdl_test = (ProjectDatasetLink) mapper .reverse(pdl_remote); assertTrue(pdl_remote.getParent() == p_remote); assertTrue(pdl_test.parent() != p.collectDatasetLinks(null).get(0)); omero.model.Dataset d_remote = pdl_remote.getChild(); assertTrue(d_remote.sizeOfImageLinks() == 1); omero.model.DatasetImageLink dil_remote = d_remote.copyImageLinks() .get(0); assertTrue(dil_remote.getParent() == d_remote); omero.model.Image i_remote = dil_remote.getChild(); assertTrue(i_remote.sizeOfPixels() == 1); omero.model.Pixels pix_remote = i_remote.copyPixels().get(0); assertTrue(pix_remote.getImage() == i_remote); } @Test public void testInheritance() throws Exception { IceMapper mapper = new IceMapper(); RenderingDef def = new RenderingDef(); CodomainMapContext cmc = new PlaneSlicingContext(); cmc.setRenderingDef(def); PlaneSlicingContextI cmc_remote = (PlaneSlicingContextI) mapper .map(cmc); CodomainMapContext cmc_test = (CodomainMapContext) mapper .reverse(cmc_remote); } @Test public void testUnloadedCollectionIsMappedUnloaded() throws Exception { IceMapper mapper = new IceMapper(); Project p = new Project(); p.putAt(Project.DATASETLINKS, null); assertTrue(p.sizeOfDatasetLinks() < 0); ProjectI p_remote = (ProjectI) mapper.map(p); assert (p_remote.sizeOfDatasetLinks() > 0); } @Test public void testUnloadedCollectionisReversedUnloaded() throws Exception { IceMapper mapper = new IceMapper(); ProjectI p_remote = new ProjectI(); p_remote.unloadDatasetLinks(); Project p = (Project) mapper.reverse(p_remote); assert (p.sizeOfDatasetLinks() < 0); } @Test public void testUnloadedObjectisMappedUnloaded() throws Exception { IceMapper mapper = new IceMapper(); CommentAnnotation pa = new CommentAnnotation(); pa.addAnnotationAnnotationLink(new AnnotationAnnotationLink(1L, false)); CommentAnnotationI pa_remote = (CommentAnnotationI) mapper.map(pa); assertFalse(pa_remote.copyAnnotationLinks().get(0).isLoaded()); } @Test public void testUnloadedObjectIsReversedUnloaded() throws Exception { IceMapper mapper = new IceMapper(); CommentAnnotationI pa_remote = new CommentAnnotationI(); AnnotationAnnotationLinkI p_remote = new AnnotationAnnotationLinkI(); p_remote.unload(); pa_remote.addAnnotationAnnotationLink(p_remote); CommentAnnotation pa = (CommentAnnotation) mapper.reverse(pa_remote); assertFalse(pa.iterateAnnotationLinks().next().isLoaded()); } @Test(groups = "ticket:684") public void testNoDuplicateObjectsWithListsInsteadOfSets() throws Exception { p.linkDataset(d); IceMapper mapper = new IceMapper(); ProjectI p_remote = (ProjectI) mapper.map(p); DatasetI d_remote = (DatasetI) mapper.map(d); long p_sz = p_remote.sizeOfDatasetLinks(); long d_sz = d_remote.sizeOfProjectLinks(); assertTrue(d_sz + "!=1", d_sz == 1L); assertTrue(p_sz + "!=1", p_sz == 1L); } @Test public void testUnloadedCollectionsRemainUnloaded() throws Exception { p.putAt(Project.DATASETLINKS, null); assertTrue(p.sizeOfDatasetLinks() < 0); IceMapper mapper = new IceMapper(); ProjectI p_remote = (ProjectI) mapper.map(p); assertFalse(p_remote.sizeOfDatasetLinks() > 0); // reverse p_remote = new ProjectI(); p_remote.unloadDatasetLinks(); assertFalse(p_remote.sizeOfDatasetLinks() > 0); mapper = new IceMapper(); p = (Project) mapper.reverse(p_remote); assertTrue(p.sizeOfDatasetLinks() < 0); } @Test public void testParameterMapAndPojoOptions() throws Exception { Parameters po = new Parameters(); po.leaves(); po.exp(1L); RList rl = rlist( Arrays.<RType> asList(rstring("a"), rstring("b"))); ParametersI p = new ParametersI(); p.leaves(); p.exp(rlong(1L)); Map<String, RType> map = new HashMap<String, RType>(); map.put("c", rbool(true)); map.put("d", rlong(1L)); IceMapper mapper = new IceMapper(); Map reversed = mapper.reverse(map); Long l = (Long) reversed.get("d"); assertEquals(l, po.getExperimenter()); Boolean b = (Boolean) reversed.get("c"); assertEquals(b, Boolean.valueOf(po.isLeaves())); } @Test public void testRTypes() throws Exception { IceMapper mapper = new IceMapper(); // Nulls assertNull(mapper.fromRType((RString) null)); assertNull(mapper.fromRType((RBool) null)); assertNull(mapper.fromRType((RInt) null)); assertNull(mapper.fromRType((RLong) null)); assertNull(mapper.fromRType((RDouble) null)); assertNull(mapper.fromRType((RClass) null)); assertNull(mapper.fromRType((RFloat) null)); assertNull(mapper.fromRType((RObject) null)); assertNull(mapper.convert((RTime) null)); assertNull(mapper.fromRType((RList) null)); assertNull(mapper.fromRType((RSet) null)); // assertEquals("a", mapper.fromRType(rstring("a"))); assertEquals(1L, mapper.fromRType(rlong(1L))); assertEquals(1, mapper.fromRType(rint(1))); assertEquals(1.0, mapper.fromRType(rdouble(1.0))); assertEquals(1.0f, mapper.fromRType(rfloat(1.0f))); assertEquals(true, mapper.fromRType(rbool(true))); assertEquals(Image.class, mapper.fromRType(rclass("Image"))); IObject obj = new ImageI(1L, false); Image img = (Image) mapper.fromRType(robject(obj)); assertEquals(img.getId(), Long.valueOf(obj.getId().getValue())); RTime time = rtime(1L); Timestamp ts = mapper.convert(time); assertEquals(ts.getTime(), time.getValue()); RArray jarr = rarray(rstring("A")); String[] strings = (String[]) mapper.fromRType(jarr); assertTrue(strings[0].equals("A")); RList jlist = rlist(Arrays.<RType> asList(rstring("L"))); List stringList = (List) mapper.fromRType(jlist); assertTrue(stringList.contains("L")); RSet jset = rset(new HashSet<RType>(Arrays .<RType> asList(rstring("S")))); Set stringSet = (Set) mapper.fromRType(jset); assertTrue(stringSet.contains("S")); } @Test public void testMapsAreProperlyDispatched() throws Exception { IceMapper mapper = new IceMapper(); Map m = new HashMap(); m.put("a", rstring("a")); Map reversed = mapper.reverse(m); assertTrue(reversed.get("a").equals("a")); } @Test(groups = "ticket:737") public void testEventsAndTimes() throws Exception { Event e = new Event(); Timestamp t = new Timestamp(System.currentTimeMillis()); e.setTime(t); IceMapper mapper = new IceMapper(); EventI ei = (EventI) mapper.map(e); assertNotNull(ei.getTime()); } }