def test_should_reject_impossible_move(self): # setup start = np.array([[0., 0., -1.], [0., 2., -1.], [0., 0., -2.], [1., 0., -1.], [0., 0., .0], [-1., 0., -1.]]) end = np.array([[0., 0., -1.], [0., 2., -1.], [0., 0., -2.], [1., 0., -1.], [0., 0., .0], [-1., 0., -1.]]) state = meld.system.SystemState(start, np.zeros_like(start), 0., 0., np.zeros(3)) mock_runner = mock.Mock() mock_runner.get_energy.return_value = 1000. mover = mc.RandomTorsionMover(0, 1, [4, 5]) # exercise with mock.patch('meld.system.montecarlo.generate_uniform_angle' ) as mock_gen_angle: mock_gen_angle.return_value = 90. new_state, accepted = mover.trial(state, mock_runner) # assert self.assertEqual(new_state.energy, 0.0) self.assertEqual(accepted, False) np.testing.assert_array_almost_equal(new_state.positions, end)
def test_should_reject_impossible_move(self): # setup start = np.array([ [0.0, 0.0, -1.0], [0.0, 2.0, -1.0], [0.0, 0.0, -2.0], [1.0, 0.0, -1.0], [0.0, 0.0, 0.0], [-1.0, 0.0, -1.0], ]) end = np.array([ [0.0, 0.0, -1.0], [0.0, 2.0, -1.0], [0.0, 0.0, -2.0], [1.0, 0.0, -1.0], [0.0, 0.0, 0.0], [-1.0, 0.0, -1.0], ]) state = SystemState(start, np.zeros_like(start), 0.0, 0.0, np.zeros(3)) mock_runner = mock.Mock() mock_runner.get_energy.return_value = 1000.0 mover = mc.RandomTorsionMover( AtomIndex(0), AtomIndex(1), [AtomIndex(4), AtomIndex(5)]) # exercise with mock.patch("meld.system.montecarlo._generate_uniform_angle" ) as mock_gen_angle: mock_gen_angle.return_value = 90.0 new_state, accepted = mover.trial(state, mock_runner) # assert self.assertEqual(new_state.energy, 0.0) self.assertEqual(accepted, False) np.testing.assert_array_almost_equal(new_state.positions, end)