def test_cubic_lattice( self, mock_lattice, mock_site ):
a, b, c, = 2, 2, 2
spacing = 1.0
mock_site.side_effect = range(2*2*2)
mock_lattice.return_value = 'bar'
lattice = init_lattice.cubic_lattice( a, b, c, spacing )
expected_site_calls = [ [ 1, np.array( [ 0., 0., 0. ] ), [ 2, 2, 3, 3, 5, 5 ], 0.0, 'L' ],
[ 2, np.array( [ 1., 0., 0. ] ), [ 1, 1, 4, 4, 6, 6 ], 0.0, 'L' ],
[ 3, np.array( [ 0., 1., 0. ] ), [ 4, 4, 1, 1, 7, 7 ], 0.0, 'L' ],
[ 4, np.array( [ 1., 1., 0. ] ), [ 3, 3, 2, 2, 8, 8 ], 0.0, 'L' ],
[ 5, np.array( [ 0., 0., 1. ] ), [ 6, 6, 7, 7, 1, 1 ], 0.0, 'L' ],
[ 6, np.array( [ 1., 0., 1. ] ), [ 5, 5, 8, 8, 2, 2 ], 0.0, 'L' ],
[ 7, np.array( [ 0., 1., 1. ] ), [ 8, 8, 5, 5, 3, 3 ], 0.0, 'L' ],
[ 8, np.array( [ 1., 1., 1. ] ), [ 7, 7, 6, 6, 4, 4 ], 0.0, 'L' ] ]
for call, e in zip( mock_site.mock_calls, expected_site_calls ):
self.assertEqual( call[1][0], e[0] ) # site number
np.testing.assert_array_equal( call[1][1], e[1] ) # site coordinates
self.assertEqual( call[1][2], e[2] ) # neighbour lists
self.assertEqual( call[1][3], e[3] ) # ?
self.assertEqual( call[1][4], e[4] ) # site label
self.assertEqual( mock_lattice.mock_calls[0][1][0], list(range(2*2*2)) )
self.assertEqual( lattice, 'bar' )
np.testing.assert_array_equal( mock_lattice.mock_calls[0][2]['cell_lengths'], np.array( [ a, b, c, ] ) )
评论列表
文章目录