1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82
|
import os
import pytest
from nexusformat.nexus.tree import (NXdata, NXentry, NXFile, NXroot, nxload,
nxopen)
def test_file_creation(tmpdir):
filename = os.path.join(tmpdir, "file.nxs")
with NXFile(filename, "w") as f:
assert f.mode == "rw"
assert f.filename == filename
assert not f.is_open()
def test_file_save(tmpdir, field1, field2):
filename = os.path.join(tmpdir, "file.nxs")
w1 = NXroot(NXentry())
w1.entry.data = NXdata(field1, field2)
w1.save(filename)
assert os.path.exists(filename)
assert not w1.nxfile.is_open()
assert w1.nxfilename == filename
assert w1.nxfilemode == "rw"
w2 = nxload(filename)
assert w2.nxfilename == filename
assert w2.nxfilemode == "r"
assert "entry/data/f1" in w2
assert "entry/data/f2" in w2
assert "signal" in w2["entry/data"].attrs
assert "axes" in w2["entry/data"].attrs
@pytest.mark.parametrize("recursive", ["True", "False"])
def test_file_recursion(tmpdir, field1, field2, recursive):
filename = os.path.join(tmpdir, "file.nxs")
w1 = NXroot(NXentry())
w1.entry.data = NXdata(field1, field2)
w1.save(filename)
w2 = nxload(filename, recursive=recursive)
if not recursive:
assert w2["entry"]._entries is None
assert "entry/data" in w2
assert w2["entry"]._entries is not None
assert w2["entry/data"]._entries is None
assert "entry/data/f1" in w2
assert w2["entry/data"]._entries is not None
assert w2["entry/data/f2"] == field2
assert "entry/data/f1" in w2
assert "entry/data/f2" in w2
assert "signal" in w2["entry/data"].attrs
assert "axes" in w2["entry/data"].attrs
def test_file_context_manager(tmpdir, field1, field2):
filename = os.path.join(tmpdir, "file.nxs")
with nxopen(filename, "w") as w1:
w1["entry"] = NXentry()
w1["entry/data"] = NXdata(field1, field2)
assert w1.nxfilename == filename
assert w1.nxfilemode == "rw"
assert os.path.exists(filename)
w2 = nxopen(filename)
assert w2.nxfilename == filename
assert w2.nxfilemode == "r"
assert "entry/data/f1" in w2
assert "entry/data/f2" in w2
assert "signal" in w2["entry/data"].attrs
assert "axes" in w2["entry/data"].attrs
|