def test_ray_almost_equal_dir(): "Rays with different dir are differents." wavelength = 0.1234 label = "dummy_label" ray1 = ray.Ray( pos=np.array([5.0, 0.0, 0.0]), dir=np.array([0.0, 0.0, 1.0]), intensity=1.0, wavelength=wavelength, n=None, label=label, orig_surf=None, order=0, ) ray2 = ray.Ray( pos=np.array([5.0, 0.0, 0.0]), dir=np.array([0.0, 0.00000001, 1.0]), intensity=1.0, wavelength=wavelength, n=None, label=label, orig_surf=None, order=0, ) print(ray1) print(ray2) assert not (ray1 == ray2)
def test_beam_almost_equal_same(): "Ray almost equal are tested with beam_almost_equal" wavelength = 0.1234 label = "dummy_label" beam1 = [ ray.Ray( pos=np.array([i, 0.0, 0.0000001]), dir=np.array([0.0, 0.0, 1.0]), intensity=1.0, wavelength=wavelength, n=None, label=label, orig_surf=None, order=0, ) for i in (-1, 1) ] beam2 = [ ray.Ray( pos=np.array([i, 0.0, 0.0]), dir=np.array([0.0, 0.0, 1.0]), intensity=1.0, wavelength=wavelength, n=None, label=label, orig_surf=None, order=0, ) for i in (-1, 1) ] print(beam1) print(beam2) assert beam_almost_equal(beam1, beam2)
def test_beam_equal_different_pos(): "Ray must have the same .pos to be equal" wavelength = 0.1234 label = "dummy_label" beam1 = [ ray.Ray( pos=np.array([i, 0.0, 0.0]), dir=np.array([0.0, 0.0, 1.0]), intensity=1.0, wavelength=wavelength, n=None, label=label, orig_surf=None, order=0, ) for i in (-0.5, 0.5) ] beam2 = [ ray.Ray( pos=np.array([i, 0.0, 0.0]), dir=np.array([0.0, 0.0, 1.0]), intensity=1.0, wavelength=wavelength, n=None, label=label, orig_surf=None, order=0, ) for i in (-1, 1) ] assert not beam_equal(beam1, beam2)
def test_ray_dir_different_norm(): "Rays with same normalized dir are same." wavelength = 0.1234 label = "dummy_label" ray1 = ray.Ray( pos=np.array([5.0, 0.0, 0.0]), dir=np.array([0.0, 0.0, 1.0]), intensity=1.0, wavelength=wavelength, n=None, label=label, orig_surf=None, order=0, ) ray2 = ray.Ray( pos=np.array([5.0, 0.0, 0.0]), dir=np.array([0.0, 0.0, 1.01]), intensity=1.0, wavelength=wavelength, n=None, label=label, orig_surf=None, order=0, ) print(ray1) print(ray2) assert ray1 == ray2
def test_ray_equal(): "Rays with exactly same attributes are equals." wavelength = 0.1234 label = "dummy_label" ray1 = ray.Ray( pos=np.array([5.0, 0.0, 0.0]), dir=np.array([0.0, 0.0, 1.0]), intensity=1.0, wavelength=wavelength, n=None, label=label, orig_surf=None, order=0, ) ray2 = ray.Ray( pos=np.array([5.0, 0.0, 0.0]), dir=np.array([0.0, 0.0, 1.0]), intensity=1.0, wavelength=wavelength, n=None, label=label, orig_surf=None, order=0, ) print(ray1) print(ray2) assert ray1 == ray2
def test_reverse(): ray_expected = ray.Ray(pos=(0.0, 0.0, 0.0), dir=(0.0, 0.0, -1.0)) ray1 = ray.Ray() ray_calculated = ray1.reverse() assert ray.Ray.almost_equal(ray_expected, ray_calculated)
def test_ch_coord_sys(): # ch_coord_sys(self, np.ndarray no, np.ndarray ae) origin = np.array([2, 1, 2]) direction = np.array([1, 2, 1]) ray_expected = ray.Ray(pos=(0.0, 0.0, 0.0), dir=(0, 0, 1)) ray1 = ray.Ray() ray_calculated = ray1.ch_coord_sys(origin, direction) print(ray_calculated) assert ray.Ray.almost_equal(ray_expected, ray_calculated)
def test_ch_coord_sys_inv(): # ch_coord_sys_inv(self,no,ae,childs=False) origin = np.array([0, 0, 0]) direction = np.array([0, 1, 0]) ray_expected = ray.Ray(pos=(0.0, 0.0, 0.0), dir=(0.84147098, 0.0, 0.54030231)) ray1 = ray.Ray() ray_calculated = ray1.ch_coord_sys_inv(origin, direction) assert ray.Ray.almost_equal(ray_expected, ray_calculated)
def test_ch_coord_sys_inv_f(): # ch_coord_sys_inv_f(self,np.ndarray no ,np.ndarray ae,bool childs) origin = np.array([0, 0, 0]) direction = np.array([0, 1, 0]) ray_expected = ray.Ray(pos=(0.0, 0.0, 0.0), dir=(0.84147098, 0.0, 0.54030231)) ray1 = ray.Ray() ray_calculated = ray1.ch_coord_sys_inv_f(origin, direction, False) print(ray_calculated) assert ray.Ray.almost_equal(ray_expected, ray_calculated)
def test_parallel_beam_c(): # parallel_beam_c(origin=(0.,0.,0.),direction=(0.,0.,0.),size=(1.,1.),num_rays=(10,10),wavelength=0.58929, label="") origin = (0.0, 0.0, 0.0) direction = (0.0, 0.0, 0.0) size = (1.0, 1.0) num_rays = (2, 2) wavelength = 0.61234 label = "test" expected = [ ray.Ray( pos=np.array([i, j, 0.0]), dir=np.array([0.0, 0.0, 1.0]), intensity=1.0, wavelength=wavelength, n=None, label=label, orig_surf=None, order=0, ) for i in (-0.5, 0.5) for j in (-0.5, 0.5) ] calculated = ray_source.parallel_beam_c( origin=origin, direction=direction, size=size, num_rays=num_rays, wavelength=wavelength, label=label, ) assert beam_equal(calculated, expected)
def test_ray_dir(): "The direction is always a unitary vector. This is done with the setter" ray1 = ray.Ray(dir=(0, 0, 5)) assert np.array_equal(ray1.dir, np.array([0, 0, 1])) ray1.dir = (0, 5, -5) np.testing.assert_array_almost_equal(ray1.dir, [0, 0.70710678, -0.70710678])
def test_copy(): ray1 = ray.Ray( pos=np.array([1.0, 0.0, 0.0]), dir=np.array([0.0, 0.0, 1.0]), intensity=1.0, wavelength=0.6328, n=None, label="HeNe", orig_surf=None, order=0, ) ray2 = ray1.copy() assert ray2 == ray1
def test_point_source_r(): # point_source_r(origin=(0., 0., 0.), direction=(0., 0., 0), span=pi / 8, num_rays=100, wavelength=0.58929, # label=""): np.random.seed(0) pos_origin_ray = np.array([1.0, 1.234, 3.1416]) direction = np.array([0.2, 0.3, 0.5]) span = np.pi / 16 num_rays = 5 wavelength = 0.5460 label = "test_with_random" expected_dir = [ np.array([0.53157453, -0.30101208, 0.7917198]), np.array([0.74074805, -0.00967543, 0.67171326]), np.array([0.3209326, -0.43252757, 0.84256879]), np.array([0.39631705, -0.21297594, 0.89307001]), np.array([0.4072408, 0.01950802, 0.91311246]), ] expected = [ ray.Ray( pos=pos_origin_ray, dir=i, intensity=1.0, wavelength=wavelength, n=None, label=label, orig_surf=None, order=0, ) for i in expected_dir ] calculated = ray_source.point_source_r( origin=pos_origin_ray, direction=direction, span=span, num_rays=num_rays, wavelength=wavelength, label=label, ) assert beam_almost_equal(calculated, expected)
def test_point_source_c(): # point_source_c(origin=(0.,0.,0.),direction=(0.,0.,0),span=(pi/8,pi/8)\ # ,num_rays=(10,10),wavelength=0.58929, label="") pos_origin_ray = np.array([1.0, 1.5, 3.1416]) direction = np.array([5.2, 6.3, 10.3]) span = (np.pi / 8, np.pi / 8) num_rays = (2, 3) wavelength = 0.6328 label = "another_test" expected_dir = [ np.array([0.84217193, -0.45989021, 0.28150922]), np.array([0.73225862, -0.61754295, 0.28712021]), np.array([0.59697294, -0.75362932, 0.27507482]), np.array([0.69812011, -0.34719261, 0.6261674]), np.array([0.5882068, -0.50484536, 0.63177839]), np.array([0.45292112, -0.64093172, 0.619733]), ] expected = [ ray.Ray( pos=pos_origin_ray, dir=i, intensity=1.0, wavelength=wavelength, n=None, label=label, orig_surf=None, order=0, ) for i in expected_dir ] calculated = ray_source.point_source_c( origin=pos_origin_ray, direction=direction, span=span, num_rays=num_rays, wavelength=wavelength, label=label, ) assert beam_almost_equal(calculated, expected)
def test_point_source_p(): # point_source_p(origin=(0., 0., 0.), direction=(0., 0., 0), span=pi / 8, num_rays=(10, 10), wavelength=0.58929, # label="") pos_origin_ray = np.array([1.0, 1.5, 3.1416]) direction = np.array([0.2, 0.3, 0.5]) span = np.pi / 16 num_rays = (2, 3) wavelength = 0.432 label = "one_more_test" expected_dir = [ np.array([0.34942093, -0.03549297, 0.93629336]), np.array([0.38874339, -0.12238449, 0.91318159]), np.array([0.39840259, 0.04708771, 0.91600116]), np.array([0.25606913, -0.03066941, 0.96617182]), ] expected = [ ray.Ray( pos=pos_origin_ray, dir=i, intensity=1.0, wavelength=wavelength, n=None, label=label, orig_surf=None, order=0, ) for i in expected_dir ] calculated = ray_source.point_source_p( origin=pos_origin_ray, direction=direction, span=span, num_rays=num_rays, wavelength=wavelength, label=label, ) assert beam_almost_equal(calculated, expected)
def test_parallel_beam_p(): # def parallel_beam_p(origin=(0.,0.,0.),direction=(0.,0.,0),radius=0.5, num_rays=(5,10),wavelength=0.58929, label=""): pos_origin_ray = np.array([1.0, 1.5, 3.1416]) direction = (5.2, 6.3, 10.3) radius = 1.43 num_rays = (2, 3) wavelength = 0.61234 label = "test13" expected_dir = np.array([0.67316743, -0.5721886, 0.46845044]) expected_pos = [ pos_origin_ray, np.array([1.52794548, 1.08696679, 1.87843843]), np.array([-0.05747045, 0.75593636, 3.75235817]), np.array([1.52952497, 2.65709685, 3.79400339]), ] expected = [ ray.Ray( pos=i, dir=expected_dir, intensity=1.0, wavelength=wavelength, n=None, label=label, orig_surf=None, order=0, ) for i in expected_pos ] calculated = ray_source.parallel_beam_p( origin=pos_origin_ray, direction=direction, radius=radius, num_rays=num_rays, wavelength=wavelength, label=label, ) assert beam_almost_equal(calculated, expected)
def test_ray_pos(): ray1 = ray.Ray() ray1.pos = (1, 2, 3) np.testing.assert_array_almost_equal(ray1.pos, [1, 2, 3])