Skip to content

Commit 8551d47

Browse files
committed
add tests for sub functions
1 parent d0b8c1d commit 8551d47

File tree

4 files changed

+97
-0
lines changed

4 files changed

+97
-0
lines changed

subfun/createTaskName.m

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
function [taskName, taskNameValid] = createTaskName(taskName)
2+
% [taskName, taskNameValid] = createTaskName(taskName)
3+
%
4+
% Name of the task (for resting state use the "rest" prefix). No two tasks
5+
% should have the same name. Task label is derived from this field by
6+
% removing all non alphanumeric ([a-zA-Z0-9]) characters.
7+
8+
% camel case: upper case for first letter for all words but the first one
9+
spaceIdx = regexp(taskName, '[a-zA-Z0-9]*', 'start');
10+
taskName(spaceIdx(2:end)) = upper(taskName(spaceIdx(2:end)));
11+
12+
% remove invalid characters
13+
[unvalidCharacters] = regexp(taskName, '[^a-zA-Z0-9]');
14+
taskNameValid = taskName;
15+
taskNameValid(unvalidCharacters) = [];
16+
17+
end
18+

subfun/transferInfoToBids.m

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
function fieldsToSet = transferInfoToBids(fieldsToSet, cfg)
2+
% transfer any info that might have been provided by the user to the
3+
% relevant field for its reuse for BIDS filenames or JSON later
4+
5+
if isfield(cfg, 'task') && isfield(cfg.task, 'name')
6+
[taskName, taskNameValid] = createTaskName(cfg.task.name);
7+
fieldsToSet.fileName.task = taskNameValid;
8+
fieldsToSet.bids.meg.TaskName = taskName;
9+
fieldsToSet.bids.mri.TaskName = taskName;
10+
end
11+
12+
if isfield(cfg, 'mri') && isfield(cfg.mri, 'repetitionTime')
13+
fieldsToSet.bids.mri.RepetitionTime = cfg.mri.repetitionTime;
14+
end
15+
16+
end

tests/test_createTaskName.m

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
function test_createTaskName()
2+
%
3+
4+
taskName = '&|@#-_(§!{})[]ù%£+/=:;.?,\<> visual task';
5+
6+
[taskName, taskNameValid] = createTaskName(taskName)
7+
8+
[unvalidCharacters] = regexp(taskNameValid, '[^a-zA-Z0-9]');
9+
10+
assert(isempty(unvalidCharacters));
11+
12+
13+
taskName = ' 09 visual task';
14+
15+
[taskName, taskNameValid] = createTaskName(taskName)
16+
17+
[unvalidCharacters] = regexp(taskNameValid, '[^a-zA-Z0-9]');
18+
19+
assert(isempty(unvalidCharacters));
20+
21+
22+
taskName = 'foo bar';
23+
[taskName, taskNameValid] = createTaskName(taskName)
24+
assert(isequal(taskName, 'foo Bar'))
25+
assert(isequal(taskNameValid, 'fooBar'))
26+
27+
end
28+

tests/test_transferInfoToBids.m

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
function test_transferInfoToBids()
2+
3+
%%
4+
cfg = struct();
5+
fieldsToSet = struct();
6+
cfg = transferInfoToBids(fieldsToSet, cfg);
7+
8+
expectedStruct = struct();
9+
10+
assert(isequal(expectedStruct, fieldsToSet))
11+
12+
%%
13+
cfg.task.name = 'foo bar';
14+
15+
fieldsToSet = transferInfoToBids(fieldsToSet, cfg);
16+
17+
expectedStruct.fileName.task = 'fooBar';
18+
expectedStruct.bids.meg.TaskName = 'foo Bar';
19+
expectedStruct.bids.mri.TaskName = 'foo Bar';
20+
21+
assert(isequal(expectedStruct, fieldsToSet))
22+
23+
%%
24+
clear cfg fieldsToSet expectedStruct
25+
26+
cfg.mri.repetitionTime = 1.56;
27+
28+
fieldsToSet = struct();
29+
fieldsToSet = transferInfoToBids(fieldsToSet, cfg);
30+
31+
expectedStruct.bids.mri.RepetitionTime = 1.56;
32+
33+
assert(isequal(expectedStruct, fieldsToSet))
34+
35+
end

0 commit comments

Comments
 (0)