File: test_files.py

package info (click to toggle)
python-nexusformat 1.0.6-5
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 516 kB
  • sloc: python: 5,791; makefile: 5; sh: 1
file content (82 lines) | stat: -rw-r--r-- 2,335 bytes parent folder | download
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