
# Author: Jaakko Leppakangas <jaeilepp@student.jyu.fi>
#         Joan Massich <mailsik@gmail.com>
#
# License: BSD-3-Clause

import os.path as op

import numpy as np
from numpy.testing import assert_array_equal
import pytest

from mne import pick_types
from mne.datasets import testing
from mne.io.tests.test_raw import _test_raw_reader
from mne.io.cnt import read_raw_cnt
from mne.annotations import read_annotations

data_path = testing.data_path(download=False)
fname = op.join(data_path, 'CNT', 'scan41_short.cnt')


@testing.requires_testing_data
def test_data():
    """Test reading raw cnt files."""
    with pytest.warns(RuntimeWarning, match='number of bytes'):
        raw = _test_raw_reader(read_raw_cnt, input_fname=fname,
                               eog='auto', misc=['NA1', 'LEFT_EAR'])

    # make sure we use annotations event if we synthesized stim
    assert len(raw.annotations) == 6

    eog_chs = pick_types(raw.info, eog=True, exclude=[])
    assert len(eog_chs) == 2  # test eog='auto'
    assert raw.info['bads'] == ['LEFT_EAR', 'VEOGR']  # test bads

    # the data has "05/10/200 17:35:31" so it is set to None
    assert raw.info['meas_date'] is None


@testing.requires_testing_data
def test_compare_events_and_annotations():
    """Test comparing annotations and events."""
    with pytest.warns(RuntimeWarning, match='Could not parse meas date'):
        raw = read_raw_cnt(fname)
    events = np.array([[333, 0, 7],
                       [1010, 0, 7],
                       [1664, 0, 109],
                       [2324, 0, 7],
                       [2984, 0, 109]])

    annot = read_annotations(fname)
    assert len(annot) == 6
    assert_array_equal(annot.onset[:-1], events[:, 0] / raw.info['sfreq'])
    assert 'STI 014' not in raw.info['ch_names']

[((19, 12, 19, 45), 'mne.datasets.testing.data_path', 'testing.data_path', (), '', False, 'from mne.datasets import testing\n'), ((20, 8, 20, 53), 'os.path.join', 'op.join', ({(20, 16, 20, 25): 'data_path', (20, 27, 20, 32): '"""CNT"""', (20, 34, 20, 52): '"""scan41_short.cnt"""'}, {}), "(data_path, 'CNT', 'scan41_short.cnt')", True, 'import os.path as op\n'), ((33, 14, 33, 56), 'mne.pick_types', 'pick_types', (), '', False, 'from mne import pick_types\n'), ((46, 13, 50, 39), 'numpy.array', 'np.array', ({(46, 22, 50, 38): '[[333, 0, 7], [1010, 0, 7], [1664, 0, 109], [2324, 0, 7], [2984, 0, 109]]'}, {}), '([[333, 0, 7], [1010, 0, 7], [1664, 0, 109], [2324, 0, 7], [2984, 0,\n    109]])', True, 'import numpy as np\n'), ((52, 12, 52, 35), 'mne.annotations.read_annotations', 'read_annotations', ({(52, 29, 52, 34): 'fname'}, {}), '(fname)', False, 'from mne.annotations import read_annotations\n'), ((54, 4, 54, 74), 'numpy.testing.assert_array_equal', 'assert_array_equal', ({(54, 23, 54, 39): 'annot.onset[:-1]', (54, 41, 54, 73): "(events[:, (0)] / raw.info['sfreq'])"}, {}), "(annot.onset[:-1], events[:, (0)] / raw.info['sfreq'])", False, 'from numpy.testing import assert_array_equal\n'), ((26, 9, 26, 62), 'pytest.warns', 'pytest.warns', (), '', False, 'import pytest\n'), ((27, 14, 28, 68), 'mne.io.tests.test_raw._test_raw_reader', '_test_raw_reader', (), '', False, 'from mne.io.tests.test_raw import _test_raw_reader\n'), ((44, 9, 44, 72), 'pytest.warns', 'pytest.warns', (), '', False, 'import pytest\n'), ((45, 14, 45, 33), 'mne.io.cnt.read_raw_cnt', 'read_raw_cnt', ({(45, 27, 45, 32): 'fname'}, {}), '(fname)', False, 'from mne.io.cnt import read_raw_cnt\n')]