3
3
# Distributed under the 3-clause BSD license, see accompanying file LICENSE
4
4
# or https://github.com/scikit-hep/vector for details.
5
5
6
- import numpy as np
7
6
import pytest
8
7
from hypothesis import given
9
8
from hypothesis import strategies as st
@@ -96,18 +95,22 @@ def test_Dot(constructor, coordinates):
96
95
constructor1 = st .tuples (
97
96
st .floats (min_value = - 10e7 , max_value = 10e7 ),
98
97
st .floats (min_value = - 10e7 , max_value = 10e7 ),
98
+ st .floats (min_value = - 10e7 , max_value = 10e7 ),
99
99
)
100
100
| st .tuples (
101
101
st .integers (min_value = - 10e7 , max_value = 10e7 ),
102
102
st .integers (min_value = - 10e7 , max_value = 10e7 ),
103
+ st .integers (min_value = - 10e7 , max_value = 10e7 ),
103
104
),
104
105
constructor2 = st .tuples (
105
106
st .floats (min_value = - 10e7 , max_value = 10e7 ),
106
107
st .floats (min_value = - 10e7 , max_value = 10e7 ),
108
+ st .floats (min_value = - 10e7 , max_value = 10e7 ),
107
109
)
108
110
| st .tuples (
109
111
st .integers (min_value = - 10e7 , max_value = 10e7 ),
110
112
st .integers (min_value = - 10e7 , max_value = 10e7 ),
113
+ st .integers (min_value = - 10e7 , max_value = 10e7 ),
111
114
),
112
115
)
113
116
def test_fuzz_Dot (constructor1 , constructor2 , coordinates ):
@@ -120,29 +123,35 @@ def test_fuzz_Dot(constructor1, constructor2, coordinates):
120
123
getattr (
121
124
vector .obj (** dict (zip (["x" , "y" , "z" ], constructor2 ))), coordinates
122
125
)()
123
- )
126
+ ),
127
+ 1.0e-6 ,
128
+ 1.0e-6 ,
124
129
)
125
130
126
131
127
132
# Run a test that compares ROOT's 'Mag2()' with vector's 'rho2' for all cases.
128
133
@pytest .mark .parametrize ("constructor" , constructor )
129
134
def test_Mag2 (constructor , coordinates ):
130
- assert ROOT .Math .XYZVector (* constructor ).Mag2 () == pytest .approx (
131
- getattr (
132
- vector .obj (** dict (zip (["x" , "y" , "z" ], constructor ))), coordinates
133
- )().rho2
135
+ ref_vec = ROOT .Math .XYZVector (* constructor )
136
+ vec = getattr (vector .obj (** dict (zip (["x" , "y" , "z" ], constructor ))), coordinates )()
137
+ assert (
138
+ pytest .approx (vec .x ) == ref_vec .X ()
139
+ and pytest .approx (vec .y ) == ref_vec .Y ()
140
+ and pytest .approx (vec .z ) == ref_vec .Z ()
134
141
)
135
142
143
+ assert ref_vec .Mag2 () == pytest .approx (vec .mag2 , 1.0e-6 , 1.0e-6 )
144
+
136
145
137
146
# Run a test that compares ROOT's 'R()' with vector's 'rho' for all cases.
138
147
@pytest .mark .parametrize ("constructor" , constructor )
139
- def test_R (constructor , coordinates ):
148
+ def test_Mag (constructor , coordinates ):
140
149
assert ROOT .Math .XYZVector (* constructor ).R () == pytest .approx (
141
- np . sqrt (
142
- getattr (
143
- vector . obj ( ** dict ( zip ([ "x" , "y" , "z" ], constructor ))), coordinates
144
- )(). rho2
145
- )
150
+ getattr (
151
+ vector . obj ( ** dict ( zip ([ "x" , "y" , "z" ], constructor ))), coordinates
152
+ )(). mag ,
153
+ 1.0e-6 ,
154
+ 1.0e-6 ,
146
155
)
147
156
148
157
@@ -258,21 +267,22 @@ def test_mul(constructor, scalar, coordinates):
258
267
vec = getattr (
259
268
vector .obj (** dict (zip (["x" , "y" , "z" ], constructor ))), coordinates
260
269
)().__mul__ (scalar )
261
- assert ref_vec .X () == pytest .approx (vec .x )
262
- assert ref_vec .Y () == pytest .approx (vec .y )
263
- assert ref_vec .Z () == pytest .approx (vec .z )
270
+ assert ref_vec .X () == pytest .approx (vec .x , 1.0e-6 , 1.0e-6 )
271
+ assert ref_vec .Y () == pytest .approx (vec .y , 1.0e-6 , 1.0e-6 )
272
+ assert ref_vec .Z () == pytest .approx (vec .z , 1.0e-6 , 1.0e-6 )
264
273
265
274
266
275
# Run a test that compares ROOT's '__truediv__' with vector's '__truediv__' for all cases.
267
276
@pytest .mark .parametrize ("constructor" , constructor )
268
277
def test_truediv (constructor , scalar , coordinates ):
269
- ref_vec = ROOT .Math .XYZVector (* constructor ).__truediv__ (scalar )
270
- vec = getattr (
271
- vector .obj (** dict (zip (["x" , "y" , "z" ], constructor ))), coordinates
272
- )().__truediv__ (scalar )
273
- assert ref_vec .X () == pytest .approx (vec .x )
274
- assert ref_vec .Y () == pytest .approx (vec .y )
275
- assert ref_vec .Z () == pytest .approx (vec .z )
278
+ if scalar != 0 :
279
+ ref_vec = ROOT .Math .XYZVector (* constructor ).__truediv__ (scalar )
280
+ vec = getattr (
281
+ vector .obj (** dict (zip (["x" , "y" , "z" ], constructor ))), coordinates
282
+ )().__truediv__ (scalar )
283
+ assert ref_vec .X () == pytest .approx (vec .x )
284
+ assert ref_vec .Y () == pytest .approx (vec .y )
285
+ assert ref_vec .Z () == pytest .approx (vec .z )
276
286
277
287
278
288
# Run a test that compares ROOT's '__eq__' with vector's 'isclose' for all cases.
0 commit comments