class TestHkl(unittest.TestCase): def setUp(self): self.mockDiffcalc = mock.Mock(spec=diffcalc_.Diffcalc) self.mockSixc = mock.Mock(spec=DiffractometerScannableGroup) self.hkl = Hkl('hkl', self.mockSixc, self.mockDiffcalc) def testInit(self): self.mockDiffcalc.angles_to_hkl.return_value = ([1, 2, 3], PARAM_DICT) self.assertEqual(self.hkl.getPosition(), [1, 2, 3]) def testAsynchronousMoveTo(self): self.mockDiffcalc.hkl_to_angles.return_value = ([6, 5, 4, 3, 2, 1], None) self.hkl.asynchronousMoveTo([1, 0, 1]) self.mockDiffcalc.hkl_to_angles.assert_called_with(1, 0, 1) self.mockSixc.asynchronousMoveTo.assert_called_with([6, 5, 4, 3, 2, 1]) def testGetPosition(self): self.mockSixc.getPosition.return_value = [6, 5, 4, 3, 2, 1] self.mockDiffcalc.angles_to_hkl.return_value = ([1, 0, 1], PARAM_DICT) self.assertEqual(self.hkl.getPosition(), [1, 0, 1]) self.mockDiffcalc.angles_to_hkl.assert_called_with([6, 5, 4, 3, 2, 1]) def testAsynchronousMoveToWithNonesOutsideScan(self): self.mockSixc.getPosition.return_value = [6, 5, 4, 3, 2, 1] self.mockDiffcalc.angles_to_hkl.return_value = ([1, 0, 1], PARAM_DICT) self.mockDiffcalc.hkl_to_angles.return_value = ([12, 5, 4, 3, 2, 1], PARAM_DICT) # <- 2,0,1 self.hkl.asynchronousMoveTo([2, 0, None]) self.mockDiffcalc.angles_to_hkl.assert_called_with([6, 5, 4, 3, 2, 1]) self.mockDiffcalc.hkl_to_angles.assert_called_with(2, 0, 1) self.mockSixc.asynchronousMoveTo.assert_called_with( [12, 5, 4, 3, 2, 1]) def testAsynchronousMoveToWithNonesInScan(self): self.mockSixc.getPosition.return_value = [6, 5, 4, 3, 2, 1] self.mockDiffcalc.angles_to_hkl.return_value = ([1, 0, 1], PARAM_DICT) self.hkl.atScanStart() # should not be used: self.mockSixc.getPosition.return_value = [6.1, 5.1, 4.1, 3.1, 2.1, 1.1] self.mockDiffcalc.hkl_to_angles.return_value = ([12, 5, 4, 3, 2, 1], PARAM_DICT) self.hkl.asynchronousMoveTo([2, 0, None]) # atScanStart: self.mockDiffcalc.angles_to_hkl.assert_called_with([6, 5, 4, 3, 2, 1]) self.mockDiffcalc.hkl_to_angles.assert_called_with(2, 0, 1) self.mockSixc.asynchronousMoveTo.assert_called_with( [12, 5, 4, 3, 2, 1]) def testAsynchronousMoveToWithNonesInScanAfterCommandFailure(self): # should be forgotten: self.mockSixc.getPosition.return_value = [6, 5, 4, 3, 2, 1] self.mockDiffcalc.angles_to_hkl.return_value = ([1, 0, 1], PARAM_DICT) self.hkl.atScanStart() self.hkl.atCommandFailure() self.mockSixc.getPosition.return_value = [6.1, 5.1, 4.1, 3.1, 2.1, 1.1] self.mockDiffcalc.hkl_to_angles.return_value = ( [12.1, 5.1, 4.1, 3.1, 2.1, 1.1], PARAM_DICT) self.hkl.asynchronousMoveTo([2, 0, None]) self.mockDiffcalc.angles_to_hkl.assert_called_with( [6.1, 5.1, 4.1, 3.1, 2.1, 1.1]) self.mockDiffcalc.hkl_to_angles.assert_called_with(2, 0, 1) self.mockSixc.asynchronousMoveTo.assert_called_with( [12.1, 5.1, 4.1, 3.1, 2.1, 1.1]) def testAsynchronousMoveToWithNonesInScanAfterAtScanEnd(self): self.mockSixc.getPosition.return_value = [6, 5, 4, 3, 2, 1] self.mockDiffcalc.angles_to_hkl.return_value = ([1, 0, 1], PARAM_DICT) self.hkl.atScanStart() self.hkl.atScanEnd() self.mockSixc.getPosition.return_value = [6.1, 5.1, 4.1, 3.1, 2.1, 1.1] self.mockDiffcalc.hkl_to_angles.return_value = ( [12.1, 5.1, 4.1, 3.1, 2.1, 1.1], PARAM_DICT) self.hkl.asynchronousMoveTo([2, 0, None]) self.mockDiffcalc.angles_to_hkl.assert_called_with( [6.1, 5.1, 4.1, 3.1, 2.1, 1.1]) self.mockDiffcalc.hkl_to_angles.assert_called_with(2, 0, 1) self.mockSixc.asynchronousMoveTo.assert_called_with( [12.1, 5.1, 4.1, 3.1, 2.1, 1.1]) def testIsBusy(self): self.mockSixc.isBusy.return_value = False self.assertFalse(self.hkl.isBusy(), False) self.mockSixc.isBusy.assert_called() def testWaitWhileBusy(self): self.hkl.waitWhileBusy() self.mockSixc.waitWhileBusy.assert_called() def testWhereMoveTo(self): # just check for exceptions self.mockDiffcalc.hkl_to_angles.return_value = ([6, 5, 4, 3, 2, 1], PARAM_DICT) self.mockSixc.getName.return_value = 'sixc' self.mockSixc.getInputNames.return_value = ['alpha', 'delta', 'gamma', 'omega', 'chi', 'phi'] print self.hkl.simulateMoveTo((1.23, 0, 0)) def testDisp(self): print self.hkl.__repr__()
class TestHkl(object): def setup_method(self): self.mock_dc_module = mock.Mock() self.mockSixc = mock.Mock(spec=DiffractometerScannableGroup) self.hkl = Hkl('hkl', self.mockSixc, self.mock_dc_module) def testInit(self): self.mock_dc_module.angles_to_hkl.return_value = ([1, 2, 3], PARAM_DICT) assert self.hkl.getPosition() == [1, 2, 3] def testAsynchronousMoveTo(self): self.mock_dc_module.hkl_to_angles.return_value = ([6, 5, 4, 3, 2, 1], None) self.hkl.asynchronousMoveTo([1, 0, 1]) self.mock_dc_module.hkl_to_angles.assert_called_with(1, 0, 1) self.mockSixc.asynchronousMoveTo.assert_called_with([6, 5, 4, 3, 2, 1]) def testGetPosition(self): self.mockSixc.getPosition.return_value = [6, 5, 4, 3, 2, 1] self.mock_dc_module.angles_to_hkl.return_value = ([1, 0, 1], PARAM_DICT) assert self.hkl.getPosition() == [1, 0, 1] self.mock_dc_module.angles_to_hkl.assert_called_with([6, 5, 4, 3, 2, 1]) def testAsynchronousMoveToWithNonesOutsideScan(self): self.mockSixc.getPosition.return_value = [6, 5, 4, 3, 2, 1] self.mock_dc_module.angles_to_hkl.return_value = ([1, 0, 1], PARAM_DICT) self.mock_dc_module.hkl_to_angles.return_value = ([12, 5, 4, 3, 2, 1], PARAM_DICT) # <- 2,0,1 self.hkl.asynchronousMoveTo([2, 0, None]) self.mock_dc_module.angles_to_hkl.assert_called_with([6, 5, 4, 3, 2, 1]) self.mock_dc_module.hkl_to_angles.assert_called_with(2, 0, 1) self.mockSixc.asynchronousMoveTo.assert_called_with( [12, 5, 4, 3, 2, 1]) def testAsynchronousMoveToWithNonesInScan(self): self.mockSixc.getPosition.return_value = [6, 5, 4, 3, 2, 1] self.mock_dc_module.angles_to_hkl.return_value = ([1, 0, 1], PARAM_DICT) self.hkl.atScanStart() # should not be used: self.mockSixc.getPosition.return_value = [6.1, 5.1, 4.1, 3.1, 2.1, 1.1] self.mock_dc_module.hkl_to_angles.return_value = ([12, 5, 4, 3, 2, 1], PARAM_DICT) self.hkl.asynchronousMoveTo([2, 0, None]) # atScanStart: self.mock_dc_module.angles_to_hkl.assert_called_with([6, 5, 4, 3, 2, 1]) self.mock_dc_module.hkl_to_angles.assert_called_with(2, 0, 1) self.mockSixc.asynchronousMoveTo.assert_called_with( [12, 5, 4, 3, 2, 1]) def testAsynchronousMoveToWithNonesInScanAfterCommandFailure(self): # should be forgotten: self.mockSixc.getPosition.return_value = [6, 5, 4, 3, 2, 1] self.mock_dc_module.angles_to_hkl.return_value = ([1, 0, 1], PARAM_DICT) self.hkl.atScanStart() self.hkl.atCommandFailure() self.mockSixc.getPosition.return_value = [6.1, 5.1, 4.1, 3.1, 2.1, 1.1] self.mock_dc_module.hkl_to_angles.return_value = ( [12.1, 5.1, 4.1, 3.1, 2.1, 1.1], PARAM_DICT) self.hkl.asynchronousMoveTo([2, 0, None]) self.mock_dc_module.angles_to_hkl.assert_called_with( [6.1, 5.1, 4.1, 3.1, 2.1, 1.1]) self.mock_dc_module.hkl_to_angles.assert_called_with(2, 0, 1) self.mockSixc.asynchronousMoveTo.assert_called_with( [12.1, 5.1, 4.1, 3.1, 2.1, 1.1]) def testAsynchronousMoveToWithNonesInScanAfterAtScanEnd(self): self.mockSixc.getPosition.return_value = [6, 5, 4, 3, 2, 1] self.mock_dc_module.angles_to_hkl.return_value = ([1, 0, 1], PARAM_DICT) self.hkl.atScanStart() self.hkl.atScanEnd() self.mockSixc.getPosition.return_value = [6.1, 5.1, 4.1, 3.1, 2.1, 1.1] self.mock_dc_module.hkl_to_angles.return_value = ( [12.1, 5.1, 4.1, 3.1, 2.1, 1.1], PARAM_DICT) self.hkl.asynchronousMoveTo([2, 0, None]) self.mock_dc_module.angles_to_hkl.assert_called_with( [6.1, 5.1, 4.1, 3.1, 2.1, 1.1]) self.mock_dc_module.hkl_to_angles.assert_called_with(2, 0, 1) self.mockSixc.asynchronousMoveTo.assert_called_with( [12.1, 5.1, 4.1, 3.1, 2.1, 1.1]) def testIsBusy(self): self.mockSixc.isBusy.return_value = False assert not self.hkl.isBusy() self.mockSixc.isBusy.assert_called() def testWaitWhileBusy(self): self.hkl.waitWhileBusy() self.mockSixc.waitWhileBusy.assert_called() def testWhereMoveTo(self): # just check for exceptions self.mock_dc_module.hkl_to_angles.return_value = ([6, 5, 4, 3, 2, 1], PARAM_DICT) self.mockSixc.getName.return_value = 'sixc' self.mockSixc.getInputNames.return_value = ['alpha', 'delta', 'gamma', 'omega', 'chi', 'phi'] print self.hkl.simulateMoveTo((1.23, 0, 0)) def testDisp(self): print self.hkl.__repr__()
class ZAxisGammaOnBaseTest(TestSixcBase): def setup_method(self): TestSixcBase.createDiffcalcAndScannables(self, SixCircleGeometry) self.hklverbose = Hkl('hkl', self.sixc, self.dc, ('Bout')) self.orient() def orient(self): self.dc.newub('From DDIF') self.dc.setlat('cubic', 1, 1, 1) self.en(12.39842 / 1) self.dc.setu([[1, 0, 0], [0, 1, 0], [0, 0, 1]]) self.dc.hklmode(20) # zaxis, bisecting self.dc.sigtau(0, 0) def checkHKL(self, hkl, adgocp=None, betaout=None, nu=None): self.hklverbose.asynchronousMoveTo(hkl) aneq_(self.sixc(), list(adgocp), 3) aneq_(self.hklverbose(), (hkl[0], hkl[1], hkl[2], betaout), 3) def testHKL_001(self): self.checkHKL([0, 0.0000001, 1], [30, 0, 60, 90, 0, 0], betaout=30, nu=0) def testHKL_010(self): self.checkHKL([0, 1, 0], [0, 60, 0, 120, 0, 0], betaout=0, nu=0) def testHKL_011(self): self.checkHKL([0, 1, 1], [30, 54.7356, 90, 125.2644, 0, 0], betaout=30, nu=-54.7356) def testHKL_100(self): self.checkHKL([1, 0, 0], [0, 60, 0, 30, 0, 0], betaout=0, nu=0) def testHKL_101(self): self.checkHKL([1, 0, 1], [30, 54.7356, 90, 35.2644, 0, 0], betaout=30, nu=-54.7356) def testHKL_110(self): #TODO: Modify test to ask that in this case gamma is left unmoved self.checkHKL([1, 1, 0], [0, 90, 0, 90, 0, 0], betaout=0, nu=0) def testHKL_1_1_0001(self): self.checkHKL([1, 1, .0001], [0.0029, 89.9971, 90.0058, 90., 0, 0], betaout=0.0029, nu=89.9971) def testHKL_111(self): self.checkHKL([1, 1, 1], [30, 54.7356, 150, 99.7356, 0, 0], betaout=30, nu=54.7356) def testHKL_11_0_0(self): self.checkHKL([1.1, 0, 0], [0, 66.7340, 0., 33.3670, 0, 0], betaout=0, nu=0) def testHKL_09_0_0(self): self.checkHKL([.9, 0, 0], [0, 53.4874, 0, 26.7437, 0, 0], betaout=0, nu=0) def testHKL_07_08_08(self): self.checkHKL([.7, .8, .8], [23.5782, 59.9980, 76.7037, 84.2591, 0, 0], betaout=23.5782, nu=-49.1014) def testHKL_07_08_09(self): self.checkHKL([.7, .8, .9], [26.7437, 58.6754, 86.6919, 85.3391, 0, 0], betaout=26.7437, nu=-55.8910) def testHKL_07_08_1(self): self.checkHKL([.7, .8, 1], [30, 57.0626, 96.8659, 86.6739, 0, 0], betaout=30, nu=-63.0210)
class ZAxisGammaOnBaseTest(TestSixcBase): def setup_method(self): TestSixcBase.createDiffcalcAndScannables(self, SixCircleGeometry) self.hklverbose = Hkl('hkl', self.sixc, self.dc, ('Bout')) self.orient() def orient(self): self.dc.newub('From DDIF') self.dc.setlat('cubic', 1, 1, 1) self.en(12.39842 / 1) self.dc.setu([[1, 0, 0], [0, 1, 0], [0, 0, 1]]) self.dc.hklmode(20) # zaxis, bisecting self.dc.sigtau(0, 0) def checkHKL(self, hkl, adgocp=None, betaout=None, nu=None): self.hklverbose.asynchronousMoveTo(hkl) aneq_(self.sixc(), list(adgocp), 3) aneq_(self.hklverbose(), (hkl[0], hkl[1], hkl[2], betaout), 3) def testHKL_001(self): self.checkHKL([0, 0.0000001, 1], [30, 0, 60, 90, 0, 0], betaout=30, nu=0) def testHKL_010(self): self.checkHKL([0, 1, 0], [0, 60, 0, 120, 0, 0], betaout=0, nu=0) def testHKL_011(self): self.checkHKL([0, 1, 1], [30, 54.7356, 90, 125.2644, 0, 0], betaout=30, nu=-54.7356) def testHKL_100(self): self.checkHKL([1, 0, 0], [0, 60, 0, 30, 0, 0], betaout=0, nu=0) def testHKL_101(self): self.checkHKL([1, 0, 1], [30, 54.7356, 90, 35.2644, 0, 0], betaout=30, nu=-54.7356) def testHKL_110(self): #TODO: Modify test to ask that in this case gamma is left unmoved self.checkHKL([1, 1, 0], [0, 90, 0, 90, 0, 0], betaout=0, nu=0) def testHKL_1_1_0001(self): self.checkHKL([1, 1, .0001], [0.0029, 89.9971, 90.0058, 90., 0, 0], betaout=0.0029, nu=89.9971) def testHKL_111(self): self.checkHKL([1, 1, 1], [30, 54.7356, 150, 99.7356, 0, 0], betaout=30, nu=54.7356) def testHKL_11_0_0(self): self.checkHKL([1.1, 0, 0], [0, 66.7340, 0., 33.3670, 0, 0], betaout=0, nu=0) def testHKL_09_0_0(self): self.checkHKL([.9, 0, 0], [0, 53.4874, 0, 26.7437, 0, 0], betaout=0, nu=0) def testHKL_07_08_08(self): self.checkHKL([.7, .8, .8], [23.5782, 59.9980, 76.7037, 84.2591, 0, 0], betaout=23.5782, nu=-49.1014) def testHKL_07_08_09(self): self.checkHKL([.7, .8, .9], [26.7437, 58.6754, 86.6919, 85.3391, 0, 0], betaout=26.7437, nu=-55.8910) def testHKL_07_08_1(self): self.checkHKL([.7, .8, 1], [30, 57.0626, 96.8659, 86.6739, 0, 0], betaout=30, nu=-63.0210)