This commit is contained in:
@@ -0,0 +1,73 @@
|
||||
import pytest
|
||||
import sys
|
||||
import os
|
||||
sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), '..')))
|
||||
from slic.utils.channels import *
|
||||
from unittest.mock import patch
|
||||
|
||||
import tempfile
|
||||
import warnings
|
||||
|
||||
|
||||
CHANNELS_FILE_TEXT_1 = """\
|
||||
# Main experiment channels
|
||||
channel_1
|
||||
channel_2 # analog input
|
||||
chan ne ls_3
|
||||
|
||||
another : channel_6
|
||||
|
||||
channel_1 # duplicate, should be ignored
|
||||
CHN_LS4
|
||||
# channel_5 is deprecated
|
||||
"""
|
||||
|
||||
CHANNELS_FILE_TEXT_2 = """\
|
||||
# Additional DAQ channels with edge cases
|
||||
channel_6
|
||||
channel_7#commented_inline
|
||||
channel_8 # this is a valid channel
|
||||
channel_6
|
||||
# All lines after are comments only
|
||||
#
|
||||
# fully commented out
|
||||
channel_9
|
||||
|
||||
# Special cases: whitespace, tabs, upper/lower
|
||||
CHANNEL_10
|
||||
\tchannel_11
|
||||
"""
|
||||
|
||||
# ----------- TESTS ------------
|
||||
|
||||
def test_load_channels_and_channels_class_with_professional_names():
|
||||
|
||||
test_cases = [
|
||||
(CHANNELS_FILE_TEXT_1, ['CHN_LS4', 'another : channel_6', 'chan ne ls_3', 'channel_1', 'channel_2']),
|
||||
(CHANNELS_FILE_TEXT_2, [
|
||||
'CHANNEL_10',
|
||||
'channel_11',
|
||||
'channel_6',
|
||||
'channel_7',
|
||||
'channel_8',
|
||||
'channel_9',
|
||||
]),
|
||||
]
|
||||
for file_text, expected in test_cases:
|
||||
with tempfile.NamedTemporaryFile('w+', delete=False) as tmpfile:
|
||||
tmpfile.write(file_text)
|
||||
tmpfile_path = tmpfile.name
|
||||
try:
|
||||
# Test load_channels function
|
||||
result_func = load_channels(tmpfile_path)
|
||||
assert result_func == expected
|
||||
|
||||
# Test Channels class : including DeprecationWarning
|
||||
with warnings.catch_warnings(record=True) as w:
|
||||
warnings.simplefilter("always")
|
||||
result_class = Channels(tmpfile_path)
|
||||
assert list(result_class) == expected
|
||||
dep_warnings = [warn for warn in w if issubclass(warn.category, DeprecationWarning)]
|
||||
assert len(dep_warnings) == 1
|
||||
finally:
|
||||
os.remove(tmpfile_path)
|
||||
Reference in New Issue
Block a user