Completed
Push — master ( 6d6a7d...e4617d )
by Jasper
8s
created

FifTests   A

Complexity

Total Complexity 7

Size/Duplication

Total Lines 58
Duplicated Lines 0 %

Importance

Changes 2
Bugs 0 Features 0
Metric Value
dl 0
loc 58
rs 10
c 2
b 0
f 0
wmc 7

7 Methods

Rating   Name   Duplication   Size   Complexity  
A test_Gets_dimensions() 0 5 1
A setUp() 0 8 1
A test_Gets_basic_info_from_mne_and_returns_it() 0 5 1
A test_Attach_method() 0 11 1
A test_Determines_modality() 0 3 1
A setupMne() 0 16 1
A test_Preserves_modality_if_inherited() 0 2 1
1
import unittest
2
from mock import Mock
3
from datetime import datetime, timedelta
4
from tests.test_basefile import BaseFileTests
5
6
7
class FifTests(BaseFileTests):
8
9
    def setUp(self):
10
        super(FifTests, self).setUp()
11
        self.libs = Mock()
12
        self.dependencies.getLibraries.return_value = self.libs
13
        self.setupMne()
14
        from niprov.fif import FifFile
15
        self.constructor = FifFile
16
        self.file = FifFile(self.path, dependencies=self.dependencies)
17
18
    def test_Gets_basic_info_from_mne_and_returns_it(self):
19
        out = self.file.inspect()
20
        self.assertEqual(out['subject'], 'John Doeish')
21
        self.assertEqual(out['project'], 'worlddom')
22
        self.assertEqual(out['acquired'], self.acquired)
23
24
    def test_Gets_dimensions(self):
25
        out = self.file.inspect()
26
        self.assertEqual(out['dimensions'], [123, 91])
27
        self.assertEqual(out['sampling-frequency'], 200)
28
        self.assertEqual(out['duration'], timedelta(seconds=91/200.))
29
30
    def test_Attach_method(self):
31
        self.file.getProvenance = Mock()
32
        self.file.getProvenance.return_value = 'serial prov'
33
        self.file.attach('json')
34
        self.file.getProvenance.assert_called_with('json')
35
        self.assertIn('existing bla bla ', #original string+added space 
36
            self.img.info['description'])
37
        self.assertIn('NIPROV:'+'serial prov', 
38
            self.img.info['description'])
39
        self.libs.mne.io.write_info.assert_called_with(self.file.path, 
40
            self.img.info)
41
42
    def test_Determines_modality(self):
43
        out = self.file.inspect()
44
        self.assertEqual(out['modality'], 'MEG')
45
46
    def test_Preserves_modality_if_inherited(self):
47
        pass # Doesn't have to preserve
48
49
    def setupMne(self):
50
        TS = 1422522595.76096
51
        self.acquired = datetime.fromtimestamp(TS)
52
        self.img = Mock()
53
        self.img.info = {
54
            'meas_date':(TS,),
55
            'proj_name':'worlddom',
56
            'subject_info':{'first_name':'John','last_name':'Doeish'},
57
            'nchan':123,
58
            'sfreq':200,
59
            'description':'existing bla bla'}
60
        self.img.first_samp = 10
61
        self.img.last_samp = 100
62
        self.libs.mne.io.Raw.return_value = self.img
63
        self.libs.mne.io.read_info.return_value = self.img.info
64
        self.libs.hasDependency.return_value = True
65
66
67
68