package ome.formats.utests;
import static ome.formats.model.UnitsFactory.convertFrequency;
import static ome.formats.model.UnitsFactory.convertLength;
import static ome.formats.model.UnitsFactory.makeFrequency;
import java.util.LinkedHashMap;
import junit.framework.TestCase;
import ome.formats.Index;
import ome.formats.OMEROMetadataStoreClient;
import ome.formats.model.BlitzInstanceProvider;
import ome.formats.model.UnitsFactory;
import ome.units.UNITS;
import ome.units.quantity.Frequency;
import ome.units.quantity.Length;
import ome.xml.model.enums.LaserMedium;
import ome.xml.model.enums.LaserType;
import ome.xml.model.enums.Pulse;
import omero.api.ServiceFactoryPrx;
import omero.metadatastore.IObjectContainer;
import omero.model.Laser;
import omero.model.LengthI;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
public class LaserTest extends TestCase
{
private OMEROMetadataStoreClient store;
private static final int LIGHTSOURCE_INDEX = 0;
private static final int INSTRUMENT_INDEX = 0;
private static Length makeWave(double d) {
return convertLength(new LengthI(d, UnitsFactory.Channel_EmissionWavelength));
}
private static Frequency hz(double d) {
return convertFrequency(makeFrequency(d, UNITS.HZ));
}
@BeforeMethod
protected void setUp() throws Exception
{
ServiceFactoryPrx sf = new TestServiceFactory().proxy();
store = new OMEROMetadataStoreClient();
store.initialize(sf);
store.setEnumerationProvider(new TestEnumerationProvider());
store.setInstanceProvider(
new BlitzInstanceProvider(store.getEnumerationProvider()));
}
@Test
public void testNewLaserAllAttributes()
{
int i = LIGHTSOURCE_INDEX + 10;
store.setLaserID("Laser:100", INSTRUMENT_INDEX, i);
store.setLaserWavelength(makeWave(100.1), INSTRUMENT_INDEX, i);
store.setLaserType(LaserType.METALVAPOR, INSTRUMENT_INDEX, i);
store.setLaserLaserMedium(LaserMedium.EMINUS, INSTRUMENT_INDEX, i);
store.setLaserPockelCell(true, INSTRUMENT_INDEX, i);
store.setLaserPulse(Pulse.REPETITIVE, INSTRUMENT_INDEX, i);
store.setLaserRepetitionRate(hz(2.0), INSTRUMENT_INDEX, i);
store.setLaserTuneable(true, INSTRUMENT_INDEX, i);
}
@Test
public void testNewLaserIdFirst()
{
int i = LIGHTSOURCE_INDEX + 10;
store.setLaserID("LightSource:100", INSTRUMENT_INDEX, i);
store.setLaserType(LaserType.METALVAPOR, INSTRUMENT_INDEX, i);
LinkedHashMap<Index, Integer> indexes =
new LinkedHashMap<Index, Integer>();
indexes.put(Index.INSTRUMENT_INDEX, INSTRUMENT_INDEX);
indexes.put(Index.LIGHT_SOURCE_INDEX, i);
IObjectContainer laserContainer =
store.getIObjectContainer(Laser.class, indexes);
assertEquals("LightSource:100", laserContainer.LSID);
assertEquals(laserContainer.sourceObject, laserContainer.sourceObject);
}
@Test
public void testNewLaserConcreteAttributeFirst()
{
int i = LIGHTSOURCE_INDEX + 10;
store.setLaserType(LaserType.METALVAPOR, INSTRUMENT_INDEX, i);
store.setLaserID("LightSource:100", INSTRUMENT_INDEX, i);
LinkedHashMap<Index, Integer> indexes =
new LinkedHashMap<Index, Integer>();
indexes.put(Index.INSTRUMENT_INDEX, INSTRUMENT_INDEX);
indexes.put(Index.LIGHT_SOURCE_INDEX, i);
IObjectContainer laserContainer =
store.getIObjectContainer(Laser.class, indexes);
assertEquals("LightSource:100", laserContainer.LSID);
assertEquals(laserContainer.sourceObject, laserContainer.sourceObject);
}
@Test
public void testNewLaserSuperclassAttributeLast()
{
int i = LIGHTSOURCE_INDEX + 10;
store.setLaserID("LightSource:100", INSTRUMENT_INDEX, i);
store.setLaserType(LaserType.METALVAPOR, INSTRUMENT_INDEX, i);
store.setLaserModel("Bar", INSTRUMENT_INDEX, i);
LinkedHashMap<Index, Integer> indexes =
new LinkedHashMap<Index, Integer>();
indexes.put(Index.INSTRUMENT_INDEX, INSTRUMENT_INDEX);
indexes.put(Index.LIGHT_SOURCE_INDEX, i);
IObjectContainer laserContainer =
store.getIObjectContainer(Laser.class, indexes);
assertEquals("LightSource:100", laserContainer.LSID);
assertEquals(laserContainer.sourceObject, laserContainer.sourceObject);
}
}