-
Notifications
You must be signed in to change notification settings - Fork 59
Testing
ISETCam's automated tests help contributors check a focused change before sharing it. They are developer tools, not a prerequisite for installing or using ISETCam. Start MATLAB with ISETCam on the path, use a clean session for tutorial or example tests, and begin with the smallest relevant check.
| Change | First check | Broader check |
|---|---|---|
| A function or object component | The nearby _tests_ runner, such as sceneUnitTest
|
ieUnitTest |
A tutorial in tutorials/
|
ieTutorialTest('selection', 't_name') |
ieTutorialTest |
An example in examples/
|
ieExampleTest('selection', 's_name') |
ieExampleTest |
ieUnitTest discovers and runs the function-based MATLAB tests in ISETCam's
colocated _tests_ directories. Area runners, including sceneUnitTest,
sensorUnitTest, opticsUnitTest, and displayUnitTest, are useful while
developing because they limit the check to one component.
% Run the focused tests for a scene change.
results = sceneUnitTest;
% Run all ISETCam unit tests before a substantial shared change.
results = ieUnitTest;The unit-test runner
returns a MATLAB TestResult array and prints a summary.
Tutorials (t_*.m) and examples (s_*.m) are executable teaching and
workflow material. Their runners reset ISETCam state between scripts, so a
script must not depend on objects or variables left by an earlier one.
% Check one tutorial or one example while editing it.
tutorialRun = ieTutorialTest('selection', 't_cameraIntroduction');
exampleRun = ieExampleTest('selection', 's_metricsSPD');
% Run every tutorial or example.
tutorialRun = ieTutorialTest;
exampleRun = ieExampleTest;
% Start at a named tutorial and continue through the path-sorted suite.
tutorialRun = ieTutorialTest('start', 't_cameraIntroduction');'selection' accepts a script stem, filename, path relative to the tutorial
or example directory, or full path. Use 'start' after correcting a failure
in a long suite; it begins a new run rather than resuming an old one.
If a tutorial or example genuinely needs unavailable data or hardware, manual interaction, an optional toolbox, or an impractically long run, place this marker on its own line in the script:
% SkipFileUse it sparingly and document why the script is unsuitable for automated
smoke testing. Scripts that create or refresh repository data should instead
use the data_*.m naming convention; they are not tutorial or example smoke
tests.
All runners print a summary. ieTestReport can also report a unit-test result
or list specific statuses from a tutorial/example run:
ieTestReport(results, 'ieUnitTest');
ieTestReport(tutorialRun, 'List', {'failed', 'skipped'});
ieTestReport(exampleRun, 'List', 'all');Tutorial and example runs save a timestamped checkpoint, progress log, and
planned-file list under ISETCam's local/ directory. If MATLAB closes before
a run returns, pass the checkpoint file or its containing run directory to
ieTestReport to inspect it.
Use ISETCam's built-in runners for ordinary repository development. The separate ISETValidate project is for broader system and regression validation; it is not required for routine ISETCam use or a focused contribution.
For the current operational details, including authoring tests and diagnosing failures, see the source repository's testing workflow and the implementations of tutorial testing, example testing, and test reporting.
ISETcam development is led by Brian Wandell's Vistalab group at Stanford University and supported by contributors from other research institutions and industry.