; docformat = 'rst'
;+
; Results for tests, test cases, and test suites are reported to the test
; runner. The `MGutHTMLRunner` displays the results in the output HTML file.
;
; :Private:
;-
;+
; Report a test suite has begun.
;
; :Params:
; testsuite : in, required, type=string
; name of test suite
;
; :Keywords:
; ntestcases : in, required, type=integer
; number of test suites/cases contained by the test suite
; ntests : in, required, type=integer
; number of tests contained in the hierarchy below this test suite
; level : in, required, type=integer
; level of test suite
;-
pro mguthtmlrunner::reportTestSuiteStart, testsuite, $
ntestcases=ntestcases, $
ntests=ntests, $
level=level
compile_opt strictarr
self->_print, self.lun, $
'
- ' $
+ testsuite $
+ ' test suite starting (' $
+ strtrim(ntestcases, 2) + ' test suite' $
+ (ntestcases eq 1 ? '' : 's') $
+ '/case' $
+ (ntestcases eq 1 ? '' : 's') $
+ ', ' $
+ strtrim(ntests, 2) + ' test' + (ntests eq 1 ? '' : 's') $
+ ')
'
end
;+
; Report the results of a test suite.
;
; :Keywords:
; npass : in, required, type=integer
; number of passing tests contained in the hierarchy below the test
; suite
; nfail : in, required, type=integer
; number of failing tests contained in the hierarchy below the test
; suite
; nskip : in, required, type=integer
; number of skipped tests contained in the hierarchy below the test
; suite
; level : in, required, type=integer
; level of test suite
;-
pro mguthtmlrunner::reportTestSuiteResult, npass=npass, nfail=nfail, $
nskip=nskip, level=level
compile_opt strictarr
format = '(%"Results: %d / %d tests passed, %d skipped
")'
self->_print, self.lun, string(npass, npass + nfail, nskip, format=format)
end
;+
; Report a test case has begun.
;
; :Params:
; testcase : in, required, type=string
; name of test case
;
; :Keywords:
; ntests : in, required, type=integer
; number of tests contained in this test case
; level : in, required, type=integer
; level of test case
;-
pro mguthtmlrunner::reportTestCaseStart, testcase, ntests=ntests, level=level
compile_opt strictarr
self->_print, self.lun, $
'- ' + testcase $
+ ' test case starting (' + strtrim(ntests, 2) $
+ ' test' + (ntests eq 1 ? '' : 's') + ')
'
self->_print, self.lun, ''
end
;+
; Report the results of a test case.
;
; :Keywords:
; npass : in, required, type=integer
; number of passing tests
; nfail : in, required, type=integer
; number of failing tests
; nskip : in, required, type=integer
; number of skipped tests
; level : in, required, type=integer
; level of test case
;-
pro mguthtmlrunner::reportTestCaseResult, npass=npass, nfail=nfail, $
nskip=nskip, level=level
compile_opt strictarr
format = '(%"Results: %d / %d tests passed, %d skipped
")'
self->_print, self.lun, ''
self->_print, self.lun, string(npass, npass + nfail, nskip, format=format)
end
;+
; Report the start of single test.
;
; :Params:
; testname : in, required, type=string
; name of test
;
; :Keywords:
; level : in, required, type=integer
; level of test case
;-
pro mguthtmlrunner::reportTestStart, testname, level=level
compile_opt strictarr
self->_print, self.lun, '' + testname + ': ', format='(A, $)'
end
;+
; Report the result of a single test.
;
; :Params:
; msg : in, required, type=string
; message to display when test fails
;
; :Keywords:
; passed : in, required, type=boolean
; whether the test passed
; time : in, required, type=float
; time for the test to run
; level : in, required, type=integer
; level of test case
; skipped : in, required, type=boolean
; indicates whether the test should be counted in the results
;-
pro mguthtmlrunner::reportTestResult, msg, passed=passed, time=time, $
skipped=skipped, level=level
compile_opt strictarr
result = skipped $
? 'skipped' $
: (keyword_set(passed) ? 'passed' : 'failed')
s = string(result, $
result, $
(passed && ~skipped) ? '': (msg eq '' ? '' : ' "' + msg + '"'), $
time, $
format='(%"%s%s %f seconds")')
self->_print, self.lun, s
end
;+
; Prints a message to a LUN.
;
; :Params:
; lun : in, required, type=long
; logical unit number to print to
; text : in, required, type=string
; text to print
;
; :Keywords:
; _extra : in, optional, type=keywords
; keywords to MG_ANSICODE i.e. RED or GREEN
;-
pro mguthtmlrunner::_print, lun, text, _extra=e
compile_opt strictarr
printf, lun, text, _extra=e
if (lun gt 0L) then flush, lun
end
;+
; Free resources.
;-
pro mguthtmlrunner::cleanup
compile_opt strictarr
self->_print, self.lun, 'Test results from ' + systime() + ''
self->_print, self.lun, '