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__()