/*
* $Id$
*
* Copyright 2006 University of Dundee. All rights reserved.
* Use is subject to license terms supplied in LICENSE.txt
*/
package ome.server.utests;
import java.util.Map;
import ome.model.containers.Dataset;
import ome.model.containers.Project;
import ome.services.query.Hierarchy;
import org.hibernate.Criteria;
import org.hibernate.transform.ResultTransformer;
import org.jmock.Mock;
import org.jmock.MockObjectTestCase;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
public class HierarchyTest extends MockObjectTestCase {
// ~ Testng Adapter
// =========================================================================
@BeforeMethod
@Override
protected void setUp() throws Exception {
mockCriteria = mock(Criteria.class);
}
@AfterMethod
@Override
protected void tearDown() throws Exception {
mockCriteria.reset();
}
Mock mockCriteria;
/*
* Test method for 'ome.services.query.Hierarchy.fetchParents(Criteria,
* Class, int)'
*/
@Test
public void testFetchParentsProject() {
addCreateCriteriaToMock(mockCriteria,
"datasetLinks.parent.projectLinks.parent");
Hierarchy.fetchParents((Criteria) mockCriteria.proxy(), Project.class,
2);
}
/*
* Test method for 'ome.services.query.Hierarchy.fetchParents(Criteria,
* Class, int)'
*/
@Test
public void testFetchParentsDataset() {
addCreateCriteriaToMock(mockCriteria, "datasetLinks.parent");
Hierarchy.fetchParents((Criteria) mockCriteria.proxy(), Dataset.class,
1);
}
// TODO need with depth less than MAX
/*
* Test method for 'ome.services.query.Hierarchy.fetchChildren(Criteria,
* Class, int)'
*/
@Test
public void testFetchChildrenProject() {
addCreateCriteriaToMock(mockCriteria,
"datasetLinks.child.imageLinks.child");
Hierarchy.fetchChildren((Criteria) mockCriteria.proxy(), Project.class,
2);
}
/*
* Test method for 'ome.services.query.Hierarchy.fetchChildren(Criteria,
* Class, int)'
*/
@Test
public void testFetchChildrenDataset() {
addCreateCriteriaToMock(mockCriteria, "imageLinks.child");
Hierarchy.fetchChildren((Criteria) mockCriteria.proxy(), Dataset.class,
1);
}
// TODO join is not currently used.
/*
* Test method for 'ome.services.query.Hierarchy.joinParents(Criteria,
* Class, int)'
*/
@Test
public void testJoinParents() {
}
/*
* Test method for 'ome.services.query.Hierarchy.joinChildren(Criteria,
* Class, int)'
*/
@Test
public void testJoinChildren() {
}
Object _this = new Object(), i_1 = new Object(), i_2 = new Object(),
l_1 = new Object(), l_2 = new Object();
Object[] o = new Object[] { _this, i_1, i_2, l_1, l_2 };
String[] s = new String[] { "this", "genitem_1", "genitem_2", "genlink_1",
"genlink_2" };
/*
* Test method for 'ome.services.query.Hierarchy.getChildTransformer(Class)'
*/
@Test
public void testGetChildTransformerProject() {
ResultTransformer rt = Hierarchy.getChildTransformer(Project.class);
Map<String, Object> m = (Map) rt.transformTuple(o, s);
assertTrue(m.containsKey(Project.class.getName()));
assertEquals(_this, m.get(Project.class.getName()));
assertTrue(m.containsKey(Dataset.class.getName()));
assertEquals(i_1, m.get(Dataset.class.getName()));
}
/*
* Test method for
* 'ome.services.query.Hierarchy.getParentTransformer(Class)'
*/
@Test
public void testGetParentTransformer() {
}
// ~ Helpers
// =========================================================================
private void addCreateCriteriaToMock(Mock mock, String dotSeparatedPath) {
String[] paths = dotSeparatedPath.split("[.]");
for (String path : paths) {
mock.expects(once()).method("createCriteria").with(
stringContains(path), ANYTHING, eq(Criteria.LEFT_JOIN))
.will(returnValue(null));
}
}
}