/*
* Copyright 2006 University of Dundee. All rights reserved.
* Use is subject to license terms supplied in LICENSE.txt
*/
package ome.server.itests;
import java.util.Arrays;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import junit.framework.TestCase;
import ome.api.IQuery;
import ome.model.containers.Dataset;
import ome.model.containers.Project;
import ome.model.core.Image;
import ome.parameters.Parameters;
import ome.system.OmeroContext;
import ome.system.ServiceFactory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
/**
* tests for an up-and-coming pojos data access
*
*
* @author Josh Moore <a
* href="mailto:josh.moore@gmx.de">josh.moore@gmx.de</a>
* @version 1.0 <small> (<b>Internal version:</b> $Rev$ $Date$) </small>
* @since 2.0
*/
// FIXME
//TODO rename "PojosQuerySourceTest"
@Test(groups = "integration")
public class PojosDaoTest extends TestCase {
private static Logger log = LoggerFactory.getLogger(PojosDaoTest.class);
protected OmeroContext applicationContext;
@BeforeClass
protected void onSetUp() throws Exception {
this.applicationContext = OmeroContext.getManagedServerContext();
_q = new ServiceFactory((OmeroContext) applicationContext)
.getQueryService();
po = new Parameters().exp(1L);
ids = new HashSet<Integer>(Arrays.asList(new Integer[] { 1, 2, 3, 4, 5,
6, 250, 253, 249, 258 }));
m = new HashMap();
m.put("id_list", ids);
m.put("exp", po.getExperimenter());
}
IQuery _q;
Set s;
String q;
Parameters po;
Set<Integer> ids;
Map m = new HashMap();
String n;
private void runLoad(String name, Class c) {
// Class, Set<Container>, options
// q = PojosQueryBuilder.buildLoadQuery(c,false,po.map());
n = name;
go();
}
@Test
public void testLoadProject() {
runLoad("Load_p", Project.class);
}
@Test
public void testLoadDataset() {
runLoad("Load_d", Dataset.class);
}
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~`
private void runFind(String name, Class c) {
// Class, Set<Image>, options
// q = PojosQueryBuilder.buildFindQuery(c,po.map());
n = name;
go();
}
@Test
public void testFindProject() {
runFind("Find_p", Project.class);
}
@Test
public void testFindDataset() {
runFind("Find_d", Dataset.class);
}
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~`
private void runAnn(String name, Class c) {
// Class, Set<Container>, Map
// q = PojosQueryBuilder.buildAnnsQuery(c,po.map());
m.remove("exp"); // unused
n = name;
go();
}
@Test
public void testDatasetAnn() {
runAnn("ann_d", Dataset.class);
}
@Test
public void testImageAnn() {
runAnn("ann_i", Image.class);
}
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~`
private void runGet(String name, Class c) {
// Class, Set<Container>, Map
// q = PojosQueryBuilder.buildGetQuery(c,po.map());
n = name;
go();
}
@Test
public void testGetFromProject() {
runGet("get_p", Project.class);
}
@Test
public void testGetFromDataset() {
runGet("get_p", Dataset.class);
}
// TODO how to run getUserImages
@Test
public void testGetUser() {
m.remove("id_list");
runGet("get_user", Image.class); // TODO make nicer; here
// Image.class=>noIds in template
// could just po.set("noIds")
}
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~`
private void runPaths(String name, String algorithm) {
// Set<Image>, Algorithm options
// q = PojosQueryBuilder.buildPathsQuery(algorithm,po.map());
n = name;
go();
}
@Test
public void testPathsInc() {
runPaths("inc_path", "INCLUSIVE");
}
@Test
public void testPathsExc() {
runPaths("exc_path", "EXCLUSIVE");
}
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~`
private void go() {
log.info(String.format("%n1)NAME: %s%n2)QUERY: %s", n, q));
// s = new HashSet(_q.queryListMap(q,m));
log.info(String.format("%n3)RESULT: %s", s));
}
}