Esempio n. 1
0
 def create_energy_scannable(name):
     scn = DummyPD(name)
     scn.asynchronousMoveTo(12.39842)
     if VERBOSE:
         print "\nCreated dummy energy scannable:\n   ", name
     if VERBOSE:
         print "    (set dummy energy to 1 Angstrom)"
     return scn
Esempio n. 2
0
class TestWavelength(object):
    def setup_method(self):
        self.en = DummyPD('en')
        self.wl = Wavelength('wl', self.en)

    def testIt(self):
        self.en.asynchronousMoveTo(12.39842)
        assert self.wl.getPosition() == 1

        self.wl.asynchronousMoveTo(1.)
        assert self.wl.getPosition() == 1.
        assert self.en.getPosition() == 12.39842
Esempio n. 3
0
def createScannables(posA=0, posB=0, posC=0, posMie=[1, 2.1]):
    a, b, c = DummyPD('a'), DummyPD('b'), DummyPD('c')
    a.__repr__ = a.getName
    b.__repr__ = b.getName
    c.__repr__ = c.getName
    a.asynchronousMoveTo(posA)
    b.asynchronousMoveTo(posB)
    c.asynchronousMoveTo(posC)
    mie = MultiInputExtraFieldsDummyPD('mie', ['i1', 'i2'], ['e1', 'e2'])
    mie.asynchronousMoveTo(posMie)
    mie.__repr__ = mie.getName
    return (a, b, c, mie)
Esempio n. 4
0
class TestWavelength(object):

    def setup_method(self):
        self.en = DummyPD('en')
        self.wl = Wavelength('wl', self.en)

    def testIt(self):
        self.en.asynchronousMoveTo(12.39842)
        assert self.wl.getPosition() == 1

        self.wl.asynchronousMoveTo(1.)
        assert self.wl.getPosition() == 1.
        assert self.en.getPosition() == 12.39842
class TestWavelength(unittest.TestCase):

    def setUp(self):
        self.en = DummyPD('en')
        self.wl = Wavelength('wl', self.en)

    def testIt(self):
        self.en.asynchronousMoveTo(12.39842)
        self.assertEqual(self.wl.getPosition(), 1)

        self.wl.asynchronousMoveTo(1.)
        self.assertEqual(self.wl.getPosition(), 1.)
        self.assertEqual(self.en.getPosition(), 12.39842)
