Skip to content

Commit 5e35455

Browse files
committed
refactor and add more tests
1 parent a0ccc0a commit 5e35455

File tree

4 files changed

+95
-55
lines changed

4 files changed

+95
-55
lines changed

src/subfun/askUserCli.m

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
function responses = askUserCli(questions, responses)
2+
% response = askUserCli(questions)
3+
%
4+
% command line interface to ask questions to user
5+
%
6+
7+
for iQuestion = 1:size(questions.questionsToAsk, 1)
8+
9+
if ~isempty(questions.questionsToAsk{iQuestion,1})
10+
11+
thisResponse = ...
12+
input(['\n' questions.questionsToAsk{iQuestion,1}], 's'); %#ok<*AGROW>
13+
14+
if questions.questionsToAsk{iQuestion,2}
15+
thisResponse = str2double(thisResponse);
16+
thisResponse = checkInput(thisResponse, questions);
17+
end
18+
19+
responses{iQuestion, 1} = thisResponse;
20+
21+
end
22+
23+
end
24+
25+
end
26+
27+
function input2check = checkInput(input2check, questions)
28+
% this function checks the input to makes sure the user enters a positive integer
29+
30+
while ~isPositiveInteger(input2check)
31+
input2check = str2double(input(questions.mustBePositiveInteger, 's'));
32+
end
33+
34+
end

src/subfun/setDefaultResponses.m

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
function [cfg, responses] = setDefaultResponses(cfg)
2+
3+
if nargin < 1
4+
cfg = struct('debug', []);
5+
end
6+
7+
if isempty(cfg.debug)
8+
cfg.debug.do = false;
9+
end
10+
11+
responses{1,1} = ''; % subjectGrp
12+
responses{2,1} = []; % subjectNb
13+
responses{3,1} = 1; % runNb
14+
responses{4,1} = []; % sessionNb
15+
16+
if cfg.debug.do
17+
18+
responses{1,1} = 'ctrl';
19+
responses{2,1} = 666;
20+
responses{3,1} = 666;
21+
responses{4,1} = 666;
22+
23+
end
24+
25+
end

src/userInputs.m

Lines changed: 4 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -14,29 +14,13 @@
1414
cfg = struct('debug', []);
1515
end
1616

17-
if isempty(cfg.debug)
18-
cfg.debug.do = false;
19-
end
17+
[cfg, responses] = setDefaultResponses(cfg);
2018

21-
responses{1,1} = ''; % subjectGrp
22-
responses{2,1} = []; % subjectNb
23-
responses{3,1} = 1; % runNb
24-
responses{4,1} = []; % sessionNb
25-
26-
% When in debug more this function returns some dummy values
27-
if cfg.debug.do
28-
29-
responses{1,1} = 'ctrl';
30-
responses{2,1} = 666;
31-
responses{3,1} = 666;
32-
responses{4,1} = 666;
19+
if ~cfg.debug.do
3320

34-
% Otherwise it prompts the user for some information
35-
else
36-
3721
questions = createQuestionList(cfg);
3822

39-
responses = askUserCli(questions);
23+
responses = askUserCli(questions, responses);
4024

4125
end
4226

@@ -45,39 +29,4 @@
4529
cfg.subject.sessionNb = responses{3,1};
4630
cfg.subject.runNb = responses{4,1};
4731

48-
end
49-
50-
51-
function responses = askUserCli(questions)
52-
% response = askUserCli(questions)
53-
%
54-
% command line interface to ask questions to user
55-
%
56-
57-
for iQuestion = 1:size(questions.questionsToAsk, 1)
58-
59-
if ~isempty(questions.questionsToAsk{iQuestion,1})
60-
61-
responses{iQuestion, 1} = ...
62-
input(questions.questionsToAsk{iQuestion,1}, 's'); %#ok<*AGROW>
63-
64-
if questions.questionsToAsk{iQuestion,2}
65-
responses{iQuestion, 1} = str2double(responses);
66-
responses{iQuestion, 1} = checkInput(responses, questions);
67-
end
68-
69-
end
70-
71-
end
72-
73-
end
74-
75-
76-
function input2check = checkInput(input2check, questions)
77-
% this function checks the input to makes sure the user enters a positive integer
78-
79-
while ~isPositiveInteger(input2check)
80-
input2check = str2double(input(questions.mustBePositiveInteger, 's'));
81-
end
82-
83-
end
32+
end

tests/test_setDefaultResponses.m

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
function test_suite = test_setDefaultResponses %#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
8+
9+
function test_setDefaultResponsesBasic()
10+
11+
%%
12+
[~, responses] = setDefaultResponses(); %#ok<*NODEF>
13+
14+
expectedCell{1,1} = '';
15+
expectedCell{2,1} = [];
16+
expectedCell{3,1} = 1;
17+
expectedCell{4,1} = [];
18+
19+
assertEqual(expectedCell, responses)
20+
21+
%%
22+
cfg.debug.do = true;
23+
[~, responses] = setDefaultResponses(cfg);
24+
25+
expectedCell{1,1} = 'ctrl';
26+
expectedCell{2,1} = 666;
27+
expectedCell{3,1} = 666;
28+
expectedCell{4,1} = 666;
29+
30+
assertEqual(expectedCell, responses)
31+
32+
end

0 commit comments

Comments
 (0)