Skip to content

Commit 37542dc

Browse files
rprosperoDrPaulSharp
authored andcommitted
Move json testing into test framework
1 parent 7500b92 commit 37542dc

1 file changed

Lines changed: 40 additions & 33 deletions

File tree

test/sasdataloader/utest_sasdataload.py

Lines changed: 40 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,10 @@ def local_data_load(path: str):
6363
return local_load(f"{os.path.join('data', path)}")
6464

6565

66+
def local_json_load(path: str):
67+
return local_load(f"{os.path.join('json', path)}")
68+
69+
6670
def example_data_load(path: str):
6771
try:
6872
return xml_load_data(local_load(f"data/{path}.xml"))
@@ -86,42 +90,12 @@ def test_filter_data():
8690
]
8791

8892

89-
@pytest.mark.sasdata
90-
@pytest.mark.parametrize("f", test_xml_file_names)
91-
def test_json_serialise(f):
92-
data = example_data_load(f)
93-
94-
with open(local_load(f"json/{f}.json"), encoding="utf-8") as infile:
95-
expected = json.loads("".join(infile.readlines()))
96-
assert json.loads(SasDataEncoder().encode(data)) == expected
97-
98-
99-
@pytest.mark.sasdata
100-
@pytest.mark.parametrize("f", test_xml_file_names)
101-
def test_json_deserialise(f):
102-
expected = example_data_load(f)
103-
104-
with open(local_load(f"json/{f}.json"), encoding="utf-8") as infile:
105-
raw = json.loads("".join(infile.readlines()))
106-
parsed = {}
107-
for k in raw:
108-
parsed[k] = SasData.from_json(raw[k])
109-
110-
for k in expected:
111-
expect = expected[k]
112-
pars = parsed[k]
113-
assert pars.name == expect.name
114-
# assert pars._data_contents == expect._data_contents
115-
assert pars.dataset_type == expect.dataset_type
116-
assert pars.mask == expect.mask
117-
assert pars.model_requirements == expect.model_requirements
118-
119-
12093
@dataclass(kw_only=True)
12194
class BaseTestCase:
12295
expected_values: dict[int, dict[str, float]]
12396
expected_metadata: dict[str, Any] = field(default_factory=dict)
12497
metadata_file: None | str = None
98+
json_file: None | str = None
12599
round_trip: bool = False
126100

127101

