root/OptimizingMATLABCode/Truss/Tester.m @ 11
10 | anderm8 | function Results = Tester
|
|
% Truss Files Tests
|
|||
% Copyright 2015 The MathWorks, Inc.
|
|||
% Make sure we're on R2013b or newer
|
|||
if verLessThan('matlab','8.2')
|
|||
ME = MException('pct:truss','R2013b or newer required for this demo');
|
|||
throwAsCaller(ME);
|
|||
end
|
|||
% Get local functions and test functions from this
|
|||
lfs = localfunctions();
|
|||
tests = functiontests(lfs);
|
|||
% Run 'em
|
|||
Results = run(tests);
|
|||
end
|
|||
%Test functions
|
|||
function testFilesExist(testCase)
|
|||
% Check that all expected files exist
|
|||
% Add files to test to this list. Use *.m extension.
|
|||
reqFiles = {'localStiffness.m'; ...
|
|||
'batchODE.m'; ...
|
|||
'clusterBatch.m'; ...
|
|||
'paramSweep.m'; ...
|
|||
'paramSweepBreak.m'; ...
|
|||
'paramSweepBreakParfeval.m'; ...
|
|||
'paramSweepParallel.m'; ...
|
|||
'plotTruss.m'; ...
|
|||
'trussCantilever.m'; ...
|
|||
'visualizeParamSweep.m'};
|
|||
% Actual Files
|
|||
pwdFiles = dir([pwd,filesep,'*.m']);
|
|||
pwdFiles = {pwdFiles.name};
|
|||
% Membership
|
|||
idx = ismember(reqFiles,pwdFiles);
|
|||
% Import constraints
|
|||
import matlab.unittest.constraints.IsTrue
|
|||
import matlab.unittest.constraints.EveryElementOf
|
|||
% Qualify
|
|||
verifyThat(testCase,EveryElementOf(idx),IsTrue,...
|
|||
sprintf('%s missing\n',reqFiles{~idx}))
|
|||
end
|
|||
function testParpoolWorking(testCase)
|
|||
% Build a pool
|
|||
p = gcp('nocreate');
|
|||
if isempty(p)
|
|||
p = gcp;
|
|||
alreadyOpen = false;
|
|||
else
|
|||
alreadyOpen = true;
|
|||
end
|
|||
% Test that it's connected and on local profile
|
|||
verifyTrue(testCase,p.Connected,'Pool is not connected');
|
|||
assumeMatches(testCase,p.Cluster.Profile,'local','Local pool is not current\n');
|
|||
% If we opened the pool, close it
|
|||
if ~alreadyOpen
|
|||
delete(p);
|
|||
end
|
|||
end
|
|||
function testLoopIsFor(testCase)
|
|||
% Test that paramSweep has been set back to use a "for" loop since last run
|
|||
% Open file and make sure the loop is a "for"
|
|||
fid = fopen('paramSweep.m','r');
|
|||
% Over-preallocate
|
|||
Cfile = cell(200,1);
|
|||
% Read each row into a string (see fgetl doc)
|
|||
cnt = 1;
|
|||
tline = fgetl(fid);
|
|||
while ischar(tline)
|
|||
Cfile{cnt} = tline;
|
|||
% Increment and read next line
|
|||
cnt = cnt + 1;
|
|||
tline = fgetl(fid);
|
|||
end
|
|||
% Lop off extra lines
|
|||
Cfile = Cfile(~cellfun(@isempty,Cfile));
|
|||
% Clean up
|
|||
fclose(fid);
|
|||
% Import constraints
|
|||
import matlab.unittest.constraints.AnyCellOf
|
|||
import matlab.unittest.constraints.EveryCellOf
|
|||
import matlab.unittest.constraints.Matches
|
|||
% Qualify for/parfor
|
|||
% Has a "for ii" and not a "parfor ii"
|
|||
assertThat(testCase,AnyCellOf(Cfile),Matches('^for'),'"for" does not start a line');
|
|||
assertThat(testCase,EveryCellOf(Cfile),~Matches('^parfor'),'"parfor" starts a line');
|
|||
end
|
|||
% Turn off code analyzer warning for unused functions since localfunctions
|
|||
% captures this.
|
|||
%#ok<*DEFNU>
|