Skip to content

Commit b6479f8

Browse files
committed
rewrite test for checkCFG for mox unit
1 parent 90e1a1b commit b6479f8

File tree

3 files changed

+124
-113
lines changed

3 files changed

+124
-113
lines changed

tests/checkSubFields.m

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
function checkSubFields(expectedStructure, cfg)
2+
% check that that the structures match
3+
% if it fails it check from which subfield the error comes from
4+
5+
try
6+
7+
assertEqual(expectedStructure, cfg);
8+
9+
catch ME
10+
11+
if isstruct(expectedStructure)
12+
13+
names = fieldnames(expectedStructure);
14+
15+
for i = 1:numel(names)
16+
17+
disp(names{i});
18+
testSubFields(expectedStructure.(names{i}), cfg.(names{i}));
19+
20+
end
21+
22+
end
23+
24+
disp(expectedStructure);
25+
disp(cfg);
26+
27+
rethrow(ME);
28+
end
29+
end

tests/returnExpectedCfgStructure.m

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
function expectedCfgStructure = returnExpectedCfgStructure()
2+
3+
expectedCfgStructure.subject.subjectGrp = '';
4+
expectedCfgStructure.subject.sessionNb = 1;
5+
expectedCfgStructure.subject.askGrpSess = [true true];
6+
7+
expectedCfgStructure.verbose = 0;
8+
9+
expectedCfgStructure.fileName.task = '';
10+
expectedCfgStructure.fileName.zeroPadding = 3;
11+
expectedCfgStructure.fileName.dateFormat = 'yyyymmddHHMM';
12+
13+
expectedCfgStructure.eyeTracker.do = false;
14+
15+
expectedCfgStructure.mri.contrastEnhancement = [];
16+
expectedCfgStructure.mri.phaseEncodingDirection = [];
17+
expectedCfgStructure.mri.reconstruction = [];
18+
expectedCfgStructure.mri.echo = [];
19+
expectedCfgStructure.mri.acquisition = [];
20+
expectedCfgStructure.mri.repetitionTime = [];
21+
22+
expectedCfgStructure.bids.mri.RepetitionTime = [];
23+
expectedCfgStructure.bids.mri.SliceTiming = '';
24+
expectedCfgStructure.bids.mri.TaskName = '';
25+
expectedCfgStructure.bids.mri.Instructions = '';
26+
expectedCfgStructure.bids.mri.TaskDescription = '';
27+
28+
expectedCfgStructure.bids.meg.TaskName = '';
29+
expectedCfgStructure.bids.meg.SamplingFrequency = [];
30+
expectedCfgStructure.bids.meg.PowerLineFrequency = [];
31+
expectedCfgStructure.bids.meg.DewarPosition = [];
32+
expectedCfgStructure.bids.meg.SoftwareFilters = [];
33+
expectedCfgStructure.bids.meg.DigitizedLandmarks = [];
34+
expectedCfgStructure.bids.meg.DigitizedHeadPoints = [];
35+
36+
expectedCfgStructure.bids.datasetDescription.Name = '';
37+
expectedCfgStructure.bids.datasetDescription.BIDSVersion = '';
38+
expectedCfgStructure.bids.datasetDescription.License = '';
39+
expectedCfgStructure.bids.datasetDescription.Authors = {''};
40+
expectedCfgStructure.bids.datasetDescription.Acknowledgements = '';
41+
expectedCfgStructure.bids.datasetDescription.HowToAcknowledge = '';
42+
expectedCfgStructure.bids.datasetDescription.Funding = {''};
43+
expectedCfgStructure.bids.datasetDescription.ReferencesAndLinks = {''};
44+
expectedCfgStructure.bids.datasetDescription.DatasetDOI = '';
45+
46+
expectedCfgStructure = orderfields(expectedCfgStructure);
47+
48+
end

tests/test_checkCFG.m

Lines changed: 47 additions & 113 deletions
Original file line numberDiff line numberDiff line change
@@ -1,147 +1,81 @@
1-
function test_checkCFG()
1+
function test_suite = test_checkCFG %#ok<*STOUT>
2+
try % assignment of 'localfunctions' is necessary in Matlab >= 2016
3+
test_functions = localfunctions(); %#ok<*NASGU>
4+
catch % no problem; early Matlab versions can use initTestSuite fine
5+
end
6+
initTestSuite;
7+
end
28

