18"""Tests for lal.series"""
23import igwn_ligolw.ligolw
24import igwn_ligolw.utils
31@pytest.mark.parametrize(
32 "scalar_type", [
"REAL4",
"REAL8",
"COMPLEX8",
"COMPLEX16"]
34@pytest.mark.parametrize("domain", ["Frequency", "Time"])
35@pytest.mark.parametrize(
36 "encoding,assert_array_equal",
38 [
"Text", np.testing.assert_array_almost_equal],
39 [
"base64", np.testing.assert_array_equal]
43 class_name = f
"{scalar_type}{domain}Series"
44 build_series = getattr(
lal.series, f
"build_{class_name}")
45 parse_series = getattr(
lal.series, f
"parse_{class_name}")
46 create_series = getattr(lal, f
"Create{class_name}")
48 series = create_series(
49 "name", lal.LIGOTimeGPS(3141, 59), 42.0, 2.5, lal.KiloGramUnit, 1234)
50 series.data.data = np.random.uniform(size=series.data.data.shape)
52 fileobj = io.BytesIO()
53 xmldoc = igwn_ligolw.ligolw.Document()
55 build_series(series, comment=
"This is a comment", encoding=encoding))
56 igwn_ligolw.utils.write_fileobj(xmldoc, fileobj)
57 print(fileobj.getvalue())
58 xml_str = fileobj.getvalue().decode()
59 assert f
'Encoding="{encoding}' in xml_str
60 assert "This is a comment" in xml_str
63 xmldoc = igwn_ligolw.utils.load_fileobj(fileobj)
64 new_series = parse_series(xmldoc)
65 assert new_series.name == series.name
66 assert new_series.f0 == series.f0
67 assert_array_equal(new_series.data.data, series.data.data)
70if __name__ ==
'__main__':
71 args = sys.argv[1:]
or [
"-v",
"-rs",
"--junit-xml=junit-test-series.xml"]
72 sys.exit(pytest.main(args=[__file__] + args))
def test_build_series(scalar_type, domain, encoding, assert_array_equal)