package ome.formats.utests;
import static ome.formats.model.UnitsFactory.convertPower;
import junit.framework.TestCase;
import ome.formats.OMEROMetadataStoreClient;
import ome.formats.importer.ImportConfig;
import ome.formats.importer.OMEROWrapper;
import ome.formats.model.BlitzInstanceProvider;
import ome.formats.model.UnitsFactory;
import ome.units.quantity.Power;
import ome.util.LSID;
import ome.xml.model.enums.LaserMedium;
import ome.xml.model.enums.LaserType;
import ome.xml.model.primitives.PercentFraction;
import ome.xml.model.primitives.PositiveInteger;
import omero.api.ServiceFactoryPrx;
import omero.model.Laser;
import omero.model.LightSettings;
import omero.model.Pixels;
import omero.model.PowerI;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
public class LightSourceSettingsLaserTest extends TestCase
{
private OMEROWrapper wrapper;
private OMEROMetadataStoreClient store;
private static final int LIGHTSOURCE_INDEX = 0;
private static final int INSTRUMENT_INDEX = 0;
private static final int IMAGE_INDEX = 0;
private static final int CHANNEL_INDEX = 0;
Power watt(double d) {
return convertPower(new PowerI(d, UnitsFactory.LightSource_Power));
}
@BeforeMethod
protected void setUp() throws Exception
{
ServiceFactoryPrx sf = new TestServiceFactory().proxy();
wrapper = new OMEROWrapper(new ImportConfig());
store = new OMEROMetadataStoreClient();
store.initialize(sf);
store.setEnumerationProvider(new TestEnumerationProvider());
store.setInstanceProvider(
new BlitzInstanceProvider(store.getEnumerationProvider()));
wrapper.setMetadataStore(store);
// Need to populate at least one pixels field.
store.setPixelsSizeX(new PositiveInteger(1), IMAGE_INDEX);
// First Laser, First LightSourceSettings
store.setLaserModel("Model", INSTRUMENT_INDEX, LIGHTSOURCE_INDEX);
store.setLaserID("Laser:0", INSTRUMENT_INDEX, LIGHTSOURCE_INDEX);
store.setLaserPower(watt(1.0), INSTRUMENT_INDEX, LIGHTSOURCE_INDEX);
store.setLaserFrequencyMultiplication(
new PositiveInteger(1), INSTRUMENT_INDEX, LIGHTSOURCE_INDEX);
store.setChannelLightSourceSettingsID(
"Laser:0", IMAGE_INDEX, CHANNEL_INDEX);
store.setChannelLightSourceSettingsAttenuation(
new PercentFraction(1f), IMAGE_INDEX, CHANNEL_INDEX);
// Second Laser, Second LightSourceSettings
store.setLaserModel("Model", INSTRUMENT_INDEX, LIGHTSOURCE_INDEX + 1);
store.setLaserID("Laser:1", INSTRUMENT_INDEX, LIGHTSOURCE_INDEX + 1);
store.setLaserPower(watt(1.0), INSTRUMENT_INDEX, LIGHTSOURCE_INDEX + 1);
store.setLaserFrequencyMultiplication(
new PositiveInteger(1), INSTRUMENT_INDEX, LIGHTSOURCE_INDEX + 1);
store.setChannelLightSourceSettingsID(
"Laser:1", IMAGE_INDEX, CHANNEL_INDEX + 1);
store.setChannelLightSourceSettingsAttenuation(
new PercentFraction(1f), IMAGE_INDEX, CHANNEL_INDEX + 1);
// Third Laser, Third LightSourceSettings (different orientation)
store.setLaserLaserMedium(
LaserMedium.AR, INSTRUMENT_INDEX, LIGHTSOURCE_INDEX + 2);
store.setLaserType(LaserType.GAS, INSTRUMENT_INDEX, LIGHTSOURCE_INDEX + 2);
store.setLaserID("Laser:2", INSTRUMENT_INDEX, LIGHTSOURCE_INDEX + 2);
store.setChannelLightSourceSettingsID(
"Laser:2", IMAGE_INDEX, CHANNEL_INDEX + 2);
store.setChannelLightSourceSettingsAttenuation(
new PercentFraction(1f), IMAGE_INDEX, CHANNEL_INDEX + 2);
}
@Test
public void testLightSourceCount()
{
LSID lsid = new LSID(Pixels.class, IMAGE_INDEX);
assertNotNull(store.getSourceObject(lsid));
assertEquals(3, store.countCachedContainers(Laser.class));
assertEquals(7, store.countCachedContainers(null));
}
@Test
public void testLightSourceSettingsCount()
{
LSID lsid = new LSID(Pixels.class, IMAGE_INDEX);
assertNotNull(store.getSourceObject(lsid));
assertEquals(3, store.countCachedContainers(Laser.class));
assertEquals(7, store.countCachedContainers(null));
}
@Test
public void testReferences()
{
for (int i = 0; i < 3; i++)
{
LSID imageLsid = new LSID(LightSettings.class, IMAGE_INDEX, i);
assertTrue(store.hasReference(imageLsid, new LSID("Laser:" + i)));
}
assertEquals(3, store.countCachedReferences(null, null));
}
}