Skip to content

Commit 0161a8b

Browse files
committed
Add news and a new test file for DiffractionObject
1 parent 2b0b112 commit 0161a8b

File tree

2 files changed

+289
-0
lines changed

2 files changed

+289
-0
lines changed

news/deprecate.rst

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
**Added:**
2+
3+
* <news item>
4+
5+
**Changed:**
6+
7+
* <news item>
8+
9+
**Deprecated:**
10+
11+
* Diffraction_object class, renamed to DiffractionObject
12+
13+
**Removed:**
14+
15+
* <news item>
16+
17+
**Fixed:**
18+
19+
* <news item>
20+
21+
**Security:**
22+
23+
* <news item>

tests/test_diffraction_object.py

Lines changed: 266 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,266 @@
1+
from pathlib import Path
2+
3+
import numpy as np
4+
import pytest
5+
from freezegun import freeze_time
6+
7+
from diffpy.utils.scattering_objects.diffraction_object import DiffractionObject
8+
9+
params = [
10+
( # Default
11+
[
12+
"",
13+
None,
14+
"",
15+
[np.empty(0), np.empty(0)],
16+
[np.empty(0), np.empty(0)],
17+
[np.empty(0), np.empty(0)],
18+
{},
19+
],
20+
[
21+
"",
22+
None,
23+
"",
24+
[np.empty(0), np.empty(0)],
25+
[np.empty(0), np.empty(0)],
26+
[np.empty(0), np.empty(0)],
27+
{},
28+
],
29+
True,
30+
),
31+
( # Compare same attributes
32+
[
33+
"test",
34+
0.71,
35+
"x-ray",
36+
[np.array([1, 2]), np.array([3, 4])],
37+
[np.array([1, 2]), np.array([3, 4])],
38+
[np.array([1, 2]), np.array([3, 4])],
39+
{"thing1": 1, "thing2": "thing2"},
40+
],
41+
[
42+
"test",
43+
0.7100001,
44+
"x-ray",
45+
[np.array([1.00001, 2.00001]), np.array([3.00001, 4.00001])],
46+
[np.array([1.00001, 2.00001]), np.array([3.00001, 4.00001])],
47+
[np.array([1.00001, 2.00001]), np.array([3.00001, 4.00001])],
48+
{"thing1": 1, "thing2": "thing2"},
49+
],
50+
True,
51+
),
52+
( # Different names
53+
[
54+
"test1",
55+
None,
56+
"",
57+
[np.empty(0), np.empty(0)],
58+
[np.empty(0), np.empty(0)],
59+
[np.empty(0), np.empty(0)],
60+
{},
61+
],
62+
[
63+
"test2",
64+
None,
65+
"",
66+
[np.empty(0), np.empty(0)],
67+
[np.empty(0), np.empty(0)],
68+
[np.empty(0), np.empty(0)],
69+
{},
70+
],
71+
False,
72+
),
73+
( # Different wavelengths
74+
[
75+
"",
76+
0.71,
77+
"",
78+
[np.empty(0), np.empty(0)],
79+
[np.empty(0), np.empty(0)],
80+
[np.empty(0), np.empty(0)],
81+
{},
82+
],
83+
[
84+
"",
85+
0.711,
86+
"",
87+
[np.empty(0), np.empty(0)],
88+
[np.empty(0), np.empty(0)],
89+
[np.empty(0), np.empty(0)],
90+
{},
91+
],
92+
False,
93+
),
94+
( # Different wavelengths
95+
[
96+
"",
97+
0.71,
98+
"",
99+
[np.empty(0), np.empty(0)],
100+
[np.empty(0), np.empty(0)],
101+
[np.empty(0), np.empty(0)],
102+
{},
103+
],
104+
[
105+
"",
106+
None,
107+
"",
108+
[np.empty(0), np.empty(0)],
109+
[np.empty(0), np.empty(0)],
110+
[np.empty(0), np.empty(0)],
111+
{},
112+
],
113+
False,
114+
),
115+
( # Different scat_quantity
116+
[
117+
"",
118+
None,
119+
"",
120+
[np.empty(0), np.empty(0)],
121+
[np.empty(0), np.empty(0)],
122+
[np.empty(0), np.empty(0)],
123+
{},
124+
],
125+
[
126+
"",
127+
None,
128+
"x-ray",
129+
[np.empty(0), np.empty(0)],
130+
[np.empty(0), np.empty(0)],
131+
[np.empty(0), np.empty(0)],
132+
{},
133+
],
134+
False,
135+
),
136+
( # Different on_q
137+
[
138+
"",
139+
None,
140+
"",
141+
[np.array([1, 2]), np.array([3, 4])],
142+
[np.empty(0), np.empty(0)],
143+
[np.empty(0), np.empty(0)],
144+
{},
145+
],
146+
[
147+
"",
148+
None,
149+
"",
150+
[np.array([1.01, 2]), np.array([3, 4])],
151+
[np.empty(0), np.empty(0)],
152+
[np.empty(0), np.empty(0)],
153+
{},
154+
],
155+
False,
156+
),
157+
( # Different on_tth
158+
[
159+
"",
160+
None,
161+
"",
162+
[np.empty(0), np.empty(0)],
163+
[np.array([1, 2]), np.array([3, 4])],
164+
[np.empty(0), np.empty(0)],
165+
{},
166+
],
167+
[
168+
"",
169+
None,
170+
"",
171+
[np.empty(0), np.empty(0)],
172+
[np.array([1.01, 2]), np.array([3, 4])],
173+
[np.empty(0), np.empty(0)],
174+
{},
175+
],
176+
False,
177+
),
178+
( # Different on_d
179+
[
180+
"",
181+
None,
182+
"",
183+
[np.empty(0), np.empty(0)],
184+
[np.empty(0), np.empty(0)],
185+
[np.array([1, 2]), np.array([3, 4])],
186+
{},
187+
],
188+
[
189+
"",
190+
None,
191+
"",
192+
[np.empty(0), np.empty(0)],
193+
[np.empty(0), np.empty(0)],
194+
[np.array([1.01, 2]), np.array([3, 4])],
195+
{},
196+
],
197+
False,
198+
),
199+
( # Different metadata
200+
[
201+
"",
202+
None,
203+
"",
204+
[np.empty(0), np.empty(0)],
205+
[np.empty(0), np.empty(0)],
206+
[np.empty(0), np.empty(0)],
207+
{"thing1": 0, "thing2": "thing2"},
208+
],
209+
[
210+
"",
211+
None,
212+
"",
213+
[np.empty(0), np.empty(0)],
214+
[np.empty(0), np.empty(0)],
215+
[np.empty(0), np.empty(0)],
216+
{"thing1": 1, "thing2": "thing2"},
217+
],
218+
False,
219+
),
220+
]
221+
222+
223+
@pytest.mark.parametrize("inputs1, inputs2, expected", params)
224+
def test_diffraction_objects_equality(inputs1, inputs2, expected):
225+
diffraction_object1 = DiffractionObject()
226+
diffraction_object2 = DiffractionObject()
227+
diffraction_object1_attributes = [key for key in diffraction_object1.__dict__ if not key.startswith("_")]
228+
for i, attribute in enumerate(diffraction_object1_attributes):
229+
setattr(diffraction_object1, attribute, inputs1[i])
230+
setattr(diffraction_object2, attribute, inputs2[i])
231+
assert (diffraction_object1 == diffraction_object2) == expected
232+
233+
234+
def test_dump(tmp_path, mocker):
235+
x, y = np.linspace(0, 5, 6), np.linspace(0, 5, 6)
236+
directory = Path(tmp_path)
237+
file = directory / "testfile"
238+
test = DiffractionObject()
239+
test.wavelength = 1.54
240+
test.name = "test"
241+
test.scat_quantity = "x-ray"
242+
test.insert_scattering_quantity(
243+
x, y, "q", metadata={"thing1": 1, "thing2": "thing2", "package_info": {"package2": "3.4.5"}}
244+
)
245+
246+
mocker.patch("importlib.metadata.version", return_value="3.3.0")
247+
248+
with freeze_time("2012-01-14"):
249+
test.dump(file, "q")
250+
251+
with open(file, "r") as f:
252+
actual = f.read()
253+
expected = (
254+
"[Diffraction_object]\nname = test\nwavelength = 1.54\nscat_quantity = x-ray\nthing1 = 1\n"
255+
"thing2 = thing2\npackage_info = {'package2': '3.4.5', 'diffpy.utils': '3.3.0'}\n"
256+
"creation_time = 2012-01-14 00:00:00\n\n"
257+
"#### start data\n0.000000000000000000e+00 0.000000000000000000e+00\n"
258+
"1.000000000000000000e+00 1.000000000000000000e+00\n"
259+
"2.000000000000000000e+00 2.000000000000000000e+00\n"
260+
"3.000000000000000000e+00 3.000000000000000000e+00\n"
261+
"4.000000000000000000e+00 4.000000000000000000e+00\n"
262+
"5.000000000000000000e+00 5.000000000000000000e+00\n"
263+
)
264+
265+
assert actual == expected
266+

0 commit comments

Comments
 (0)