class Test(unittest.TestCase):

    def setUp(self):
        self.en = DummyPD('en')
        self.alpha = DummyPD('alpha')
        self.delta = DummyPD('delta')
        self.gamma = DummyPD('gamma')
        self.omega = DummyPD('omega')
        self.chi = DummyPD('chi')
        self.phi = DummyPD('phi')
        self.motorList = (self.alpha, self.delta, self.gamma,
                          self.omega, self.chi, self.phi)
        self.motorNames = 'alpha', 'delta', 'gamma', 'omega', 'chi', 'phi'
        self.group = ScannableGroup('group', self.motorList)

    def testDetermineGeometryPlugin(self):
        geometry = SixCircleGeometry()
        _determine_vlieg_geometry = Factory._determine_vlieg_geometry
        self.assertEquals(_determine_vlieg_geometry(geometry), geometry)
        self.assertEquals(_determine_vlieg_geometry('fourc').__class__, Fourc)
        self.assertEquals(_determine_vlieg_geometry('fivec').__class__, Fivec)
        self.assertEquals(_determine_vlieg_geometry('sixc').__class__,
                          SixCircleGeometry)
        self.assertEquals(_determine_vlieg_geometry('sixc_gamma_on_arm').__class__,
                          SixCircleGammaOnArmGeometry)
        self.assertRaises(KeyError, _determine_vlieg_geometry, 'Not a geometry name')
        self.assertRaises(TypeError, _determine_vlieg_geometry, None)
        self.assertRaises(TypeError, _determine_vlieg_geometry, 9999)

    def testDetermineDiffractometerScannableName(self):
        geometry = SixCircleGeometry()
        determine_name = Factory._determine_diffractometer_scannable_name
        self.assertEquals(determine_name('a_name', geometry), 'a_name')
        self.assertEquals(determine_name(None, geometry), 'sixc')
        self.assertRaises(TypeError, determine_name, 1234, None)

    def testCreateDiffractometerScannable_BadInput(self):
        c = Factory._create_diff_and_dummies
        self.assertRaises(
            ValueError, c, self.motorNames, self.motorList, None, 'ncircle')

    def testCreateDiffractometerScannable_FromGroup(self):
        c = Factory._create_diff_and_dummies
        objects = c(None, None, self.group, 'ncircle')
        diffractometerScannable = objects['ncircle']
        self.assert_(isinstance(diffractometerScannable,
                                DiffractometerScannableGroup))
        self.assertEquals(diffractometerScannable.getName(), 'ncircle')
        self.assertEquals(list(diffractometerScannable.getInputNames()),
                          list(self.motorNames))
        self.assertEquals(
            diffractometerScannable._DiffractometerScannableGroup__group,
            self.group)
        self.assertEquals(objects['ncircle'], diffractometerScannable)
        self.assertEquals(len(objects), 1)
        print objects

    def testCreateDiffractometerScannable_FromMotors(self):
        c = Factory._create_diff_and_dummies
        objects = c(None, self.motorList, None, 'ncircle')
        diffractometerScannable = objects['ncircle']
        group = diffractometerScannable._DiffractometerScannableGroup__group
        try:
            motors = group._ScannableGroup__motors
        except AttributeError:
            motors = group.getGroupMembers()
        self.assert_(len(motors), 6)
        self.assertEquals(list(motors), list(self.motorList))
        self.assertEquals(diffractometerScannable.getName(), 'ncircle')
        self.assertEquals(list(diffractometerScannable.getInputNames()),
                          list(self.motorNames))
        self.assertEquals(objects['ncircle'], diffractometerScannable)
        self.assertEquals(len(objects), 1)
        print objects

    def testCreateDiffractometerScannable_FromDummies(self):
        c = Factory._create_diff_and_dummies
        objects = c(self.motorNames, None, None, 'ncircle')
        diffractometerScannable = objects['ncircle']
        group = diffractometerScannable._DiffractometerScannableGroup__group
        try:
            motors = group._ScannableGroup__motors
        except AttributeError:
            motors = group.getGroupMembers()
        self.assert_(len(motors), 6)
        self.assertEquals(list(motors[0].getInputNames()), ['alpha'])
        self.assertEquals(list(objects['alpha'].getInputNames()), ['alpha'])
        self.assertEquals(list(objects['delta'].getInputNames()), ['delta'])
        self.assertEquals(list(objects['gamma'].getInputNames()), ['gamma'])
        self.assertEquals(list(objects['omega'].getInputNames()), ['omega'])
        self.assertEquals(list(objects['chi'].getInputNames()), ['chi'])
        self.assertEquals(list(objects['phi'].getInputNames()), ['phi'])
        self.assertEquals(objects['ncircle'].getName(), 'ncircle')
        self.assertEquals(list(objects['ncircle'].getInputNames()),
                          list(self.motorNames))
        self.assertEquals(len(objects), 7)

    def testBuildWavelengthAndPossiblyEnergyScannable_BadInput(self):
        b = Factory._create_wavelength_and_energy
        self.assertRaises(ValueError, b, 'en_to_make', b, 1)

    def testBuildWavelengthAndPossiblyEnergyScannable_FromReal(self):
        b = Factory._create_wavelength_and_energy
        self.en.asynchronousMoveTo(10)
        objects, energyScannable = b(None, self.en, 1)
        self.assertEquals(energyScannable, self.en)
        self.assertEquals(len(objects), 1)
        wl = objects['wl']
        self.assertEquals(wl.getName(), 'wl')
        self.assertEquals(list(wl.getInputNames()), ['wl'])
        self.assertEquals(wl.getPosition(), 1.2398419999999999)

    def testBuildWavelengthAndPossiblyEnergyScannable_FromDummy(self):
        b = Factory._create_wavelength_and_energy
        objects, energyScannable = b('dummy_en', None, 1)
        self.assertEquals(energyScannable.getName(), 'dummy_en')
        self.assertEquals(list(energyScannable.getInputNames()), ['dummy_en'])
        self.assertEquals(energyScannable.getPosition(), 12.39842)
        self.assertEquals(len(objects), 2)
        self.assertEquals(objects['dummy_en'], energyScannable)
        wl = objects['wl']
        self.assertEquals(wl.getName(), 'wl')
        self.assertEquals(list(wl.getInputNames()), ['wl'])
        self.assertEquals(wl.getPosition(), 1)
        energyScannable.asynchronousMoveTo(10)
        self.assertEquals(wl.getPosition(), 1.2398419999999999)

    def testBuildHklScannableAndComponents(self):
        dc = Mock(spec=Diffcalc)
        ds = MockDiffractometerScannable()
        self.assertRaises(
            TypeError, Factory._create_hkl, ds, dc, ())
        objects = Factory._create_hkl('myhkl', ds, dc, ())
        self.assertEquals(len(objects), 4)
        hkl = objects['myhkl']
        self.assert_(isinstance(hkl, Hkl))
        self.assertEquals(hkl.getName(), 'myhkl')
        self.assertEquals(list(hkl.getInputNames()), ['h', 'k', 'l'])
        self.assertEquals(list(hkl.getExtraNames()), [])
        self.assertEquals(objects['h'], hkl.h)
        self.assertEquals(objects['k'], hkl.k)
        self.assertEquals(objects['l'], hkl.l)

    def testBuildHklVerboseScannable(self):
        dc = Mock(spec=Diffcalc)
        ds = MockDiffractometerScannable()
        self.assertRaises(
            TypeError, Factory._create_hkl_verbose, ds, dc, ())
        objects = Factory._create_hkl_verbose('myhkl', ds, dc, ('a', 'b'))
        self.assertEquals(len(objects), 1)
        hkl = objects['myhkl']
        self.assert_(isinstance(hkl, Hkl))
        self.assertEquals(hkl.getName(), 'myhkl')
        self.assertEquals(list(hkl.getInputNames()), ['h', 'k', 'l'])
        self.assertEquals(list(hkl.getExtraNames()), ['a', 'b'])

    def testCreateParameterScannables(self):
        dc = MockDiffcalc()
        dc._hardware = Mock(spec=HardwareAdapter)
        dc._hardware.get_axes_names.return_value = 'alpha',
        dc.parameter_manager = Mock(spec=VliegParameterManager)
        #dc.parameter_manager.get
        dc.parameter_manager.settable_constraint_names = {
            'alpha': None, 'betain': None, 'oopgamma': None}
        objects = Factory._create_constraint_scannables(dc)
        self.assertEquals(len(objects), 3)
        self.assert_(isinstance(objects['alpha_par'],
                                DiffractionCalculatorParameter))
        self.assert_(isinstance(objects['betain'],
                                DiffractionCalculatorParameter))
        self.assert_(isinstance(objects['oopgamma'],
                                DiffractionCalculatorParameter))

    def testCreateAndAliasCommands(self):
        alias = MockAlias()
        Factory.alias = alias

        def f():
            pass

        def g():
            pass

        objects = Factory._expose_and_alias_commands([f, g])
        self.assertEquals(len(objects), 2)

        self.assertEquals(objects['f'], f)
        self.assertEquals(objects['g'], g)
        self.assertEquals(alias.aliased, ['f', 'g'])

    def testCreateDiffcalcObjects(self):
        virtual_names = '2theta', 'Bin', 'Bout', 'azimuth'
        objects = Factory.create_objects(
            dummy_axis_names=self.motorNames,
            dummy_energy_name='en',
            geometry='sixc',  # Class or name (avoids needing to set path
                                    # before script is run)
            hklverbose_virtual_angles_to_report=virtual_names)
        print objects.keys()

        def assertHas(a, b):
            for aa in a:
                if aa not in b:
                    raise Exception("%s not in %s." % (aa, b))

        expected = ('en', 'wl', 'sixc', 'hkl', 'h', 'k', 'l', 'hklverbose',
                    'sixc', 'dc')
        assertHas(self.motorNames + expected, objects.keys())