File: test_mock.py

package info (click to toggle)
pynwb 2.8.2-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 44,312 kB
  • sloc: python: 17,501; makefile: 597; sh: 11
file content (124 lines) | stat: -rw-r--r-- 3,004 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
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
from pynwb import NWBHDF5IO

from pynwb.testing.mock.file import mock_Subject, mock_NWBFile

from pynwb.testing.mock.base import mock_TimeSeries

from pynwb.testing.mock.ophys import (
    mock_ImagingPlane,
    mock_OnePhotonSeries,
    mock_TwoPhotonSeries,
    mock_RoiResponseSeries,
    mock_PlaneSegmentation,
    mock_OpticalChannel,
    mock_Fluorescence,
    mock_DfOverF,
    mock_ImageSegmentation,
)

from pynwb.testing.mock.ogen import (
    mock_OptogeneticStimulusSite,
    mock_OptogeneticSeries
)

from pynwb.testing.mock.device import mock_Device

from pynwb.testing.mock.behavior import (
    mock_Position,
    mock_PupilTracking,
    mock_CompassDirection,
    mock_SpatialSeries,
)

from pynwb.testing.mock.ecephys import (
    mock_ElectrodeGroup,
    mock_ElectrodeTable,
    mock_ElectricalSeries,
    mock_SpikeEventSeries,
    mock_Units,
)

from pynwb.testing.mock.icephys import (
    mock_IntracellularElectrode,
    mock_CurrentClampSeries,
    mock_IZeroClampSeries,
    mock_VoltageClampSeries,
    mock_VoltageClampStimulusSeries,
    mock_CurrentClampStimulusSeries,
    mock_IntracellularRecordingsTable,
)

import pytest

from pynwb.testing.mock.utils import name_generator, name_generator_registry

mock_functions = [
    mock_ImagingPlane,
    mock_OnePhotonSeries,
    mock_TwoPhotonSeries,
    mock_RoiResponseSeries,
    mock_PlaneSegmentation,
    mock_OpticalChannel,
    mock_Fluorescence,
    mock_DfOverF,
    mock_ImageSegmentation,
    mock_OptogeneticStimulusSite,
    mock_OptogeneticSeries,
    mock_Device,
    mock_Position,
    mock_PupilTracking,
    mock_CompassDirection,
    mock_SpatialSeries,
    mock_ElectrodeGroup,
    mock_ElectrodeTable,
    mock_ElectricalSeries,
    mock_SpikeEventSeries,
    mock_Subject,
    mock_NWBFile,
    mock_TimeSeries,
    mock_CurrentClampSeries,
    mock_IZeroClampSeries,
    mock_VoltageClampSeries,
    mock_VoltageClampStimulusSeries,
    mock_IntracellularElectrode,
    mock_CurrentClampStimulusSeries,
    mock_IntracellularRecordingsTable,
    mock_Units,
]


@pytest.mark.parametrize("mock_function", mock_functions)
def test_mock(mock_function):
    mock_function()


def test_mock_TimeSeries_w_timestamps():
    ts = mock_TimeSeries(timestamps=[0, 1, 2, 3])
    assert ts.timestamps is not None
    assert len(ts.timestamps) == 4


def test_mock_TimeSeries_w_no_time():
    ts = mock_TimeSeries()
    assert ts.rate == 10.0


@pytest.mark.parametrize("mock_function", mock_functions)
def test_mock_write(mock_function, tmp_path):
    if mock_function is mock_NWBFile:
        return
    nwbfile = mock_NWBFile()
    assert mock_function(nwbfile=nwbfile) is not None

    test_file = tmp_path / (mock_function.__name__ + ".nwb")
    with NWBHDF5IO(test_file, "w") as io:
        io.write(nwbfile)


def test_name_generator():

    name_generator_registry.clear()  # reset registry

    assert name_generator("TimeSeries") == "TimeSeries"
    assert name_generator("TimeSeries") == "TimeSeries2"