@@ -269,7 +243,6 @@ class SesansTestCase(BaseTestCase):
269243
),
270244
Hdf5TestCase(
271245
filename=local_data_load("x25000_no_di.h5"),
272-
metadata_file=local_reference_load("x25000_no_di.txt"),
273246
expected_values={},
274247
),
275248
Hdf5TestCase(
@@ -286,79 +259,91 @@ class SesansTestCase(BaseTestCase):
286259
filename=local_data_load("ISIS_1_0.xml"),
287260
entry="79680main_1D_2.2_10.0",
288261
metadata_file=local_reference_load("ISIS_1_0.txt"),
262+
json_file=local_json_load("ISIS_1_0.json"),
289263
expected_values={},
290264
),
291265
XmlTestCase(
292266
filename=local_data_load("ISIS_1_1.xml"),
293267
entry="79680main_1D_2.2_10.0",
294268
metadata_file=local_reference_load("ISIS_1_1.txt"),
269+
json_file=local_json_load("ISIS_1_1.json"),
295270
expected_values={},
296271
),
297272
XmlTestCase(
298273
filename=local_data_load("ISIS_1_1_doubletrans.xml"),
299274
entry="79680main_1D_2.2_10.0",
300275
metadata_file=local_reference_load("ISIS_1_1_doubletrans.txt"),
276+
json_file=local_json_load("ISIS_1_1_doubletrans.json"),
301277
expected_values={},
302278
),
303279
XmlTestCase(
304280
filename=local_data_load("ISIS_1_1_notrans.xml"),
305281
entry="79680main_1D_2.2_10.0",
306282
metadata_file=local_reference_load("ISIS_1_1_notrans.txt"),
283+
json_file=local_json_load("ISIS_1_1_notrans.json"),
307284
expected_values={},
308285
),
309286
XmlTestCase(
310287
filename=local_data_load("TestExtensions.xml"),
311288
entry="TK49 c10_SANS",
312289
metadata_file=local_reference_load("TestExtensions.txt"),
290+
json_file=local_json_load("TestExtensions.json"),
313291
expected_values={},
314292
),
315293
XmlTestCase(
316294
filename=local_data_load("cansas1d.xml"),
317295
entry="Test title",
318296
metadata_file=local_reference_load("cansas1d.txt"),
297+
json_file=local_json_load("cansas1d.json"),
319298
expected_values={},
320299
),
321300
XmlTestCase(
322301
filename=local_data_load("cansas1d_badunits.xml"),
323302
entry="Test title",
324303
metadata_file=local_reference_load("cansas1d_badunits.txt"),
304+
json_file=local_json_load("cansas1d_badunits.json"),
325305
expected_values={},
326306
),
327307
XmlTestCase(
328308
filename=local_data_load("cansas1d_notitle.xml"),
329309
entry="SasData01",
330310
metadata_file=local_reference_load("cansas1d_notitle.txt"),
311+
json_file=local_json_load("cansas1d_notitle.json"),
331312
expected_values={},
332313
),
333314
XmlTestCase(
334315
filename=local_data_load("cansas1d_slit.xml"),
335316
entry="Test title",
336317
metadata_file=local_reference_load("cansas1d_slit.txt"),
318+
json_file=local_json_load("cansas1d_slit.json"),
337319
expected_values={},
338320
),
339321
XmlTestCase(
340322
filename=local_data_load("cansas1d_units.xml"),
341323
entry="Test title",
342324
metadata_file=local_reference_load("cansas1d_units.txt"),
325+
json_file=local_json_load("cansas1d_units.json"),
343326
expected_values={},
344327
),
345328
XmlTestCase(
346329
filename=local_data_load("cansas_test.xml"),
347330
entry="ILL-D11 example1: 2A 5mM 0%D2O",
348331
metadata_file=local_reference_load("cansas_test.txt"),
332+
json_file=local_json_load("cansas_test.json"),
349333
expected_values={},
350334
),
351335
XmlTestCase(
352336
filename=local_data_load("cansas_test_modified.xml"),
353337
entry="ILL-D11 example1: 2A 5mM 0%D2O",
354338
metadata_file=local_reference_load("cansas_test_modified.txt"),
339+
json_file=local_json_load("cansas_test_modified.json"),
355340
expected_values={},
356341
),
357-
# XmlTestCase(filename=local_data_load("cansas_xml_multisasentry_multisasdata.xml"), metadata_file=local_reference_load("cansas_xml_multisasentry_multisasdata.txt"), expected_values={}),
358342
XmlTestCase(
359343
filename=local_data_load("valid_cansas_xml.xml"),
360344
entry="80514main_1D_2.2_10.0",
361345
metadata_file=local_reference_load("valid_cansas_xml.txt"),
346+
json_file=local_json_load("valid_cansas_xml.json"),
362347
expected_values={},
363348
),
364349
]
@@ -436,6 +421,28 @@ def test_load_file(test_case: BaseTestCase):
436421
keys = sorted([d for d in combined_data])
437422
assert "".join(combined_data[k].summary() for k in keys) == expected
438423

424+
if test_case.json_file is not None:
425+
# Test serialisation
426+
with open(test_case.json_file, encoding="utf-8") as infile:
427+
expected = json.loads("".join(infile.readlines()))
428+
assert json.loads(SasDataEncoder().encode(combined_data)) == expected
429+
430+
# Test deserialisation
431+
with open(test_case.json_file, encoding="utf-8") as infile:
432+
raw = json.loads("".join(infile.readlines()))
433+
parsed = {}
434+
for k in raw:
435+
parsed[k] = SasData.from_json(raw[k])
436+
437+
for k in combined_data:
438+
expect = combined_data[k]
439+
pars = parsed[k]
440+
assert pars.name == expect.name
441+
# assert pars._data_contents == expect._data_contents
442+
assert pars.dataset_type == expect.dataset_type
443+
assert pars.mask == expect.mask
444+
assert pars.model_requirements == expect.model_requirements
445+
439446
if test_case.round_trip:
440447
bio = io.BytesIO()
441448
SasData.save_h5(combined_data, bio)

0 commit comments

Comments
 (0)