9+
function test_checkCfgDefault()
10+
11+
%% set up
312
cfg.dir.output = fullfile(fileparts(mfilename('fullpath')), '..', 'output');
413
cfg = checkCFG(cfg);
5-
6-
expectedStructure = returnExpectedStructure();
14+
15+
%% create test data
16+
expectedStructure = returnExpectedCfgStructure();
717
expectedStructure.dir.output = cfg.dir.output;
818
expectedStructure.testingDevice = 'pc';
9-
10-
testSubFields(expectedStructure, cfg);
11-
12-
%%
13-
fprintf('\n--------------------------------------------------------------------');
14-
15-
clear;
16-
19+
20+
%% test
21+
checkSubFields(expectedStructure, cfg);
22+
23+
end
24+
25+
function test_checkCfgBasic()
26+
27+
%% set up
1728
outputDir = fullfile(fileparts(mfilename('fullpath')), '..', 'output');
18-
29+
30+
cfg.verbose = false;
31+
1932
cfg.subject.subjectNb = 1;
2033
cfg.subject.runNb = 1;
21-
34+
2235
cfg.task.name = 'test task';
23-
36+
2437
cfg.dir.output = outputDir;
25-
38+
2639
cfg.bids.datasetDescription.Name = 'dummy';
2740
cfg.bids.datasetDescription.BIDSVersion = '1.0.0';
2841
cfg.bids.datasetDescription.Authors = {'Jane Doe', 'John Doe'};
29-
42+
3043
cfg.mri.repetitionTime = 1.56;
31-
44+
3245
cfg.testingDevice = 'mri';
33-
46+
3447
cfg = checkCFG(cfg);
35-
36-
%%% test
37-
38-
% test data
39-
expectedStructure = returnExpectedStructure();
48+
49+
%% create test data
50+
expectedStructure = returnExpectedCfgStructure();
4051
expectedStructure.subject.subjectNb = 1;
4152
expectedStructure.subject.runNb = 1;
42-
53+
4354
expectedStructure.dir.output = outputDir;
44-
55+
4556
expectedStructure.task.name = 'test task';
46-
57+
4758
expectedStructure.testingDevice = 'mri';
48-
59+
4960
expectedStructure.mri.repetitionTime = 1.56;
50-
61+
5162
expectedStructure.fileName.task = 'testTask';
52-
63+
5364
expectedStructure.bids.mri.RepetitionTime = 1.56;
5465
expectedStructure.bids.mri.TaskName = 'test Task';
55-
66+
5667
expectedStructure.bids.meg.TaskName = 'test Task';
57-
68+
5869
expectedStructure.bids.datasetDescription.Name = 'dummy';
5970
expectedStructure.bids.datasetDescription.BIDSVersion = '1.0.0';
6071
expectedStructure.bids.datasetDescription.Authors = {'Jane Doe', 'John Doe'};
61-
72+
6273
expectedStructure = orderfields(expectedStructure);
63-
64-
testSubFields(expectedStructure, cfg);
65-
66-
fprintf('\n');
67-
68-
end
69-
70-
function expectedStructure = returnExpectedStructure()
71-
72-
expectedStructure.subject.subjectGrp = '';
73-
expectedStructure.subject.sessionNb = 1;
74-
expectedStructure.subject.askGrpSess = [true true];
75-
76-
expectedStructure.verbose = 0;
77-
78-
expectedStructure.fileName.task = '';
79-
expectedStructure.fileName.zeroPadding = 3;
80-
expectedStructure.fileName.dateFormat = 'yyyymmddHHMM';
81-
82-
expectedStructure.eyeTracker.do = false;
83-
84-
expectedStructure.mri.contrastEnhancement = [];
85-
expectedStructure.mri.phaseEncodingDirection = [];
86-
expectedStructure.mri.reconstruction = [];
87-
expectedStructure.mri.echo = [];
88-
expectedStructure.mri.acquisition = [];
89-
expectedStructure.mri.repetitionTime = [];
90-
91-
expectedStructure.bids.mri.RepetitionTime = [];
92-
expectedStructure.bids.mri.SliceTiming = '';
93-
expectedStructure.bids.mri.TaskName = '';
94-
expectedStructure.bids.mri.Instructions = '';
95-
expectedStructure.bids.mri.TaskDescription = '';
96-
97-
expectedStructure.bids.meg.TaskName = '';
98-
expectedStructure.bids.meg.SamplingFrequency = [];
99-
expectedStructure.bids.meg.PowerLineFrequency = [];
100-
expectedStructure.bids.meg.DewarPosition = [];
101-
expectedStructure.bids.meg.SoftwareFilters = [];
102-
expectedStructure.bids.meg.DigitizedLandmarks = [];
103-
expectedStructure.bids.meg.DigitizedHeadPoints = [];
104-
105-
expectedStructure.bids.datasetDescription.Name = '';
106-
expectedStructure.bids.datasetDescription.BIDSVersion = '';
107-
expectedStructure.bids.datasetDescription.License = '';
108-
expectedStructure.bids.datasetDescription.Authors = {''};
109-
expectedStructure.bids.datasetDescription.Acknowledgements = '';
110-
expectedStructure.bids.datasetDescription.HowToAcknowledge = '';
111-
expectedStructure.bids.datasetDescription.Funding = {''};
112-
expectedStructure.bids.datasetDescription.ReferencesAndLinks = {''};
113-
expectedStructure.bids.datasetDescription.DatasetDOI = '';
114-
115-
expectedStructure = orderfields(expectedStructure);
116-
74+
75+
%% test
76+
checkSubFields(expectedStructure, cfg);
77+
11778
end
11879

119-
function testSubFields(expectedStructure, cfg)
120-
% check that that the structures match
121-
% if it fails it check from which subfield the error comes from
122-
123-
try
124-
125-
assert(isequal(expectedStructure, cfg));
126-
127-
catch ME
128-
129-
if isstruct(expectedStructure)
130-
131-
names = fieldnames(expectedStructure);
13280

133-
for i = 1:numel(names)
13481

135-
disp(names{i});
136-
testSubFields(expectedStructure.(names{i}), cfg.(names{i}));
137-
138-
end
139-
140-
end
141-
142-
expectedStructure;
143-
cfg;
144-
145-
rethrow(ME);
146-
end
147-
end

0 commit comments

Comments
 (0)